Skip to content

Commit

Permalink
Criado usando o Colab
Browse files Browse the repository at this point in the history
  • Loading branch information
PatriciaReghine committed May 11, 2024
1 parent 614b6a0 commit 6740bf3
Showing 1 changed file with 224 additions and 0 deletions.
224 changes: 224 additions & 0 deletions cardápio_para_as_empresas.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"toc_visible": true,
"authorship_tag": "ABX9TyNopESVnnX8FTimNlbe2BoV",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/PatriciaReghine/Card-pio-IA/blob/main/card%C3%A1pio_para_as_empresas.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "3bXxnAg6P6xR"
},
"outputs": [],
"source": [
"!pip install -U -q google-generativeai"
]
},
{
"cell_type": "code",
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import google.generativeai as genai"
],
"metadata": {
"id": "9r6WOhveQxjO"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from google.colab import userdata\n",
"api_key = userdata.get('APIKEY')"
],
"metadata": {
"id": "c7u2TNgOWsMO"
},
"execution_count": 10,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# --- Parte 1: Nessa parte sera gerado Embeddings para o Cardápio ---\n",
"\n",
"model_embedding = \"models/embedding-001\"\n",
"\n",
"# Dados do cardápio\n",
"cardapio = {\n",
" \"Dia da semana\": [\"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\",\n",
" \"Segunda: opção 2\", \"Terça: opção 2\", \"Quarta: opção 2\",\n",
" \"Quinta: opção 2\", \"Sexta: opção 2\", \"Opção disponível todos os dias\"],\n",
" \"Proteína\": [\"Carne de boi\", \"Frango\", \"Carne de Boi\", \"Frango\", \"Peixe\",\n",
" \"Frango\", \"Carne de porco\", \"Frango\", \"Carne de Boi\", \"Carne de Boi\", \"Ovo\"],\n",
"}\n",
"df_cardapio = pd.DataFrame(cardapio)\n",
"\n",
"# Gerar embeddings para cada item do cardápio\n",
"df_cardapio[\"Embeddings\"] = df_cardapio.apply(\n",
" lambda row: genai.embed_content(\n",
" model=model_embedding,\n",
" content=row[\"Proteína\"],\n",
" task_type=\"RETRIEVAL_DOCUMENT\"\n",
" )[\"embedding\"], axis=1\n",
")\n"
],
"metadata": {
"id": "14Cq1Ea4RBQK"
},
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# --- Parte 2: Aqui serão utlizadas funções para registro de pedidos e recomendações ---\n",
"\n",
"LIMITE_PEDIDOS = 100\n",
"total_pedidos = 0\n",
"pedidos_proteina = {}\n",
"\n",
"def exibir_cardapio():\n",
" print(\"Cardápio da Semana:\")\n",
" print(df_cardapio[[\"Dia da semana\", \"Proteína\"]])\n",
"\n",
"def registrar_pedido():\n",
" global total_pedidos\n",
" if total_pedidos >= LIMITE_PEDIDOS:\n",
" print(\"Limite de pedidos atingido!\")\n",
" return\n",
"\n",
" exibir_cardapio()\n",
"\n",
" while True:\n",
" opcao = input(\"Digite o número da sua opção (correspondente à linha da tabela): \")\n",
" dia_semana = input(\"Digite o dia da semana: \")\n",
" try:\n",
" opcao = int(opcao)\n",
" proteina = df_cardapio.loc[opcao, \"Proteína\"]\n",
"\n",
" # Registrar o pedido\n",
" if dia_semana not in pedidos_proteina:\n",
" pedidos_proteina[dia_semana] = {}\n",
" if proteina not in pedidos_proteina[dia_semana]:\n",
" pedidos_proteina[dia_semana][proteina] = 0\n",
" pedidos_proteina[dia_semana][proteina] += 1\n",
" total_pedidos += 1\n",
" print(f\"Pedido registrado: {proteina} no {dia_semana}\")\n",
"\n",
" # Recomendar um prato similar\n",
" recomendacao = recomendar_prato(proteina)\n",
" if recomendacao:\n",
" print(f\"Você também pode gostar de: {recomendacao}\")\n",
"\n",
" break\n",
" except (ValueError, KeyError):\n",
" print(\"Opção ou dia da semana inválido. Tente novamente.\")\n",
"\n",
"def recomendar_prato(proteina_escolhida):\n",
" \"\"\"Recomenda um prato similar à proteína escolhida.\"\"\"\n",
"\n",
" embedding_escolhida = df_cardapio[df_cardapio[\"Proteína\"] == proteina_escolhida][\"Embeddings\"].iloc[0]\n",
"\n",
" similaridades = df_cardapio[\"Embeddings\"].apply(\n",
" lambda embedding: np.dot(embedding, embedding_escolhida)\n",
" )\n",
"\n",
" # Encontrar o prato mais similar\n",
" df_similar = df_cardapio.copy()\n",
" df_similar[\"Similaridade\"] = similaridades\n",
" df_similar = df_similar[df_similar[\"Proteína\"] != proteina_escolhida]\n",
" prato_similar = df_similar.sort_values(by=\"Similaridade\", ascending=False).iloc[0][\"Proteína\"]\n",
"\n",
" return prato_similar\n"
],
"metadata": {
"id": "QEKs0mvbRND4"
},
"execution_count": 12,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# --- Parte 3: Loop Principal ---\n",
"\n",
"while True:\n",
" comando = input(\"Digite um comando ('registrar', 'pedidos', 'sair'): \")\n",
" if comando == 'registrar':\n",
" registrar_pedido()\n",
" elif comando == 'pedidos':\n",
" print(\"\\nPedidos de Proteína:\")\n",
" for dia, proteinas in pedidos_proteina.items():\n",
" for proteina, quantidade in proteinas.items():\n",
" if quantidade > 0:\n",
" print(f\"{dia}: {quantidade} pedido(s) de {proteina}\")\n",
" elif comando == 'sair':\n",
" break\n",
" else:\n",
" print(\"Comando inválido.\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "XhfHgrbVRg7W",
"outputId": "1968a017-abbb-49f4-c0d7-cdfbd17a94d6"
},
"execution_count": 14,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Digite um comando ('registrar', 'pedidos', 'sair'): registrar\n",
"Cardápio da Semana:\n",
" Dia da semana Proteína\n",
"0 Segunda Carne de boi\n",
"1 Terça Frango\n",
"2 Quarta Carne de Boi\n",
"3 Quinta Frango\n",
"4 Sexta Peixe\n",
"5 Segunda: opção 2 Frango\n",
"6 Terça: opção 2 Carne de porco\n",
"7 Quarta: opção 2 Frango\n",
"8 Quinta: opção 2 Carne de Boi\n",
"9 Sexta: opção 2 Carne de Boi\n",
"10 Opção disponível todos os dias Ovo\n",
"Digite o número da sua opção (correspondente à linha da tabela): 9\n",
"Digite o dia da semana: Sexta: opção 2\n",
"Pedido registrado: Carne de Boi no Sexta: opção 2\n",
"Você também pode gostar de: Carne de boi\n",
"Digite um comando ('registrar', 'pedidos', 'sair'): sair\n"
]
}
]
}
]
}

0 comments on commit 6740bf3

Please sign in to comment.