Update app.py
Browse files
app.py
CHANGED
|
@@ -28,12 +28,12 @@ GEMINI_API_URL = f"https://generativelanguage.googleapis.com/v1beta/models/gemin
|
|
| 28 |
CONFIG = {
|
| 29 |
"max_retry_attempts": 3,
|
| 30 |
"retry_delay": 5,
|
| 31 |
-
"timeout":
|
| 32 |
"temperatura": 0.2,
|
| 33 |
"max_tokens": 12882
|
| 34 |
}
|
| 35 |
|
| 36 |
-
rate_limiter = RateLimiter(max_calls=
|
| 37 |
|
| 38 |
DICAS_OAB_MELHORADO = {
|
| 39 |
"Endereçamento": "Em relações de consumo, prefira o foro do domicílio do autor (Art. 101, I, CDC). Exemplo: 'Excelentíssimo Senhor Juiz de Direito da Vara Cível da Comarca de [Cidade do Autor]'.",
|
|
@@ -183,7 +183,7 @@ def estruturar_prompt_analise(caso, peticao, modo_treinamento=False):
|
|
| 183 |
3. Pontos Positivos (Liste pelo menos 3 aspectos bem executados com justificativa legal detalhada, incluindo artigos, súmulas ou precedentes aplicáveis)
|
| 184 |
4. Pontos a Melhorar (Liste todos os problemas encontrados em ordem de gravidade, com explicação detalhada, base legal e impacto na nota)
|
| 185 |
5. Análise Específica dos Requisitos:
|
| 186 |
-
-
|
| 187 |
- Qualificação das partes (Art. 319, II, CPC)
|
| 188 |
- Fatos e fundamentos jurídicos (Art. 319, III, CPC; Art. 186, CC)
|
| 189 |
- Pedidos com especificações (Art. 319, IV, CPC)
|
|
@@ -506,6 +506,10 @@ def interface_gradio():
|
|
| 506 |
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 507 |
gr.Markdown("# 📝 Corretor Avançado de Petições Iniciais (Critérios OAB)")
|
| 508 |
gr.Markdown("⚠️ Nota: Devido a limites da API, pode haver atrasos ou erros em muitas requisições rápidas.")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 509 |
with gr.Row():
|
| 510 |
with gr.Column(scale=1):
|
| 511 |
gr.Markdown("""
|
|
@@ -589,23 +593,60 @@ def interface_gradio():
|
|
| 589 |
outputs=historico_output
|
| 590 |
)
|
| 591 |
|
| 592 |
-
|
| 593 |
btn_texto.click(
|
| 594 |
fn=lambda caso, texto, treinamento: corrigir_peticao(caso, texto, None, treinamento),
|
| 595 |
inputs=[caso_input, peticao_texto, modo_treinamento],
|
| 596 |
-
outputs=[resultado_output]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 597 |
)
|
|
|
|
|
|
|
| 598 |
btn_arquivo.click(
|
| 599 |
fn=lambda caso, arquivo, treinamento: corrigir_peticao(caso, None, arquivo, treinamento),
|
| 600 |
inputs=[caso_input, peticao_arquivo, modo_treinamento],
|
| 601 |
-
outputs=[resultado_output]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 602 |
)
|
|
|
|
| 603 |
clear_btn.click(
|
| 604 |
-
fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False), gr.update(visible=False)],
|
| 605 |
inputs=None,
|
| 606 |
outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
|
| 607 |
peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 608 |
-
visualizacao_detalhada_output, download_btn, download_file]
|
| 609 |
)
|
| 610 |
comparar_btn.click(
|
| 611 |
fn=comparar_peticao_melhorada,
|
|
|
|
| 28 |
CONFIG = {
|
| 29 |
"max_retry_attempts": 3,
|
| 30 |
"retry_delay": 5,
|
| 31 |
+
"timeout": 30, # Reduzido de 60 para 30 segundos
|
| 32 |
"temperatura": 0.2,
|
| 33 |
"max_tokens": 12882
|
| 34 |
}
|
| 35 |
|
| 36 |
+
rate_limiter = RateLimiter(max_calls=100, period=60) # Ajustado de 60 para 100 chamadas por minuto
|
| 37 |
|
| 38 |
DICAS_OAB_MELHORADO = {
|
| 39 |
"Endereçamento": "Em relações de consumo, prefira o foro do domicílio do autor (Art. 101, I, CDC). Exemplo: 'Excelentíssimo Senhor Juiz de Direito da Vara Cível da Comarca de [Cidade do Autor]'.",
|
|
|
|
| 183 |
3. Pontos Positivos (Liste pelo menos 3 aspectos bem executados com justificativa legal detalhada, incluindo artigos, súmulas ou precedentes aplicáveis)
|
| 184 |
4. Pontos a Melhorar (Liste todos os problemas encontrados em ordem de gravidade, com explicação detalhada, base legal e impacto na nota)
|
| 185 |
5. Análise Específica dos Requisitos:
|
| 186 |
+
- Endereçamentos e qualificação do juízo (Art. 319, I, CPC; Art. 101, I, CDC se aplicável)
|
| 187 |
- Qualificação das partes (Art. 319, II, CPC)
|
| 188 |
- Fatos e fundamentos jurídicos (Art. 319, III, CPC; Art. 186, CC)
|
| 189 |
- Pedidos com especificações (Art. 319, IV, CPC)
|
|
|
|
| 506 |
with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
| 507 |
gr.Markdown("# 📝 Corretor Avançado de Petições Iniciais (Critérios OAB)")
|
| 508 |
gr.Markdown("⚠️ Nota: Devido a limites da API, pode haver atrasos ou erros em muitas requisições rápidas.")
|
| 509 |
+
|
| 510 |
+
# Campo de status adicionado logo no início
|
| 511 |
+
estado_processamento = gr.Textbox(label="Status do Processamento", value="Aguardando...", interactive=False)
|
| 512 |
+
|
| 513 |
with gr.Row():
|
| 514 |
with gr.Column(scale=1):
|
| 515 |
gr.Markdown("""
|
|
|
|
| 593 |
outputs=historico_output
|
| 594 |
)
|
| 595 |
|
| 596 |
+
# Configuração do botão de correção de texto com feedback
|
| 597 |
btn_texto.click(
|
| 598 |
fn=lambda caso, texto, treinamento: corrigir_peticao(caso, texto, None, treinamento),
|
| 599 |
inputs=[caso_input, peticao_texto, modo_treinamento],
|
| 600 |
+
outputs=[resultado_output, estado_processamento],
|
| 601 |
+
_js="""() => {
|
| 602 |
+
let btn = document.querySelector('button[id*="btn_texto"]');
|
| 603 |
+
btn.disabled = true;
|
| 604 |
+
btn.innerText = '⏳ Corrigindo...';
|
| 605 |
+
document.querySelector('#estado_processamento textarea').value = '⏳ Processando sua petição...';
|
| 606 |
+
return [];
|
| 607 |
+
}"""
|
| 608 |
+
).then(
|
| 609 |
+
fn=lambda x: (x, "✅ Correção concluída!"),
|
| 610 |
+
inputs=[resultado_output],
|
| 611 |
+
outputs=[resultado_output, estado_processamento],
|
| 612 |
+
_js="""() => {
|
| 613 |
+
let btn = document.querySelector('button[id*="btn_texto"]');
|
| 614 |
+
btn.disabled = false;
|
| 615 |
+
btn.innerText = '🔍 Corrigir Petição (Texto)';
|
| 616 |
+
return [];
|
| 617 |
+
}"""
|
| 618 |
)
|
| 619 |
+
|
| 620 |
+
# Configuração do botão de correção de arquivo com feedback
|
| 621 |
btn_arquivo.click(
|
| 622 |
fn=lambda caso, arquivo, treinamento: corrigir_peticao(caso, None, arquivo, treinamento),
|
| 623 |
inputs=[caso_input, peticao_arquivo, modo_treinamento],
|
| 624 |
+
outputs=[resultado_output, estado_processamento],
|
| 625 |
+
_js="""() => {
|
| 626 |
+
let btn = document.querySelector('button[id*="btn_arquivo"]');
|
| 627 |
+
btn.disabled = true;
|
| 628 |
+
btn.innerText = '⏳ Corrigindo...';
|
| 629 |
+
document.querySelector('#estado_processamento textarea').value = '⏳ Processando seu arquivo...';
|
| 630 |
+
return [];
|
| 631 |
+
}"""
|
| 632 |
+
).then(
|
| 633 |
+
fn=lambda x: (x, "✅ Correção concluída!"),
|
| 634 |
+
inputs=[resultado_output],
|
| 635 |
+
outputs=[resultado_output, estado_processamento],
|
| 636 |
+
_js="""() => {
|
| 637 |
+
let btn = document.querySelector('button[id*="btn_arquivo"]');
|
| 638 |
+
btn.disabled = false;
|
| 639 |
+
btn.innerText = '🔍 Corrigir Petição (Arquivo)';
|
| 640 |
+
return [];
|
| 641 |
+
}"""
|
| 642 |
)
|
| 643 |
+
|
| 644 |
clear_btn.click(
|
| 645 |
+
fn=lambda: [None, None, None, None, "", "", "", "", "", gr.update(visible=False), gr.update(visible=False), "Aguardando..."],
|
| 646 |
inputs=None,
|
| 647 |
outputs=[caso_input, peticao_texto, peticao_arquivo, arquivo_preview, resultado_output, dica_contextual,
|
| 648 |
peticao_aluno_output, peticao_corrigida_output, resumo_alteracoes_output, criticas_output,
|
| 649 |
+
visualizacao_detalhada_output, download_btn, download_file, estado_processamento]
|
| 650 |
)
|
| 651 |
comparar_btn.click(
|
| 652 |
fn=comparar_peticao_melhorada,
|