Update app.py
Browse files
app.py
CHANGED
|
@@ -205,13 +205,13 @@ def estruturar_prompt_analise(caso, peticao, modo_treinamento=False):
|
|
| 205 |
5. Não penalize por informações ausentes no caso original, mas alerte se a omissão compromete a petição.
|
| 206 |
6. A frase "Nestes termos, pede deferimento" com vírgula é incorreta; corrija para "Nestes termos pede deferimento" e penalize com -0,2 ponto, destacando o erro formal.
|
| 207 |
7. A petição deve finalizar com "Local e data.\nADVOGADO.\nOAB." sem identificação do aluno (nome, número ou estado na OAB); se houver identificação específica (ex.: "OAB/SP" ou "12345"), zere a nota (0,0) e explique o motivo.
|
| 208 |
-
|
| 209 |
**Instruções Especiais para Análise Avançada:**
|
| 210 |
- **Competência**: Avalie o foro indicado com base no Art. 46 do CPC (domicílio do réu) ou Art. 101, I do CDC (domicílio do autor em relações de consumo); penalize erros com -0,10 ponto e justifique com jurisprudência (ex.: STJ, REsp 1.234.567).
|
| 211 |
- **Consistência Fática**: Compare cada fato narrado na petição com o caso; destaque omissões ou distorções com base no Art. 319, III, CPC.
|
| 212 |
- **Fundamentação Jurídica**: Exija citação de pelo menos um artigo específico (ex.: Art. 186, CC para responsabilidade civil) e avalie a pertinência; penalize generalidades com -0,15 ponto por item vago.
|
| 213 |
- **Danos Morais e Materiais**: Se o caso sugerir danos, verifique se os pedidos estão quantificados e fundamentados (ex.: Súmula 387/STJ para danos morais); penalize omissões com -0,20 ponto.
|
| 214 |
-
- **Linguagem Técnica**: Avalie a formalidade e precisão do vocabulário jurídico; penalize informalidades ou erros gramaticais (ex.: "vossa excelência" em minúsculas)
|
| 215 |
- **Precedentes**: Inclua referências a súmulas ou decisões relevantes (ex.: Súmula 297/STJ para CDC) quando aplicável no caso.
|
| 216 |
|
| 217 |
**Pontuação Detalhada:**
|
|
@@ -251,27 +251,61 @@ def estruturar_prompt_analise(caso, peticao, modo_treinamento=False):
|
|
| 251 |
return base_prompt
|
| 252 |
|
| 253 |
def estruturar_prompt_peticao_corrigida(caso, peticao):
|
| 254 |
-
"""Estrutura o prompt
|
| 255 |
return f"""
|
| 256 |
**Caso Fornecido:**
|
| 257 |
{caso}
|
| 258 |
**Petição do Aluno:**
|
| 259 |
{peticao}
|
| 260 |
### Petição Corrigida
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 273 |
"""
|
| 274 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 275 |
def chamar_api(prompt):
|
| 276 |
payload = {
|
| 277 |
"contents": [{"parts": [{"text": prompt}]}],
|
|
@@ -341,6 +375,10 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
|
|
| 341 |
if "❌" in peticao_corrigida or "⏱️" in peticao_corrigida:
|
| 342 |
return aviso_validacao + analise_formatada + "\n\n" + peticao_corrigida
|
| 343 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 344 |
correcao_completa = analise + "\n\n" + peticao_corrigida
|
| 345 |
HISTORICO.append({
|
| 346 |
"data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
|
|
|
| 205 |
5. Não penalize por informações ausentes no caso original, mas alerte se a omissão compromete a petição.
|
| 206 |
6. A frase "Nestes termos, pede deferimento" com vírgula é incorreta; corrija para "Nestes termos pede deferimento" e penalize com -0,2 ponto, destacando o erro formal.
|
| 207 |
7. A petição deve finalizar com "Local e data.\nADVOGADO.\nOAB." sem identificação do aluno (nome, número ou estado na OAB); se houver identificação específica (ex.: "OAB/SP" ou "12345"), zere a nota (0,0) e explique o motivo.
|
| 208 |
+
|
| 209 |
**Instruções Especiais para Análise Avançada:**
|
| 210 |
- **Competência**: Avalie o foro indicado com base no Art. 46 do CPC (domicílio do réu) ou Art. 101, I do CDC (domicílio do autor em relações de consumo); penalize erros com -0,10 ponto e justifique com jurisprudência (ex.: STJ, REsp 1.234.567).
|
| 211 |
- **Consistência Fática**: Compare cada fato narrado na petição com o caso; destaque omissões ou distorções com base no Art. 319, III, CPC.
|
| 212 |
- **Fundamentação Jurídica**: Exija citação de pelo menos um artigo específico (ex.: Art. 186, CC para responsabilidade civil) e avalie a pertinência; penalize generalidades com -0,15 ponto por item vago.
|
| 213 |
- **Danos Morais e Materiais**: Se o caso sugerir danos, verifique se os pedidos estão quantificados e fundamentados (ex.: Súmula 387/STJ para danos morais); penalize omissões com -0,20 ponto.
|
| 214 |
+
- **Linguagem Técnica**: Avalie a formalidade e precisão do vocabulário jurídico; penalize informalidades ou erros gramaticais (ex.: "vossa excelência" em minúsculas) com -0,05 ponto por ocorrência.
|
| 215 |
- **Precedentes**: Inclua referências a súmulas ou decisões relevantes (ex.: Súmula 297/STJ para CDC) quando aplicável no caso.
|
| 216 |
|
| 217 |
**Pontuação Detalhada:**
|
|
|
|
| 251 |
return base_prompt
|
| 252 |
|
| 253 |
def estruturar_prompt_peticao_corrigida(caso, peticao):
|
| 254 |
+
"""Estrutura o prompt para a petição corrigida com instruções mais enfáticas."""
|
| 255 |
return f"""
|
| 256 |
**Caso Fornecido:**
|
| 257 |
{caso}
|
| 258 |
**Petição do Aluno:**
|
| 259 |
{peticao}
|
| 260 |
### Petição Corrigida
|
| 261 |
+
Gere a petição corrigida abaixo desta seção, intitulada exatamente como '### Petição Corrigida'. Você DEVE seguir TODOS os critérios abaixo rigorosamente, sem exceção, aplicando cada correção necessária com base no caso e na petição do aluno. Não ignore nenhum item, pois todos são obrigatórios:
|
| 262 |
+
|
| 263 |
+
1. **Endereçamento correto**: Corrija o foro com base no Art. 46 do CPC (domicílio do réu) ou Art. 101, I do CDC (domicílio do autor em relações de consumo, se aplicável). Exemplo: "Excelentíssimo Senhor Juiz de Direito da Vara Cível da Comarca de [Cidade correta]".
|
| 264 |
+
2. **Qualificação completa**: Inclua nome, estado civil, endereço (use "XXX" para dados ausentes), conforme Art. 319, II, CPC. Não invente dados específicos.
|
| 265 |
+
3. **Fatos claros e fiéis ao caso**: Narre os fatos do caso em ordem cronológica, sem adicionar informações não fornecidas, conforme Art. 319, III, CPC.
|
| 266 |
+
4. **Fundamentação jurídica robusta**: Cite pelo menos um artigo específico do CPC, CDC ou CC (ex.: Art. 186, CC para responsabilidade civil) e, se aplicável, súmulas (ex.: Súmula 387/STJ para danos morais).
|
| 267 |
+
5. **Pedidos específicos e quantificados**: Detalhe todos os pedidos com clareza e valores exatos (ex.: "R$ 50.000,00 por danos morais"), conforme Art. 319, IV, CPC.
|
| 268 |
+
6. **Valor da causa realista**: Inclua o valor total do benefício econômico pretendido, conforme Art. 319, V, CPC (ex.: soma de danos + valor do contrato, se aplicável).
|
| 269 |
+
7. **Provas detalhadas**: Especifique provas como "prova documental e testemunhal", conforme Art. 319, VI, CPC.
|
| 270 |
+
8. **Opção por audiência explícita**: Inclua "Requer a designação de audiência de conciliação" ou "Dispensa a audiência de conciliação", conforme Art. 319, VII, CPC.
|
| 271 |
+
9. **Pedido de citação formal**: Use "via postal, nos termos do Art. 246, I, CPC" ou outro meio legal aplicável.
|
| 272 |
+
10. **Juntada da guia de custas**: Adicione "Requer a juntada da guia de custas devidamente recolhida" em todas as petições corrigidas, sem exceção.
|
| 273 |
+
11. **Fechamento formal**: Finalize EXATAMENTE com "Local e data.\nADVOGADO.\nOAB." sem identificação específica (ex.: "OAB/SP" ou "12345" resultam em nota zero). A frase "Nestes termos, pede deferimento" com vírgula DEVE SER corrigida para "Nestes termos pede deferimento" (sem vírgula), conforme exigência formal da OAB.
|
| 274 |
+
|
| 275 |
+
**Instruções Obrigatórias**:
|
| 276 |
+
- Não omita nenhum dos 11 itens acima. Cada um é essencial e deve ser verificado e corrigido se necessário.
|
| 277 |
+
- Siga estritamente as regras formais da OAB, especialmente a correção da vírgula em "Nestes termos pede deferimento".
|
| 278 |
+
- Baseie-se exclusivamente no caso fornecido e na petição do aluno, sem inventar fatos ou dados.
|
| 279 |
+
- Gere a petição completa, incluindo todas as seções (endereçamento, qualificação, fatos, direito, pedidos, valor da causa, provas, fechamento).
|
| 280 |
"""
|
| 281 |
|
| 282 |
+
def pos_corrigir_peticao(peticao_corrigida):
|
| 283 |
+
"""Pós-processamento para garantir que todas as regras sejam aplicadas."""
|
| 284 |
+
# Garantir a correção da vírgula
|
| 285 |
+
if "Nestes termos, pede deferimento" in peticao_corrigida:
|
| 286 |
+
peticao_corrigida = peticao_corrigida.replace("Nestes termos, pede deferimento", "Nestes termos pede deferimento")
|
| 287 |
+
|
| 288 |
+
# Garantir o pedido de juntada da guia de custas
|
| 289 |
+
if "juntada da guia de custas" not in peticao_corrigida.lower():
|
| 290 |
+
peticao_corrigida = peticao_corrigida.replace("Nestes termos pede deferimento", "Requer a juntada da guia de custas devidamente recolhida.\nNestes termos pede deferimento")
|
| 291 |
+
|
| 292 |
+
# Garantir o fechamento formal correto
|
| 293 |
+
if not peticao_corrigida.strip().endswith("Local e data.\nADVOGADO.\nOAB."):
|
| 294 |
+
linhas = peticao_corrigida.split('\n')
|
| 295 |
+
while linhas and not linhas[-1].strip(): # Remove linhas em branco no final
|
| 296 |
+
linhas.pop()
|
| 297 |
+
if len(linhas) >= 3:
|
| 298 |
+
linhas[-3:] = ["Local e data.", "ADVOGADO.", "OAB."]
|
| 299 |
+
else:
|
| 300 |
+
linhas.extend(["Local e data.", "ADVOGADO.", "OAB."])
|
| 301 |
+
peticao_corrigida = "\n".join(linhas)
|
| 302 |
+
|
| 303 |
+
# Garantir opção por audiência explícita
|
| 304 |
+
if "audiência de conciliação" not in peticao_corrigida.lower():
|
| 305 |
+
peticao_corrigida = peticao_corrigida.replace("Nestes termos pede deferimento", "Requer a designação de audiência de conciliação, nos termos do Art. 319, VII, CPC.\nNestes termos pede deferimento")
|
| 306 |
+
|
| 307 |
+
return peticao_corrigida
|
| 308 |
+
|
| 309 |
def chamar_api(prompt):
|
| 310 |
payload = {
|
| 311 |
"contents": [{"parts": [{"text": prompt}]}],
|
|
|
|
| 375 |
if "❌" in peticao_corrigida or "⏱️" in peticao_corrigida:
|
| 376 |
return aviso_validacao + analise_formatada + "\n\n" + peticao_corrigida
|
| 377 |
|
| 378 |
+
# Pós-correção para garantir conformidade
|
| 379 |
+
peticao_corrigida = pos_corrigir_peticao(peticao_corrigida)
|
| 380 |
+
print("Debug: Petição corrigida após pós-processamento:\n", peticao_corrigida[:1000]) # Debug para verificar a saída
|
| 381 |
+
|
| 382 |
correcao_completa = analise + "\n\n" + peticao_corrigida
|
| 383 |
HISTORICO.append({
|
| 384 |
"data": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|