DanielDJ1987 commited on
Commit
a6d3510
·
verified ·
1 Parent(s): 1ee4e42

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +108 -0
app.py ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import requests
3
+ import dotenv
4
+ import streamlit as st
5
+ from transformers import AutoTokenizer
6
+
7
+ dotenv.load_dotenv()
8
+ token = os.environ['TOKEN_HF']
9
+ headers = {'Authorization': f'Bearer {token}'}
10
+
11
+ modelos = {
12
+ 'meta-llama/Meta-Llama-3.1-8B-Instruct': '<|end_header_id|>\n',
13
+ 'mistralai/Mixtral-8x7B-Instruct-v0.1': '[/INST]'
14
+ }
15
+
16
+ ofertas = ['Atualização', 'Quitação', 'Renegociação']
17
+ opcoes_classificacao = ["Segunda via de boleto", "Conhecer as ofertas", "Renegociação", "Atualização", "Quitação"]
18
+
19
+
20
+ modelo = st.selectbox('Selecione um modelo:', options=modelos)
21
+ token_modelo = modelos[modelo]
22
+
23
+ if ('modelo_atual' not in st.session_state or st.session_state['modelo_atual'] != modelo):
24
+ st.session_state['modelo_atual'] = modelo
25
+ st.session_state['mensagens'] = [ {"role": "system", "content": "Você é um atendente de central de atendimento de negociação de dívidas. "
26
+ "Você é empático e gostaria sempre de entender a situação do cliente, como o que o levou a ficar em dívida. Seja sucinto nas suas respostas."},]
27
+
28
+ nome_modelo = st.session_state['modelo_atual']
29
+ tokenizer = AutoTokenizer.from_pretrained(nome_modelo, token=token)
30
+ url = f'https://api-inference.huggingface.co/models/{nome_modelo}'
31
+ url_classificacao = f'https://api-inference.huggingface.co/models/facebook/bart-large-mnli'
32
+ mensagens = st.session_state['mensagens']
33
+
34
+ area_chat = st.empty()
35
+ pergunta_usuario = st.chat_input('Faça sua pergunta aqui: ')
36
+ if pergunta_usuario:
37
+ payload = {
38
+ "inputs": pergunta_usuario,
39
+ "parameters": {
40
+ "candidate_labels": opcoes_classificacao
41
+ }
42
+ }
43
+
44
+ response = requests.post(url_classificacao, headers=headers, json=payload)
45
+ # Verifique a resposta
46
+ if response.status_code == 200:
47
+ result = response.json()
48
+ score = result['scores'][0] * 100
49
+ label = result['labels'][0]
50
+ if score > 70:
51
+ print(label)
52
+ print(score)
53
+ if label == ofertas[1]:
54
+ novo_pront = (
55
+ "Você deve fornecer as seguintes informações.\n"
56
+ "- Relizamos o fechamento da sua quitação \n"
57
+ "- Valor total do contrato de R$ 6.000,00 foi fechado\n"
58
+ "- Foi enviado um email para '[email protected]' com mais detalhes"
59
+ )
60
+ else:
61
+ novo_pront = (
62
+ "Você deve fornecer as seguintes informações.\n"
63
+ "- Valor total do contrato: R$ 6.000,00\n"
64
+ "- Valor em aberto: R$ 2.000 \n"
65
+ "Ofertas disponíveis:\n"
66
+ "1 - Renegociação de dívida:\n"
67
+ "* Prazo de pagamento: 10 meses\n"
68
+ "* Valor mensal: R$ 590,00\n"
69
+ "* Desconto total: R$ 100,00\n"
70
+ "2 - Atualização de dívida atrasada:\n"
71
+ "* Prazo de pagamento: 1 parcela\n"
72
+ "* Valor a pagar: R$ 1.500,00\n"
73
+ "* Desconto total: R$ 500,00\n"
74
+ "* E continua pagando as parcelas do contrato \n"
75
+ "3 - Quitação de dívida:\n"
76
+ "- Prazo de pagamento: 1 vez\n"
77
+ "- Valor a pagar: R$ 5.000,00\n"
78
+ "- Desconto total: R$ 1.000,00\n"
79
+ )
80
+
81
+ print(novo_pront)
82
+
83
+ mensagens.append({"role": "system", "content": novo_pront})
84
+ else:
85
+ print(f'Não atingiu mais que 70%. score maximo {score:.2f}% para "{label}"')
86
+ else:
87
+ print(f"Error Classificação: {response.status_code}")
88
+ print(response.json())
89
+
90
+
91
+
92
+ mensagens.append({'role': 'user', 'content': pergunta_usuario})
93
+ template = tokenizer.apply_chat_template(mensagens, tokenize=False, add_generation_prompt=True)
94
+ json = {
95
+ 'inputs': template,
96
+ 'parameters': {'max_new_tokens': 600},
97
+ 'options': {'use_cache': False, 'wait_for_model': True},
98
+ }
99
+ response = requests.post(url, json=json, headers=headers).json()
100
+ print(response)
101
+ mensagem_chatbot = response[0]['generated_text'].split(token_modelo)[-1]
102
+ mensagens.append({'role': 'assistant', 'content': mensagem_chatbot})
103
+
104
+ with area_chat.container():
105
+ for mensagem in mensagens:
106
+ chat = st.chat_message(mensagem['role'])
107
+ chat.markdown(mensagem['content'])
108
+ print(mensagens)