Update app.py
Browse files
app.py
CHANGED
|
@@ -32,7 +32,7 @@ CONFIG = {
|
|
| 32 |
"retry_delay": 5,
|
| 33 |
"timeout": 60,
|
| 34 |
"temperatura": 0.2,
|
| 35 |
-
"max_tokens":
|
| 36 |
}
|
| 37 |
|
| 38 |
rate_limiter = RateLimiter(max_calls=60, period=60)
|
|
@@ -284,7 +284,7 @@ def estruturar_prompt_correcao(caso, peticao, modo_treinamento=False):
|
|
| 284 |
**Nota Final:** Calcule a soma dos pontos, aplicando penalizações cumulativas conforme os critérios fundamentais; justifique qualquer desconto adicional.
|
| 285 |
|
| 286 |
### Petição Corrigida
|
| 287 |
-
Forneça a petição do aluno reescrita com todas as correções aplicadas, incluindo partes omitidas (como pedidos ou custas) e ajustando erros identificados. Siga rigorosamente:
|
| 288 |
1. Endereçamento correto (com foro justificado por CPC ou CDC).
|
| 289 |
2. Qualificação completa (Art. 319, II, CPC; use "XXX" para dados ausentes).
|
| 290 |
3. Fatos claros e fiéis ao caso (Art. 319, III, CPC).
|
|
@@ -416,6 +416,10 @@ def corrigir_peticao(caso, peticao_texto=None, peticao_arquivo=None, modo_treina
|
|
| 416 |
continue
|
| 417 |
return aviso_validacao + "❌ A API retornou uma resposta vazia. Tente novamente."
|
| 418 |
correcao_completa = response_data["candidates"][0]["content"]["parts"][0]["text"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 419 |
if "### Petição Corrigida" in correcao_completa:
|
| 420 |
analise_fim = correcao_completa.index("### Petição Corrigida")
|
| 421 |
analise = correcao_completa[:analise_fim].strip()
|
|
@@ -468,7 +472,7 @@ def formatar_correcao(texto):
|
|
| 468 |
if "Nota Final" in texto_formatado:
|
| 469 |
import re
|
| 470 |
nota_pattern = r"### Nota Final.*?(\d+[.,]\d+|\d+)"
|
| 471 |
-
match = re.search(nota_pattern,
|
| 472 |
if match:
|
| 473 |
nota = match.group(1)
|
| 474 |
texto_formatado = texto_formatado.replace(f"### ⭐ Nota Final\n\n{nota}", f"### ⭐ Nota Final: {nota}/10\n\n")
|
|
@@ -476,6 +480,7 @@ def formatar_correcao(texto):
|
|
| 476 |
|
| 477 |
def extrair_peticao_corrigida(correcao_completa):
|
| 478 |
try:
|
|
|
|
| 479 |
if "### Petição Corrigida" in correcao_completa:
|
| 480 |
inicio = correcao_completa.index("### Petição Corrigida") + len("### Petição Corrigida")
|
| 481 |
peticao_texto = correcao_completa[inicio:].strip()
|
|
@@ -483,6 +488,16 @@ def extrair_peticao_corrigida(correcao_completa):
|
|
| 483 |
peticao_texto = peticao_texto[:fim].strip()
|
| 484 |
return peticao_texto
|
| 485 |
else:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 486 |
return "⚠️ A seção '### Petição Corrigida' não foi encontrada na resposta da API. Verifique a resposta e tente novamente."
|
| 487 |
except Exception as e:
|
| 488 |
return f"❌ Erro ao extrair petição corrigida: {str(e)}"
|
|
|
|
| 32 |
"retry_delay": 5,
|
| 33 |
"timeout": 60,
|
| 34 |
"temperatura": 0.2,
|
| 35 |
+
"max_tokens": 8000 # Aumentado para 8000 para garantir que a resposta completa caiba
|
| 36 |
}
|
| 37 |
|
| 38 |
rate_limiter = RateLimiter(max_calls=60, period=60)
|
|
|
|
| 284 |
**Nota Final:** Calcule a soma dos pontos, aplicando penalizações cumulativas conforme os critérios fundamentais; justifique qualquer desconto adicional.
|
| 285 |
|
| 286 |
### Petição Corrigida
|
| 287 |
+
Certifique-se de incluir esta seção exatamente como '### Petição Corrigida'. Forneça a petição do aluno reescrita com todas as correções aplicadas, incluindo partes omitidas (como pedidos ou custas) e ajustando erros identificados. Siga rigorosamente:
|
| 288 |
1. Endereçamento correto (com foro justificado por CPC ou CDC).
|
| 289 |
2. Qualificação completa (Art. 319, II, CPC; use "XXX" para dados ausentes).
|
| 290 |
3. Fatos claros e fiéis ao caso (Art. 319, III, CPC).
|
|
|
|
| 416 |
continue
|
| 417 |
return aviso_validacao + "❌ A API retornou uma resposta vazia. Tente novamente."
|
| 418 |
correcao_completa = response_data["candidates"][0]["content"]["parts"][0]["text"]
|
| 419 |
+
# Debug: Inspeciona a resposta se a seção esperada não estiver presente
|
| 420 |
+
if "### Petição Corrigida" not in correcao_completa:
|
| 421 |
+
print("Debug: Resposta da API não contém '### Petição Corrigida'. Resposta completa (primeiros 1000 caracteres):")
|
| 422 |
+
print(correcao_completa[:1000])
|
| 423 |
if "### Petição Corrigida" in correcao_completa:
|
| 424 |
analise_fim = correcao_completa.index("### Petição Corrigida")
|
| 425 |
analise = correcao_completa[:analise_fim].strip()
|
|
|
|
| 472 |
if "Nota Final" in texto_formatado:
|
| 473 |
import re
|
| 474 |
nota_pattern = r"### Nota Final.*?(\d+[.,]\d+|\d+)"
|
| 475 |
+
match = re.search(nota_pattern, texto_formatada, re.DOTALL)
|
| 476 |
if match:
|
| 477 |
nota = match.group(1)
|
| 478 |
texto_formatado = texto_formatado.replace(f"### ⭐ Nota Final\n\n{nota}", f"### ⭐ Nota Final: {nota}/10\n\n")
|
|
|
|
| 480 |
|
| 481 |
def extrair_peticao_corrigida(correcao_completa):
|
| 482 |
try:
|
| 483 |
+
# Tenta encontrar a seção exata
|
| 484 |
if "### Petição Corrigida" in correcao_completa:
|
| 485 |
inicio = correcao_completa.index("### Petição Corrigida") + len("### Petição Corrigida")
|
| 486 |
peticao_texto = correcao_completa[inicio:].strip()
|
|
|
|
| 488 |
peticao_texto = peticao_texto[:fim].strip()
|
| 489 |
return peticao_texto
|
| 490 |
else:
|
| 491 |
+
# Fallback: tenta identificar o início da petição corrigida por padrões comuns
|
| 492 |
+
linhas = correcao_completa.split('\n')
|
| 493 |
+
inicio_peticao = -1
|
| 494 |
+
for i, linha in enumerate(linhas):
|
| 495 |
+
if "EXCELENTÍSSIMO" in linha.upper() and i > len(linhas) // 2: # Assume que a petição corrigida vem após a análise
|
| 496 |
+
inicio_peticao = i
|
| 497 |
+
break
|
| 498 |
+
if inicio_peticao != -1:
|
| 499 |
+
peticao_texto = "\n".join(linhas[inicio_peticao:]).strip()
|
| 500 |
+
return peticao_texto
|
| 501 |
return "⚠️ A seção '### Petição Corrigida' não foi encontrada na resposta da API. Verifique a resposta e tente novamente."
|
| 502 |
except Exception as e:
|
| 503 |
return f"❌ Erro ao extrair petição corrigida: {str(e)}"
|