Spaces:
Sleeping
Sleeping
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() |