""" 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)