AniseF commited on
Commit
6c35b61
·
verified ·
1 Parent(s): 22b6a40

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -26
app.py CHANGED
@@ -11,7 +11,7 @@ button { font-size: 18px !important; }
11
  textarea { font-size: 18px !important; }
12
  """
13
 
14
- # 2. FUNÇÃO PARA SALVAR O TXT (Definida ANTES de ser usada)
15
  def salvar_txt(conteudo):
16
  """Gera um arquivo temporário para download."""
17
  if not conteudo:
@@ -26,7 +26,6 @@ def processar_analise(texto_usuario, modo, categoria_pergunta):
26
  if not texto_usuario.strip():
27
  return "Por favor, insira um texto.", "Aguardando...", None
28
 
29
- # Busca as perguntas originais (em inglês) do Google Docs
30
  url = DOCS.get(categoria_pergunta)
31
  perguntas_guia_ingles = get_doc_content(url)
32
 
@@ -52,44 +51,53 @@ def processar_analise(texto_usuario, modo, categoria_pergunta):
52
  {texto_usuario}
53
  """
54
 
55
- # Chama a IA via OpenRouter (usando a lógica de fallback do utils.py)
56
  resposta_ia, modelo_vencedor = call_openrouter(prompt_completo, modo)
57
 
58
- # Formatação da exibição final
59
  exibicao_final = f"--- RELATÓRIO DE ANÁLISE FILOLÓGICA ---\n\n{resposta_ia}"
60
-
61
- # Gera o arquivo para o componente de download (CHAMANDO A FUNÇÃO DEFINIDA NO PASSO 2)
62
  caminho_arquivo = salvar_txt(exibicao_final)
63
 
64
- return exibicao_final, f"Modelo: {modelo_vencedor}", caminho_arquivo
65
 
66
  # 4. INTERFACE GRADIO
67
  with gr.Blocks(theme=gr.themes.Soft(), css=custom_css) as demo:
68
  gr.Markdown("# 🏛️ AI for Classics: Ferramenta de Pesquisa")
69
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  with gr.Row():
71
  with gr.Column(scale=1):
72
- input_text = gr.Textbox(label="1. Texto Original (Grego/Latim)", lines=10, placeholder="Cole o texto aqui...")
73
- modo_radio = gr.Radio(["Alta Precisão (Filológico)", "Custo-Benefício (Triagem)"], label="2. Estratégia", value="Alta Precisão (Filológico)")
74
- cat_perguntas = gr.Dropdown(choices=["SYNTAX", "MORPHOLOGY", "SEMANTICS"], label="3. Protocolo", value="SYNTAX")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
 
76
  with gr.Row():
77
- btn_limpar = gr.Button("Clear/Limpar")
78
  btn_rodar = gr.Button("🚀 EXECUTAR ANÁLISE", variant="primary")
79
 
80
  with gr.Column(scale=1):
81
- output_res = gr.Textbox(label="Resultado e Análise", lines=15, interactive=False)
82
- output_model = gr.Label(label="Status")
83
- file_download = gr.File(label="Baixar resultado em .txt")
84
-
85
- # Ações dos botões
86
- btn_rodar.click(
87
- processar_analise,
88
- inputs=[input_text, modo_radio, cat_perguntas],
89
- outputs=[output_res, output_model, file_download]
90
- )
91
-
92
- btn_limpar.click(lambda: ("", "Aguardando...", None, None), outputs=[input_text, output_model, output_res, file_download])
93
-
94
- if __name__ == "__main__":
95
- demo.launch()
 
11
  textarea { font-size: 18px !important; }
12
  """
13
 
14
+ # 2. FUNÇÃO PARA SALVAR O TXT
15
  def salvar_txt(conteudo):
16
  """Gera um arquivo temporário para download."""
17
  if not conteudo:
 
26
  if not texto_usuario.strip():
27
  return "Por favor, insira um texto.", "Aguardando...", None
28
 
 
29
  url = DOCS.get(categoria_pergunta)
30
  perguntas_guia_ingles = get_doc_content(url)
31
 
 
51
  {texto_usuario}
52
  """
53
 
 
54
  resposta_ia, modelo_vencedor = call_openrouter(prompt_completo, modo)
55
 
 
56
  exibicao_final = f"--- RELATÓRIO DE ANÁLISE FILOLÓGICA ---\n\n{resposta_ia}"
 
 
57
  caminho_arquivo = salvar_txt(exibicao_final)
58
 
59
+ return exibicao_final, f"Modelo Utilizado: {modelo_vencedor}", caminho_arquivo
60
 
61
  # 4. INTERFACE GRADIO
62
  with gr.Blocks(theme=gr.themes.Soft(), css=custom_css) as demo:
63
  gr.Markdown("# 🏛️ AI for Classics: Ferramenta de Pesquisa")
64
 
65
+ # Painel informativo sobre os modelos
66
+ with gr.Accordion("ℹ️ Entenda as Estratégias e Modelos (Hierarchy/Fallback)", open=False):
67
+ gr.Markdown("""
68
+ ### Como funciona a seleção de modelos:
69
+ O sistema utiliza uma hierarquia. Se o primeiro modelo estiver fora do ar ou congestionado, o OpenRouter tentará automaticamente o próximo da lista.
70
+
71
+ | Estratégia | Hierarquia de Modelos (Ordem de tentativa) |
72
+ | :--- | :--- |
73
+ | **Alta Precisão** | 1. Claude 3.5 Sonnet | 2. GPT-4o | 3. Gemini 1.5 Pro |
74
+ | **Custo-Benefício** | 1. Gemini 1.5 Flash | 2. Command R | 3. Mistral Nemo |
75
+ """)
76
+
77
  with gr.Row():
78
  with gr.Column(scale=1):
79
+ input_text = gr.Textbox(
80
+ label="1. Texto Original (Grego/Latim)",
81
+ lines=10,
82
+ placeholder="Insira o trecho da obra clássica aqui..."
83
+ )
84
+
85
+ modo_radio = gr.Radio(
86
+ choices=["Alta Precisão (Filológico)", "Custo-Benefício (Triagem)"],
87
+ label="2. Estratégia de IA",
88
+ value="Alta Precisão (Filológico)",
89
+ info="Define a qualidade e o custo da análise (Consulte o painel informativo acima)."
90
+ )
91
+
92
+ cat_perguntas = gr.Dropdown(
93
+ choices=["SYNTAX", "MORPHOLOGY", "SEMANTICS"],
94
+ label="3. Protocolo de Pesquisa (Google Docs)",
95
+ value="SYNTAX"
96
+ )
97
 
98
  with gr.Row():
99
+ btn_limpar = gr.Button("Limpar Tudo")
100
  btn_rodar = gr.Button("🚀 EXECUTAR ANÁLISE", variant="primary")
101
 
102
  with gr.Column(scale=1):
103
+ output_res = gr.Textbox(label="Análise