1
resposta

[Projeto] construindo o chatbot para consulta de pedidos

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}")
1 resposta

Olá Moacir, tudo bem?

O seu código para a construção do chatbot de consulta de pedidos está muito bem estruturado. E atende perfeitamente ao objetivo da atividade.

Bons estudos!

Sucesso

Imagem da comunidade