EddyGiusepe's picture
Bot para Delivery de Lanches
488762c
Raw
History Blame Contribute Delete
3.03 kB
"""
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)