matheuscervantes55 commited on
Commit
b0e607a
1 Parent(s): 2c0fd5f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -0
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import AutoModelForCausalLM, AutoTokenizer
2
+ import torch
3
+ tokenizer = AutoTokenizer.from_pretrained("microsoft/DialoGPT-medium")
4
+ model = AutoModelForCausalLM.from_pretrained("microsoft/DialoGPT-medium")
5
+
6
+ import pandas as pd
7
+ df_status_pedidos = pd.DataFrame({
8
+ "numero_pedido": [12345, 67890, 54321],
9
+ "status": ["Em processamento", "Enviado", "Entregue"]
10
+ })
11
+
12
+ def verificar_status_pedido(numero_pedido):
13
+ try:
14
+ numero_pedido = int(numero_pedido)
15
+
16
+ print(f"Procurando o status para o pedido número: {numero_pedido}")
17
+ if numero_pedido in df_status_pedidos["numero_pedido"].values:
18
+ status = df_status_pedidos[df_status_pedidos["numero_pedido"] == numero_pedido]["status"].iloc[0]
19
+ return f"O status do pedido {numero_pedido} é: {status}"
20
+ else:
21
+ return "Número do pedido não encontrado. Verifique e tente novamente."
22
+
23
+ except ValueError:
24
+ return "Número do pedido inválido. Insira um valor numérico."
25
+
26
+ palavras_chave_status = ["order", "order status", "status of my order", "check my order", "track my order", "order update"]
27
+
28
+ esperando_numero_pedido = False
29
+
30
+ def chatbot_response(usuario):
31
+ global esperando_numero_pedido
32
+
33
+ if usuario.lower() in ["quit", "exit", "bye", "stop"]:
34
+ return "Goodbye!"
35
+
36
+ if esperando_numero_pedido:
37
+ resposta = verificar_status_pedido(usuario)
38
+ esperando_numero_pedido = False
39
+ return resposta
40
+
41
+ if any(keyword in usuario.lower() for keyword in palavras_chave_status):
42
+ esperando_numero_pedido = True
43
+ return "Por favor, forneça o número do pedido."
44
+
45
+ historico_chat = None
46
+ novo_usuario_input_ids = tokenizer.encode(usuario + tokenizer.eos_token, return_tensors='pt')
47
+ if historico_chat is not None:
48
+ bot_input_ids = torch.cat([historico_chat, novo_usuario_input_ids], dim=-1)
49
+ else:
50
+ bot_input_ids = novo_usuario_input_ids
51
+
52
+ historico_chat = model.generate(
53
+ bot_input_ids,
54
+ max_length=1000,
55
+ pad_token_id=tokenizer.eos_token_id
56
+ )
57
+ resposta = tokenizer.decode(historico_chat[:, bot_input_ids.shape[-1]:][0], skip_special_tokens=True)
58
+
59
+ return resposta
60
+
61
+ app = gr.Interface(
62
+ fn=chatbot_response,
63
+ inputs="text",
64
+ outputs="text",
65
+ title="Chatbot com Verificação de Status",
66
+ description="Digite sua mensagem para conversar com o bot. Pergunte sobre o status do pedido ou faça outra pergunta."
67
+ )
68
+
69
+ if __name__ == "__main__":
70
+ app.launch()