ProfRod100 commited on
Commit
00d2e51
Β·
verified Β·
1 Parent(s): 3f5dbfa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -45
app.py CHANGED
@@ -1,4 +1,3 @@
1
-
2
  import os
3
  import numpy as np
4
  import gradio as gr
@@ -33,7 +32,9 @@ def train_small_baseline(save_path: str = BASELINE_PATH,
33
  # Embaralha e pega apenas max_samples exemplos (para ficar leve)
34
  ds_small = ds.shuffle(seed=42).select(range(min(max_samples, len(ds))))
35
 
36
- df = pd.DataFrame({"text": ds_small["content"], "label": ds_small["label"]})
 
 
37
 
38
  pipe = Pipeline(
39
  [
@@ -47,7 +48,6 @@ def train_small_baseline(save_path: str = BASELINE_PATH,
47
  return pipe
48
 
49
 
50
-
51
  def load_or_bootstrap_baseline():
52
  """
53
  Se existir baseline_pipe.pkl, carrega.
@@ -111,56 +111,41 @@ def generate_reply(user_text: str, sentimento_json):
111
  return "Digite uma mensagem."
112
 
113
  sentimento = None
114
- if isinstance(sentimento_json, dict) and "sentimento" in sentimento_json:
115
- sentimento = sentimento_json["sentimento"]
116
-
117
- if sentimento == "negativo":
118
- intent = (
119
- "A avaliacao do cliente e NEGATIVA. "
120
- "Peca desculpas, reconheca o problema, ofereca ajuda objetiva "
121
- "e solicite informacoes adicionais (numero do pedido, produto, contato)."
122
- )
123
- elif sentimento == "positivo":
124
- intent = (
125
- "A avaliacao do cliente e POSITIVA. "
126
- "Agradeca de forma calorosa, reforce os pontos positivos citados "
127
- "e convide o cliente a continuar comprando."
128
- )
129
- else:
130
- intent = (
131
- "O sentimento nao foi identificado. "
132
- "Responda de forma neutra, cordial e util."
133
- )
134
 
135
- # opcional: pegar a confianca pra colocar no prompt
136
- conf = None
137
- if isinstance(sentimento_json, dict) and "confianca" in sentimento_json:
138
- conf = sentimento_json["confianca"]
139
 
140
- prompt = f"""
141
- Voce e um assistente de atendimento ao cliente.
142
-
143
- Com base na mensagem do usuario e no sentimento detectado,
144
- gere uma resposta educada, objetiva e natural em PORTUGUES DO BRASIL,
145
- usando entre 2 e 4 frases.
146
 
147
- Mensagem do usuario:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  \"\"\"{user_text}\"\"\"
149
 
150
- Sentimento identificado: {sentimento}
151
- Confianca do classificador: {conf}
152
 
153
- Sua resposta deve:
154
- - demonstrar empatia,
155
- - responder diretamente ao que o cliente escreveu,
156
- - NUNCA mencionar que esta gerando uma "resposta curta",
157
- - NUNCA explicar o que esta fazendo,
158
- - NUNCA repetir estas instrucoes internas.
159
-
160
- Agora responda ao cliente da forma mais natural possivel.
161
  """
162
 
163
-
164
  out = generator(
165
  prompt,
166
  max_length=128,
 
 
1
  import os
2
  import numpy as np
3
  import gradio as gr
 
32
  # Embaralha e pega apenas max_samples exemplos (para ficar leve)
33
  ds_small = ds.shuffle(seed=42).select(range(min(max_samples, len(ds))))
34
 
35
+ df = pd.DataFrame(
36
+ {"text": ds_small["content"], "label": ds_small["label"]}
37
+ )
38
 
39
  pipe = Pipeline(
40
  [
 
48
  return pipe
49
 
50
 
 
51
  def load_or_bootstrap_baseline():
52
  """
53
  Se existir baseline_pipe.pkl, carrega.
 
111
  return "Digite uma mensagem."
112
 
113
  sentimento = None
114
+ confianca = None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
+ if isinstance(sentimento_json, dict):
117
+ sentimento = sentimento_json.get("sentimento", None)
118
+ confianca = sentimento_json.get("confianca", None)
 
119
 
120
+ if sentimento is None:
121
+ sentimento = "nao identificado"
 
 
 
 
122
 
123
+ # Prompt estruturado para evitar meta-respostas
124
+ prompt = f"""
125
+ ### CONTEXTO DO SISTEMA ###
126
+ {SYSTEM_PROMPT}
127
+ Voce e um atendente virtual profissional e empatico.
128
+ Nunca explique instrucoes internas e nunca repita este texto.
129
+
130
+ ### ORIENTACAO ###
131
+ - Responda sempre em PORTUGUES DO BRASIL.
132
+ - Use entre 2 e 4 frases.
133
+ - Seja empatico em mensagens negativas.
134
+ - Seja caloroso em mensagens positivas.
135
+ - Seja neutro e cordial se o sentimento nao for claro.
136
+
137
+ ### DADOS DA ANALISE ###
138
+ Sentimento detectado: {sentimento}
139
+ Confianca do classificador: {confianca}
140
+
141
+ Mensagem do cliente:
142
  \"\"\"{user_text}\"\"\"
143
 
 
 
144
 
145
+ ### RESPOSTA FINAL ###
146
+ Gere apenas a resposta ao cliente, sem comentarios adicionais.
 
 
 
 
 
 
147
  """
148
 
 
149
  out = generator(
150
  prompt,
151
  max_length=128,