Vtr100 commited on
Commit
1dc9b4b
·
verified ·
1 Parent(s): 883f887

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -14
app.py CHANGED
@@ -4,10 +4,10 @@ import numpy as np
4
  import os
5
  from transformers import pipeline
6
 
7
- # Caminho padrão do modelo de sentimento
8
  MODEL_PATH = os.getenv("MODEL_PATH", "baseline_pipe.pkl")
9
 
10
- # Carrega o modelo de sentimentos
11
  baseline = None
12
  if os.path.exists(MODEL_PATH):
13
  try:
@@ -16,10 +16,11 @@ if os.path.exists(MODEL_PATH):
16
  except Exception as e:
17
  print(f"⚠️ Erro ao carregar modelo: {e}")
18
  else:
19
- print("⚠️ baseline_pipe.pkl não encontrado. O app usará modo simulado.")
20
 
21
- # Inicializa o gerador de texto (IA generativa)
22
- generator = pipeline("text-generation", model="distilgpt2")
 
23
 
24
  def predict_and_respond(text: str):
25
  """
@@ -38,33 +39,44 @@ def predict_and_respond(text: str):
38
  label = "positivo" if "bom" in text.lower() else "negativo"
39
  conf = 0.0
40
 
41
- # Prompt para a IA generativa
42
  prompt = (
43
  f"O cliente escreveu: '{text}'. "
44
  f"Identificamos que o sentimento é {label}. "
45
- "Responda de forma empática, amigável e em português:"
46
  )
47
 
48
- # Geração da resposta
49
- response = generator(prompt, max_new_tokens=60, do_sample=True, temperature=0.7)[0]["generated_text"]
 
 
 
 
 
 
 
 
 
50
  resposta_limpa = response.replace(prompt, "").strip()
51
 
 
52
  return {
53
  "sentimento": label,
54
  "confiança": round(conf, 3),
55
  "resposta": resposta_limpa
56
  }
57
 
58
- # Interface do Gradio
59
  demo = gr.Interface(
60
  fn=predict_and_respond,
61
  inputs=gr.Textbox(label="Digite uma avaliação de produto"),
62
  outputs=gr.JSON(label="Resultado"),
63
- title="🤖 Análise de Sentimentos + IA Generativa",
64
- description="Analisa o sentimento e gera uma resposta empática com IA generativa (DistilGPT-2).",
65
  examples=[
66
- ["O produto é excelente, recomendo!"],
67
- ["Horrível, veio quebrado e atrasado."]
 
68
  ],
69
  theme="soft"
70
  )
 
4
  import os
5
  from transformers import pipeline
6
 
7
+ # Caminho padrão do modelo de sentimentos
8
  MODEL_PATH = os.getenv("MODEL_PATH", "baseline_pipe.pkl")
9
 
10
+ # Carrega o modelo de sentimentos (TF-IDF + Regressão Logística)
11
  baseline = None
12
  if os.path.exists(MODEL_PATH):
13
  try:
 
16
  except Exception as e:
17
  print(f"⚠️ Erro ao carregar modelo: {e}")
18
  else:
19
+ print("⚠️ baseline_pipe.pkl não encontrado. Usando modo simulado.")
20
 
21
+ # Carrega modelo generativo treinado em português
22
+ # (modelo leve e compatível com Hugging Face Spaces)
23
+ generator = pipeline("text-generation", model="pierreguillou/gpt2-small-portuguese")
24
 
25
  def predict_and_respond(text: str):
26
  """
 
39
  label = "positivo" if "bom" in text.lower() else "negativo"
40
  conf = 0.0
41
 
42
+ # Cria prompt para IA generativa
43
  prompt = (
44
  f"O cliente escreveu: '{text}'. "
45
  f"Identificamos que o sentimento é {label}. "
46
+ "Responda de forma empática, útil e em português:"
47
  )
48
 
49
+ # Gera resposta
50
+ response = generator(
51
+ prompt,
52
+ max_new_tokens=80,
53
+ do_sample=True,
54
+ temperature=0.7,
55
+ top_k=50,
56
+ top_p=0.95
57
+ )[0]["generated_text"]
58
+
59
+ # Limpa o texto da resposta
60
  resposta_limpa = response.replace(prompt, "").strip()
61
 
62
+ # Retorna resultados
63
  return {
64
  "sentimento": label,
65
  "confiança": round(conf, 3),
66
  "resposta": resposta_limpa
67
  }
68
 
69
+ # Interface Gradio
70
  demo = gr.Interface(
71
  fn=predict_and_respond,
72
  inputs=gr.Textbox(label="Digite uma avaliação de produto"),
73
  outputs=gr.JSON(label="Resultado"),
74
+ title="🤖 Análise de Sentimentos + IA Generativa (Português)",
75
+ description="Analisa o sentimento e gera uma resposta empática com IA generativa em português.",
76
  examples=[
77
+ ["Gostei do produto, mas a entrega atrasou um pouco."],
78
+ ["Veio quebrado e o suporte não ajudou."],
79
+ ["Excelente qualidade, recomendo muito!"]
80
  ],
81
  theme="soft"
82
  )