Spaces:
No application file
No application file
| """ | |
| Data Scientist.: Dr.Eddy Giusepe Chirinos Isidro | |
| Aqui usamos 'panel' --> https://panel.holoviz.org/ | |
| Este é um exemplo simples de ChatBot para pedir comida rápida (Delivery). | |
| """ | |
| import panel as pn | |
| #Substitua sua chave de API OpenAI: | |
| import openai | |
| import os | |
| from dotenv import load_dotenv, find_dotenv | |
| _ = load_dotenv(find_dotenv()) # read local .env file | |
| openai.api_key = os.environ['OPENAI_API_KEY'] | |
| context = [ {'role':'system', 'content':""" | |
| Atuando como um OrderBot, você trabalha coletando pedidos em um restaurante fast food somente delivery chamado | |
| MK Delivery. \ | |
| Primeiro recebe o cliente, de uma forma bem amigável, depois recolhe o pedido. \ | |
| Você espera para retirar todo o pedido, bebidas incluídas \ | |
| em seguida, resuma-o e verifique pela última \ | |
| vez se tudo estiver ok ou se o cliente quiser adicionar mais alguma coisa. \ | |
| Finalmente você recebe o pagamento.\ | |
| Certifique-se de esclarecer todas as opções, extras e tamanhos para \ | |
| identificar exclusivamente o item no menu.\ | |
| Você responde em um estilo curto e muito amigável. \ | |
| O cardápio inclui: \ | |
| hambúrguer 12,95, 10,00, 7,00 \ | |
| sanduíche 11,95, 9,75, 6,75\ | |
| batatas fritas 4,50, 3,50\ | |
| salada 7,25\ | |
| Coberturas: \ | |
| queijo extra 2,00, \ | |
| cogumelos 1,50\ | |
| linguiça martra 3,00 \ | |
| bacon canadense 3,50 \ | |
| molho romesco 1,50\ | |
| pimentão 1,00\ | |
| Bebidas: \ | |
| coca-cola 3,00, 2,00, 1,00 \ | |
| sprite 3,00, 2,00, 1,00 \ | |
| pisco do Perú 8,00 \ | |
| """} ] | |
| def continue_conversation(messages, temperature=0): | |
| response = openai.ChatCompletion.create(model="gpt-3.5-turbo", | |
| messages=messages, | |
| temperature=temperature, | |
| ) | |
| #print(str(response.choices[0].message["content"])) | |
| return response.choices[0].message["content"] | |
| def add_prompts_conversation(_): | |
| # Obtenha o valor introduzido pelo usuário: | |
| prompt = client_prompt.value_input | |
| client_prompt.value = '' | |
| # Anexe ao contexto o prompt do usuário: | |
| context.append({'role':'user', 'content':f"{prompt}"}) | |
| # Obtenha a resposta: | |
| response = continue_conversation(context) | |
| # Adicione a resposta ao contexto: | |
| context.append({'role':'assistant', 'content':f"{response}"}) | |
| # Atualize os painéis para mostrar a conversa: | |
| panels.append( | |
| pn.Row('Usuário:', pn.pane.Markdown(prompt, width=600))) | |
| panels.append( | |
| pn.Row('Assistente Virtual:', pn.pane.Markdown(response, width=600, styles={'background-color': '#F6F6F6'}))) | |
| return pn.Column(*panels) | |
| # Criamos o panel: | |
| pn.extension() | |
| panels = [] | |
| client_prompt = pn.widgets.TextInput(value="Olá!", placeholder='Insira o texto aqui . . .') | |
| button_conversation = pn.widgets.Button(name="Enviar") | |
| interactive_conversation = pn.bind(add_prompts_conversation, button_conversation) | |
| dashboard = pn.Column( | |
| client_prompt, | |
| pn.Row(button_conversation), | |
| pn.panel(interactive_conversation, loading_indicator=True, height=300), | |
| ) | |
| dashboard.servable() | |
| pn.serve(dashboard) | |