chatboot / app.py
matheuscervantes55's picture
Update app.py
68a889e verified
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
import pandas as pd
df_status_pedidos = pd.DataFrame({
"numero_pedido": [12345, 67890, 54321],
"status": ["Em processamento", "Enviado", "Entregue"]
})
def verificar_status_pedido(numero_pedido):
try:
numero_pedido = int(numero_pedido)
print(f"Procurando o status para o pedido número: {numero_pedido}")
if numero_pedido in df_status_pedidos["numero_pedido"].values:
status = df_status_pedidos[df_status_pedidos["numero_pedido"] == numero_pedido]["status"].iloc[0]
return f"O status do pedido {numero_pedido} é: {status}"
else:
return "Número do pedido não encontrado. Verifique e tente novamente."
except ValueError:
return "Número do pedido inválido. Insira um valor numérico."
palavras_chave_status = ["order", "order status", "status of my order", "check my order", "track my order", "order update"]
esperando_numero_pedido = False
def chatbot_response(usuario):
global esperando_numero_pedido
if usuario.lower() in ["quit", "exit", "bye", "stop"]:
return "Goodbye!"
if esperando_numero_pedido:
resposta = verificar_status_pedido(usuario)
esperando_numero_pedido = False
return resposta
if any(keyword in usuario.lower() for keyword in palavras_chave_status):
esperando_numero_pedido = True
return "Por favor, forneça o número do pedido."
historico_chat = None
novo_usuario_input_ids = tokenizer.encode(usuario + tokenizer.eos_token, return_tensors='pt')
if historico_chat is not None:
bot_input_ids = torch.cat([historico_chat, novo_usuario_input_ids], dim=-1)
else:
bot_input_ids = novo_usuario_input_ids
historico_chat = model.generate(
bot_input_ids,
max_length=1000,
pad_token_id=tokenizer.eos_token_id
)
resposta = tokenizer.decode(historico_chat[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)
return resposta
import gradio as gr
app = gr.Interface(
fn=chatbot_response,
inputs="text",
outputs="text",
title="Chatbot com Verificação de Status",
description="Digite sua mensagem para conversar com o bot. Pergunte sobre o status do pedido ou faça outra pergunta."
)
if __name__ == "__main__":
app.launch()