letxinet / modules /config /agents_tab.py
C2MV's picture
Initial upload for Build Small Hackathon
68fb5e2 verified
Raw
History Blame Contribute Delete
8.74 kB
import gradio as gr
import json
import os
AGENT_PROFILES = {
"general": {"title": "Investigador General", "instruction": "Realiza una s铆ntesis integral y EXTENSA cubriendo todos los aspectos del tema. Cada p谩rrafo debe ser denso en informaci贸n t茅cnica. Analiza la convergencia y divergencia de los estudios citados con profundidad doctoral.\n\nCITAS OBLIGATORIAS: Toda afirmaci贸n debe citar su fuente usando el formato [[n]] {{BIB:ID}}.\n\nADAPTABILIDAD: Si la consulta es una tesis, sigue una estructura acad茅mica estricta."},
"auto": {"title": "Agente Aut贸nomo (Red Din谩mica)", "instruction": "ERES UN AGENTE AUT脫NOMO DE ALTA CAPACIDAD.\nTU OBJETIVO PRINCIPAL: Organizar y sintetizar la TOTALIDAD de los documentos encontrados en una estructura l贸gica y coherente creada por ti mismo.\n\nINSTRUCCIONES CR脥TICAS:\n1. NO USES ESTRUCTURAS PREFABRICADAS. Crea tus propias secciones.\n2. COBERTURA TOTAL: Debes incluir y citar CADA UNO de los documentos relevantes.\n3. ORGANIZACI脫N INTELIGENTE: Agrupa los estudios por similitud tem谩tica.\n4. REFERENCIAS: Cada afirmaci贸n con [[n]] {{BIB:ID}}.\n5. FORMATO PRO: Reporte denso, acad茅mico y detallado."},
"antecedentes": {"title": "Arquitecto de Antecedentes de Tesis", "instruction": "GENERA LA SECCI脫N 'ANTECEDENTES' PARA UNA TESIS DE GRADO.\n\nESTRUCTURA OBLIGATORIA:\n\\subsection{Antecedentes Internacionales}\nM脥NIMO 3 estudios de pa铆ses distintos al detectado.\n\\subsection{Antecedentes Nacionales}\nM脥NIMO 3 estudios del PA脥S detectado.\n\\subsection{Antecedentes Locales}\nM脥NIMO 3 estudios de la REGI脫N o CIUDAD detectada.\n\nFORMATO: '[Apellido] ([A帽o]), en su tesis titulada '[T铆tulo]' de la [Universidad], tuvo como objetivo [objetivo]. Los resultados indicaron [hallazgos]. Concluy贸 que [conclusi贸n]. [[n]] {{BIB:ID}}'"},
"teorico": {"title": "Te贸rico Cient铆fico", "instruction": "Enf贸cate en bases epistemol贸gicas, definiciones fundamentales y marcos conceptuales de forma MUY DETALLADA.\nExplica los mecanismos subyacentes con precisi贸n doctrinal absoluta.\n\nCITAS OBLIGATORIAS: Toda afirmaci贸n debe citar su fuente usando [[n]] {{BIB:ID}}."},
"metodologo": {"title": "Arquitecto de Metodolog铆a de Tesis", "instruction": "Genera la secci贸n de METODOLOG脥A completa para una tesis de grado.\n\nESTRUCTURA OBLIGATORIA:\n\\subsection{Dise帽o de la Investigaci贸n}\n\\subsection{Poblaci贸n y Muestra}\n\\subsection{Variables de Investigaci贸n}\n\\subsection{T茅cnicas e Instrumentos}\n\nREGLAS: Citar metod贸logos con [[n]] {{BIB:ID}}. Extensi贸n m铆nima: 2-3 p谩rrafos por subsecci贸n."},
"hipotesis": {"title": "Estratega de Hip贸tesis Cient铆ficas", "instruction": "Genera la secci贸n de HIP脫TESIS.\n\nESTRUCTURA:\n\\subsection{Hip贸tesis General}\n\\subsection{Hip贸tesis Espec铆ficas}\n\nREGLAS: Hip贸tesis contrastables. Basadas en evidencia. Citas [[n]] {{BIB:ID}}."},
"objetivos": {"title": "Arquitecto de Objetivos de Investigaci贸n", "instruction": "Genera los OBJETIVOS.\n\nESTRUCTURA:\n\\subsection{Objetivo General}\n\\subsection{Objetivos Espec铆ficos}\n\nREGLAS: Verbos en infinitivo. Coherencia con planteamiento."},
"resultados": {"title": "Analista de Resultados", "instruction": "Sintetiza hallazgos cuantitativos y cualitativos de forma EXHAUSTIVA.\n\nENFOQUE: Discusi贸n, qu茅 dicen los datos, qu茅 falta por investigar.\nCITAS: Toda cifra con [[n]] {{BIB:ID}}."},
"problema": {"title": "Arquitecto de Planteamiento del Problema", "instruction": "Genera PLANTEAMIENTO DEL PROBLEMA.\n\nESTRUCTURA:\n\\subsection{Realidad Problem谩tica}\n\\subsection{Formulaci贸n del Problema}\n\nREGLAS: Contexto global/nacional/local. Citas [[n]] {{BIB:ID}}. M铆nimo 4-5 p谩rrafos."},
"justificacion": {"title": "Arquitecto de Justificaci贸n e Importancia", "instruction": "Genera JUSTIFICACI脫N E IMPORTANCIA.\n\nESTRUCTURA:\n\\subsection{Importancia}\n\\subsection{Justificaci贸n (Te贸rica, Pr谩ctica, Social, Metodol贸gica)}\n\nREGLAS: M铆nimo 2 p谩rrafos por tipo. Citas [[n]] {{BIB:ID}}."},
"marco_teorico": {"title": "Arquitecto de Marco Te贸rico para Tesis", "instruction": "Genera MARCO TE脫RICO completo.\n\nESTRUCTURA:\n1. ANTECEDENTES\n2. BASES TE脫RICAS DE LAS VARIABLES\n3. AN脕LISIS DE DIMENSIONES\n4. DEFINICI脫N DE T脡RMINOS B脕SICOS\n\nREGLAS: \\subsection{} y \\subsubsection{}. Citas [[n]] {{BIB:ID}}. M铆nimo 3-4 p谩rrafos por subsecci贸n."},
"comunicacion": {"title": "Estratega de Comunicaci贸n Digital", "instruction": "Especialista en an谩lisis de audiencias, engagement y marketing.\n\nENFOQUE: Conectar teor铆a de comunicaci贸n con m茅tricas.\nCITAS: [[n]] {{BIB:ID}}."},
}
PROMPT_KEYS_FOR_UI = [
{"key": "researchQueryOptimizerPrompt", "label": "Query Optimizer", "description": "Genera queries booleanos y sem谩nticos para b煤squeda acad茅mica"},
{"key": "researchPlanningPrompt", "label": "Planning", "description": "Genera plan de investigaci贸n estructurado en JSON"},
{"key": "researchMasterPrompt", "label": "Master Prompt", "description": "Prompt maestro de s铆ntesis doctoral"},
{"key": "researchWritingPrompt", "label": "Writing", "description": "Redacci贸n de secciones individuales"},
{"key": "researchGradePrompt", "label": "GRADE", "description": "Clasificaci贸n de evidencia seg煤n protocolo GRADE"},
{"key": "researchAuditPrompt", "label": "Audit", "description": "Auditor铆a t茅cnica de calidad acad茅mica"},
{"key": "researchAraPrompt", "label": "ARA+ Refinement", "description": "Refinamiento acad茅mico avanzado"},
{"key": "researchStandardValidationPrompt", "label": "Validaci贸n", "description": "Validaci贸n de citas bibliogr谩ficas"},
{"key": "researchGapDetectionPrompt", "label": "Gap Detection", "description": "Detecci贸n de vac铆os de informaci贸n"},
{"key": "researchRescuePrompt", "label": "Query Rescate", "description": "Queries de rescate para vac铆os"},
{"key": "researchSearchContextPrompt", "label": "Contexto B煤squeda", "description": "Contexto para evitar redundancia"},
{"key": "researchHierarchicalDistillationPrompt", "label": "Destilaci贸n Jer谩rquica", "description": "Destilaci贸n de hallazgos (Map-Reduce)"},
{"key": "researchHierarchicalSynthesisPrompt", "label": "S铆ntesis Jer谩rquica", "description": "S铆ntesis de evidencia destilada"},
{"key": "researchTranslationPrompt", "label": "Traducci贸n", "description": "Traducci贸n acad茅mica estricta"},
{"key": "researchFinalReportPrompt", "label": "Reporte Final", "description": "Formato de reporte final"},
]
def create_agents_tab():
with gr.Tab("馃懃 Agentes", id="agents"):
gr.Markdown("## 馃懃 Configuraci贸n de Agentes")
gr.Markdown("Personaliza el rol, perfil doctoral y preset del agente investigador")
with gr.Row():
with gr.Column(scale=2):
agent_role = gr.Dropdown(
choices=list(AGENT_PROFILES.keys()),
value="general", label="Perfil del Agente"
)
agent_title = gr.Textbox(
value="Investigador General", label="T铆tulo del Agente", interactive=False
)
agent_instruction = gr.Textbox(
value=AGENT_PROFILES["general"]["instruction"],
label="Instrucci贸n del Agente", lines=15
)
with gr.Row():
restore_btn = gr.Button("馃攧 Restaurar Perfil", variant="secondary")
structure_mode = gr.Radio(
choices=["LIBRE", "ESTRICTO"], value="LIBRE",
label="Modo Estructura"
)
def update_profile(role):
profile = AGENT_PROFILES.get(role, AGENT_PROFILES["general"])
return profile["title"], profile["instruction"]
agent_role.change(fn=update_profile, inputs=[agent_role], outputs=[agent_title, agent_instruction])
restore_btn.click(fn=update_profile, inputs=[agent_role], outputs=[agent_title, agent_instruction])
with gr.Column(scale=3):
gr.Markdown("### Modo Estructura")
gr.Markdown("""
**LIBRE:** La IA crea libremente las secciones seg煤n el contenido y variables detectadas.
**ESTRICTO:** Solo se pueden usar las secciones de una plantilla predefinida. El contenido se adapta pero la estructura es fija.
""")
gr.Markdown("### Perfiles Disponibles")
for key, profile in AGENT_PROFILES.items():
gr.Markdown(f"- **{key}**: {profile['title']}")
return agent_role, agent_instruction, structure_mode