1️ Importar modelo, tokenizador e tocha
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import pandas as pd
import re
Carregando modelo e tokenizador
tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
2️ Criar DataFrame dos pedidos
dados_pedidos = {
"numero_pedido": ["12345", "67890", "11121", "22232"],
"status": ["Shipped", "Processing", "Delivered", "Cancelled"]
}
df_status_pedidos = pd.DataFrame(dados_pedidos)
3️ Criar funçãoverificar_status_pedido
def verificar_status_pedido(numero_pedido):
try:
status = df_status_pedidos.loc[
df_status_pedidos['numero_pedido'] == numero_pedido,
'status'
].values[0]
return f"The status of your order {numero_pedido} is: {status}"
except IndexError:
return "Order number not found. Please check and try again."
4️ Definir palavras-chave
palavras_chave_status = [
"order",
"order status",
"track my order",
"check my order",
"order update",
"status of my order"
]
5️ Código para entrada do usuário e geração de resposta
ids_historico_chat = None
while True:
input_usuario = input("You: ")
# Condição de saída
if input_usuario.lower() in ["exit", "quit", "stop"]:
print("Bot: Goodbye!")
break
# Verifica se é consulta de pedido
if any(keyword in input_usuario.lower() for keyword in palavras_chave_status):
# Tenta extrair número automaticamente
numeros = re.findall(r'\d+', input_usuario)
if numeros:
numero_pedido = numeros[0]
resposta = verificar_status_pedido(numero_pedido)
else:
numero_pedido = input("Please provide your order number: ")
resposta = verificar_status_pedido(numero_pedido)
else:
# Conversa normal usando o modelo
novo_usuario_input_ids = tokenizer.encode(
input_usuario + tokenizer.eos_token,
return_tensors='pt'
)
if ids_historico_chat is not None:
bot_input_ids = torch.cat([ids_historico_chat, novo_usuario_input_ids], dim=-1)
else:
bot_input_ids = novo_usuario_input_ids
ids_historico_chat = model.generate(
bot_input_ids,
max_length=500,
pad_token_id=tokenizer.eos_token_id,
do_sample=True,
top_k=50,
top_p=0.95,
temperature=0.7
)
resposta = tokenizer.decode(
ids_historico_chat[:, bot_input_ids.shape[-1]:][0],
skip_special_tokens=True
)
print(f"Bot: {resposta}")