Update app.py
Browse files
app.py
CHANGED
|
@@ -37,14 +37,36 @@ CONFIG = {
|
|
| 37 |
|
| 38 |
rate_limiter = RateLimiter(max_calls=60, period=60)
|
| 39 |
|
| 40 |
-
|
| 41 |
-
"Endereçamento": "Em relações de consumo, prefira o foro do domicílio do autor (Art. 101, I, CDC)."
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
"
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
}
|
| 49 |
|
| 50 |
HISTORICO = []
|
|
@@ -207,14 +229,14 @@ def validar_peticao_basica(peticao):
|
|
| 207 |
|
| 208 |
def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
|
| 209 |
base_prompt = f"""
|
| 210 |
-
## Correção
|
| 211 |
**Caso Fornecido:**
|
| 212 |
{caso}
|
| 213 |
**Petição do Aluno:**
|
| 214 |
{peticao}
|
| 215 |
**Estrutura da Avaliação:**
|
| 216 |
### Análise da Petição
|
| 217 |
-
1. Análise Geral (
|
| 218 |
2. Nota Final (0 a 10 com uma casa decimal)
|
| 219 |
3. Pontos Positivos (Liste pelo menos 3 aspectos bem executados com justificativa legal)
|
| 220 |
4. Pontos a Melhorar (Liste os problemas encontrados em ordem de gravidade com explicação e base legal)
|
|
@@ -280,15 +302,17 @@ def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
|
|
| 280 |
"""
|
| 281 |
if modo_treinamento:
|
| 282 |
base_prompt += f"""
|
| 283 |
-
**Modo de Treinamento Interativo
|
| 284 |
- Para cada item com pontuação inferior ao máximo, forneça:
|
| 285 |
a) Uma explicação detalhada (mínimo 2 frases) descrevendo o erro e sua base legal (ex.: Art. 319, CPC).
|
| 286 |
b) Uma sugestão de redação corrigida baseada no caso.
|
| 287 |
c) Um exemplo prático de redação correta em outro contexto (ex.: "Em uma ação de dano moral, poderia ser: 'Requer a condenação ao pagamento de R$ 10.000,00 por danos morais, conforme Súmula 387 do STJ.'").
|
| 288 |
-
d) Uma dica prática do banco ({json.dumps(
|
|
|
|
| 289 |
- Verifique a coerência entre os fatos do caso e a petição, destacando inconsistências.
|
| 290 |
- Sugira estratégias jurídicas adicionais baseadas no caso (ex.: citar Art. 186, CC ou Súmula 387, STJ para danos morais).
|
| 291 |
- Não resuma; detalhe cada erro de forma pedagógica e clara.
|
|
|
|
| 292 |
"""
|
| 293 |
return base_prompt
|
| 294 |
|
|
@@ -363,7 +387,7 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
|
|
| 363 |
peticao_conteudo = peticao_texto or ""
|
| 364 |
if not peticao_conteudo.strip():
|
| 365 |
return "⚠️ Forneça uma petição."
|
| 366 |
-
|
| 367 |
problemas = validar_peticao_basica(peticao_conteudo)
|
| 368 |
aviso_validacao = f"### Validação Inicial\n\n" + "\n".join(problemas) + "\n\n" if problemas else ""
|
| 369 |
|
|
@@ -466,7 +490,7 @@ def extrair_peticao_corrigida(correcao_completa):
|
|
| 466 |
return f"❌ Erro ao extrair petição corrigida: {str(e)}"
|
| 467 |
|
| 468 |
def fornecer_dica_contextual(texto):
|
| 469 |
-
dicas = [f"💡 {chave}: {dica}" for chave, dica in
|
| 470 |
return "\n".join(dicas) if dicas else "💡 Escreva mais para receber dicas."
|
| 471 |
|
| 472 |
def calcular_progresso():
|
|
@@ -685,14 +709,14 @@ def interface_gradio():
|
|
| 685 |
clear_btn.click(
|
| 686 |
fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False), gr.update(visible=False)],
|
| 687 |
inputs=None,
|
| 688 |
-
outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
|
| 689 |
-
peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 690 |
visualizacao_detalhada_output, download_btn, download_file]
|
| 691 |
)
|
| 692 |
comparar_btn.click(
|
| 693 |
fn=comparar_peticao_melhorada,
|
| 694 |
inputs=[caso_input, peticao_texto, resultado_output],
|
| 695 |
-
outputs=[peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 696 |
visualizacao_detalhada_output]
|
| 697 |
).then(
|
| 698 |
fn=lambda: gr.update(visible=True),
|
|
@@ -740,4 +764,4 @@ def interface_gradio():
|
|
| 740 |
return demo
|
| 741 |
|
| 742 |
app = interface_gradio()
|
| 743 |
-
app.launch()
|
|
|
|
| 37 |
|
| 38 |
rate_limiter = RateLimiter(max_calls=60, period=60)
|
| 39 |
|
| 40 |
+
DICAS_OAB_MELHORADO = {
|
| 41 |
+
"Endereçamento": "Em relações de consumo, prefira o foro do domicílio do autor (Art. 101, I, CDC). "
|
| 42 |
+
"Exemplo: 'Excelentíssimo Senhor Juiz de Direito da Vara Cível da Comarca de [Cidade do Autor]'.",
|
| 43 |
+
|
| 44 |
+
"Qualificação": "Mencione nome, estado civil (se informado), endereço (use 'Rua XXX' se não fornecido). "
|
| 45 |
+
"Dica: Sempre verifique se todos os dados das partes estão corretos e completos.",
|
| 46 |
+
|
| 47 |
+
"Fatos": "Descreva os fatos cronologicamente, sem inventar informações. "
|
| 48 |
+
"Exemplo: 'Em [data], o autor celebrou contrato com o réu para a prestação de serviços de [descrição]'.",
|
| 49 |
+
|
| 50 |
+
"Pedidos": "Seja específico nos pedidos (ex.: 'condenação ao pagamento de R$ X'). "
|
| 51 |
+
"Dica: Inclua pedidos de danos morais e materiais, se aplicável, com base em precedentes.",
|
| 52 |
+
|
| 53 |
+
"Custas": "Inclua 'Requer a juntada da guia de custas devidamente recolhida'. "
|
| 54 |
+
"Dica: Nunca se esqueça de mencionar o recolhimento das custas para evitar a extinção do processo.",
|
| 55 |
+
|
| 56 |
+
"Fundamentação": "Baseie-se em artigos do CPC ou CDC e, se possível, em súmulas do STJ (ex.: Súmula 387 para danos morais). "
|
| 57 |
+
"Exemplo: 'Conforme o artigo 186 do Código Civil, a responsabilidade civil pode ser caracterizada'.",
|
| 58 |
+
|
| 59 |
+
"Fechamento": "Finalize com 'Nestes termos pede deferimento', sem vírgula. "
|
| 60 |
+
"Dica: Evite erros de pontuação que podem comprometer a formalidade do documento.",
|
| 61 |
+
|
| 62 |
+
"Estratégia Jurídica": "Utilize precedentes e súmulas para fortalecer sua argumentação. "
|
| 63 |
+
"Exemplo: 'Conforme a Súmula 387 do STJ, os danos morais devem ser comprovados e quantificados'.",
|
| 64 |
+
|
| 65 |
+
"Provas": "Especifique as provas que pretende produzir. "
|
| 66 |
+
"Dica: Inclua testemunhas, documentos e perícias, se necessário, para comprovar os fatos alegados.",
|
| 67 |
+
|
| 68 |
+
"Contra-argumentação": "Antecipe possíveis defesas da parte contrária e prepare respostas. "
|
| 69 |
+
"Dica: Considere os argumentos que a outra parte pode usar e esteja preparado para refutá-los."
|
| 70 |
}
|
| 71 |
|
| 72 |
HISTORICO = []
|
|
|
|
| 229 |
|
| 230 |
def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
|
| 231 |
base_prompt = f"""
|
| 232 |
+
## Correção Avançada de Petição Inicial Cível (Critérios Realistas da OAB)
|
| 233 |
**Caso Fornecido:**
|
| 234 |
{caso}
|
| 235 |
**Petição do Aluno:**
|
| 236 |
{peticao}
|
| 237 |
**Estrutura da Avaliação:**
|
| 238 |
### Análise da Petição
|
| 239 |
+
1. Análise Geral (Visão geral sobre a petição - máximo 3 linhas)
|
| 240 |
2. Nota Final (0 a 10 com uma casa decimal)
|
| 241 |
3. Pontos Positivos (Liste pelo menos 3 aspectos bem executados com justificativa legal)
|
| 242 |
4. Pontos a Melhorar (Liste os problemas encontrados em ordem de gravidade com explicação e base legal)
|
|
|
|
| 302 |
"""
|
| 303 |
if modo_treinamento:
|
| 304 |
base_prompt += f"""
|
| 305 |
+
**Modo de Treinamento Interativo Avançado:**
|
| 306 |
- Para cada item com pontuação inferior ao máximo, forneça:
|
| 307 |
a) Uma explicação detalhada (mínimo 2 frases) descrevendo o erro e sua base legal (ex.: Art. 319, CPC).
|
| 308 |
b) Uma sugestão de redação corrigida baseada no caso.
|
| 309 |
c) Um exemplo prático de redação correta em outro contexto (ex.: "Em uma ação de dano moral, poderia ser: 'Requer a condenação ao pagamento de R$ 10.000,00 por danos morais, conforme Súmula 387 do STJ.'").
|
| 310 |
+
d) Uma dica prática do banco ({json.dumps(DICAS_OAB_MELHORADO, ensure_ascii=False)}) ou personalizada.
|
| 311 |
+
e) Uma estratégia jurídica avançada que poderia ser aplicada ao caso.
|
| 312 |
- Verifique a coerência entre os fatos do caso e a petição, destacando inconsistências.
|
| 313 |
- Sugira estratégias jurídicas adicionais baseadas no caso (ex.: citar Art. 186, CC ou Súmula 387, STJ para danos morais).
|
| 314 |
- Não resuma; detalhe cada erro de forma pedagógica e clara.
|
| 315 |
+
- Inclua referências a artigos de lei, jurisprudência e doutrina relevantes.
|
| 316 |
"""
|
| 317 |
return base_prompt
|
| 318 |
|
|
|
|
| 387 |
peticao_conteudo = peticao_texto or ""
|
| 388 |
if not peticao_conteudo.strip():
|
| 389 |
return "⚠️ Forneça uma petição."
|
| 390 |
+
|
| 391 |
problemas = validar_peticao_basica(peticao_conteudo)
|
| 392 |
aviso_validacao = f"### Validação Inicial\n\n" + "\n".join(problemas) + "\n\n" if problemas else ""
|
| 393 |
|
|
|
|
| 490 |
return f"❌ Erro ao extrair petição corrigida: {str(e)}"
|
| 491 |
|
| 492 |
def fornecer_dica_contextual(texto):
|
| 493 |
+
dicas = [f"💡 {chave}: {dica}" for chave, dica in DICAS_OAB_MELHORADO.items() if chave.lower() in texto.lower()]
|
| 494 |
return "\n".join(dicas) if dicas else "💡 Escreva mais para receber dicas."
|
| 495 |
|
| 496 |
def calcular_progresso():
|
|
|
|
| 709 |
clear_btn.click(
|
| 710 |
fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False), gr.update(visible=False)],
|
| 711 |
inputs=None,
|
| 712 |
+
outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
|
| 713 |
+
peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 714 |
visualizacao_detalhada_output, download_btn, download_file]
|
| 715 |
)
|
| 716 |
comparar_btn.click(
|
| 717 |
fn=comparar_peticao_melhorada,
|
| 718 |
inputs=[caso_input, peticao_texto, resultado_output],
|
| 719 |
+
outputs=[peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 720 |
visualizacao_detalhada_output]
|
| 721 |
).then(
|
| 722 |
fn=lambda: gr.update(visible=True),
|
|
|
|
| 764 |
return demo
|
| 765 |
|
| 766 |
app = interface_gradio()
|
| 767 |
+
app.launch()
|