Files changed (1) hide show
  1. app.py +50 -18
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import os
2
  import gradio as gr
3
  from huggingface_hub import InferenceClient
 
4
 
5
  HF_TOKEN = os.getenv("HF_TOKEN")
6
 
@@ -9,7 +10,7 @@ client = InferenceClient(
9
  token=HF_TOKEN
10
  )
11
 
12
- # Aqui você cola o JSON normalmente, sem escapar nada
13
  AGENTE_JSON = """
14
  {
15
  "nome_agente": "IndenizaAI",
@@ -31,7 +32,7 @@ AGENTE_JSON = """
31
  "Total geral da indenização"
32
  ],
33
  "comportamento_resposta": {
34
- "estilo": 'técnico, claro e organizado',
35
  "estrutura": [
36
  "👉 Resumo inicial do caso",
37
  "👉 Tabela detalhada de cada cálculo",
@@ -47,12 +48,26 @@ AGENTE_JSON = """
47
  }
48
  """
49
 
50
- def montar_mensagem_usuario(msg):
 
 
 
 
 
 
 
 
 
 
 
 
51
  return (
52
  "Você é o IndenizaAI.\n"
53
  "Siga integralmente todas as instruções do JSON abaixo:\n"
54
  "### CONFIGURAÇÃO DO AGENTE ###\n"
55
  + AGENTE_JSON +
 
 
56
  "\n### MENSAGEM DO USUÁRIO ###\n"
57
  + msg +
58
  "\n### INSTRUÇÃO CRÍTICA ###\n"
@@ -63,32 +78,49 @@ def montar_mensagem_usuario(msg):
63
  "Responda como **IndenizaAI**."
64
  )
65
 
66
- def responder(mensagem, historico):
67
- prompt = montar_mensagem_usuario(mensagem)
 
68
 
69
- messages = [
70
- {"role": "system", "content": "Você é o IndenizaAI, especialista em cálculos de indenizações trabalhistas."},
71
- {"role": "user", "content": prompt}
72
- ]
73
 
74
- result = client.chat_completion(
75
- messages=messages,
76
- max_tokens=1200,
77
- temperature=0.1,
78
- top_p=0.9
79
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
- resposta = result.choices[0].message["content"]
82
  historico.append({"role": "user", "content": mensagem})
83
  historico.append({"role": "assistant", "content": resposta})
84
  return historico, ""
85
 
86
  with gr.Blocks() as demo:
87
  gr.Markdown("## ⚖️ IndenizaAI — Assistente Jurídico Especializado")
88
-
89
  chat = gr.Chatbot(type="messages")
90
  inp = gr.Textbox(label="Digite sua mensagem")
91
-
92
  inp.submit(responder, [inp, chat], [chat, inp])
93
 
94
  demo.launch()
 
1
  import os
2
  import gradio as gr
3
  from huggingface_hub import InferenceClient
4
+ import json
5
 
6
  HF_TOKEN = os.getenv("HF_TOKEN")
7
 
 
10
  token=HF_TOKEN
11
  )
12
 
13
+ # Seu AGENTE_JSON completo
14
  AGENTE_JSON = """
15
  {
16
  "nome_agente": "IndenizaAI",
 
32
  "Total geral da indenização"
33
  ],
34
  "comportamento_resposta": {
35
+ "estilo": "técnico, claro e organizado",
36
  "estrutura": [
37
  "👉 Resumo inicial do caso",
38
  "👉 Tabela detalhada de cada cálculo",
 
48
  }
49
  """
50
 
51
+ # Campos que queremos armazenar do usuário
52
+ CAMPOS_NECESSARIOS = [
53
+ "nome_trabalhador", "idade", "cargo", "tempo_servico",
54
+ "renda_mensal", "contrato_trabalho",
55
+ "data_acidente", "tipo_acidente", "descricao_acidente", "tempo_afastamento",
56
+ "sequelas", "custos_medicos", "perda_capacidade",
57
+ "gastos_tratamento", "perda_rendimentos"
58
+ ]
59
+
60
+ # Armazenamento em memória (pode ser substituído por DB)
61
+ usuarios_dados = {}
62
+
63
+ def montar_mensagem_usuario(msg, dados_completos):
64
  return (
65
  "Você é o IndenizaAI.\n"
66
  "Siga integralmente todas as instruções do JSON abaixo:\n"
67
  "### CONFIGURAÇÃO DO AGENTE ###\n"
68
  + AGENTE_JSON +
69
+ "\n### DADOS COLETADOS DO USUÁRIO ###\n"
70
+ + json.dumps(dados_completos, indent=2) +
71
  "\n### MENSAGEM DO USUÁRIO ###\n"
72
  + msg +
73
  "\n### INSTRUÇÃO CRÍTICA ###\n"
 
78
  "Responda como **IndenizaAI**."
79
  )
80
 
81
+ def verificar_dados_completos(dados):
82
+ faltando = [campo for campo in CAMPOS_NECESSARIOS if campo not in dados or not dados[campo]]
83
+ return faltando
84
 
85
+ def responder(mensagem, historico, usuario_id="default"):
86
+ # Recupera dados armazenados do usuário
87
+ dados_usuario = usuarios_dados.get(usuario_id, {})
 
88
 
89
+ # Tenta atualizar dados a partir de JSON enviado pelo usuário
90
+ try:
91
+ dados_parciais = json.loads(mensagem)
92
+ dados_usuario.update(dados_parciais)
93
+ except:
94
+ pass # mensagem normal, sem dados estruturados
95
+
96
+ usuarios_dados[usuario_id] = dados_usuario
97
+
98
+ faltando = verificar_dados_completos(dados_usuario)
99
+
100
+ if faltando:
101
+ resposta = f"⚠️ Ainda faltam os seguintes dados para realizar o cálculo: {', '.join(faltando)}"
102
+ else:
103
+ prompt = montar_mensagem_usuario(mensagem, dados_usuario)
104
+ messages = [
105
+ {"role": "system", "content": "Você é o IndenizaAI, especialista em cálculos de indenizações trabalhistas."},
106
+ {"role": "user", "content": prompt}
107
+ ]
108
+ result = client.chat_completion(
109
+ messages=messages,
110
+ max_tokens=1200,
111
+ temperature=0.1,
112
+ top_p=0.9
113
+ )
114
+ resposta = result.choices[0].message["content"]
115
 
 
116
  historico.append({"role": "user", "content": mensagem})
117
  historico.append({"role": "assistant", "content": resposta})
118
  return historico, ""
119
 
120
  with gr.Blocks() as demo:
121
  gr.Markdown("## ⚖️ IndenizaAI — Assistente Jurídico Especializado")
 
122
  chat = gr.Chatbot(type="messages")
123
  inp = gr.Textbox(label="Digite sua mensagem")
 
124
  inp.submit(responder, [inp, chat], [chat, inp])
125
 
126
  demo.launch()