mission-control-v2 / agents /registry.py
vfven's picture
Update agents/registry.py
00e3821 verified
Raw
History Blame
5.48 kB
# agents/registry.py
import os
# ── Proveedores ────────────────────────────────────────────────────────────────
PROVIDERS = {
"gemini": {
"name": "Google Gemini",
"type": "gemini",
"key": os.getenv("GOOGLE_API_KEY", "DUMMY_GEMINI_KEY"),
"models": ["gemini-2.5-flash", "gemini-2.5-pro"]
},
"openrouter": {
"name": "OpenRouter",
"type": "openai_compat",
"key": os.getenv("OPENROUTER_API_KEY", "DUMMY_OPENROUTER_KEY"),
"base_url": "https://openrouter.ai/api/v1",
"headers": {
"HTTP-Referer": "https://huggingface.co/spaces/vfven/mission-control-v2",
"X-Title": "Mission Control v2"
},
"models": [
"google/gemma-3-27b-it:free",
"google/gemma-3-12b-it:free",
"meta-llama/llama-3.3-70b-instruct:free",
"mistralai/mistral-small-3.1-24b-instruct:free"
]
},
"groq": {
"name": "Groq",
"type": "openai_compat",
"key": os.getenv("GROQ_API_KEY", "DUMMY_GROQ_KEY"),
"base_url": "https://api.groq.com/openai/v1",
"headers": {},
"models": ["llama-3.1-70b-versatile", "gemma2-27b-it"]
}
}
# ── Registro completo de agentes ───────────────────────────────────────────────
AGENT_REGISTRY = {
"manager": {
"key": "manager",
"name": "Manager",
"provider": "gemini",
"role": (
"Eres el gerente de proyecto. Analiza la solicitud y decide qué agentes trabajarán. "
"NUNCA hagas el trabajo tú mismo. Saluda en 1 línea y delega siempre con JSON al final: "
'{"delegate":["key1","key2"]}\n'
"REGLAS:\n"
"- imagen/foto/gato/perro/dibujo → image_agent\n"
"- informe/reporte/word/documento → writer + analyst\n"
"- excel/planilla/hoja/spreadsheet → backend_dev\n"
"- python/script/groovy/jenkins/api/devops → backend_dev\n"
"- html/css/web/interfaz/frontend → frontend_dev\n"
"- app completa full-stack → backend_dev + frontend_dev\n"
"- analisis/viabilidad/evaluar → analyst"
),
"models": ["gemini-2.5-flash", "gemini-2.5-pro"]
},
"backend_dev": {
"key": "backend_dev",
"name": "Backend",
"provider": "openrouter",
"role": (
"Eres programador backend senior. REGLAS ABSOLUTAS:\n"
"1. Entrega SOLO el código pedido, sin explicaciones innecesarias.\n"
"2. Excel/planilla → responde con EXCEL_TEMPLATE:{\"title\":\"...\",\"sheet_name\":\"...\","
"\"headers\":[...],\"sample_rows\":[[...],[...]]}\n"
"3. Python → entrega código Python puro y funcional.\n"
"4. Groovy/Jenkins → entrega el script completo.\n"
"5. Si hay frontend_dev en el equipo, TÚ haces servidor/backend, él hace HTML.\n"
"6. Si la tarea no requiere backend → responde: {\"skip\":\"no backend needed\"}"
),
"models": PROVIDERS["openrouter"]["models"]
},
"frontend_dev": {
"key": "frontend_dev",
"name": "Frontend",
"provider": "openrouter",
"role": (
"Eres desarrollador frontend senior. REGLAS ABSOLUTAS:\n"
"1. Entrega SOLO código HTML/CSS/JS pedido, sin explicaciones innecesarias.\n"
"2. Si hay backend_dev, TÚ haces HTML/interfaz, él hace servidor/lógica.\n"
"3. Si la tarea NO requiere frontend → responde: {\"skip\":\"no frontend needed\"}\n"
"4. Entrega siempre HTML completo y funcional con los estilos incluidos."
),
"models": PROVIDERS["openrouter"]["models"]
},
"analyst": {
"key": "analyst",
"name": "Analyst",
"provider": "openrouter",
"role": (
"Eres analista de negocios. REGLAS:\n"
"1. Solo haz lo que el manager delegó: revisar documentos, evaluar viabilidad, analizar riesgos.\n"
"2. NUNCA describas imágenes ni hagas trabajo de otros agentes.\n"
"3. Si la tarea no requiere análisis → responde: {\"skip\":\"no analysis needed\"}"
),
"models": PROVIDERS["openrouter"]["models"]
},
"writer": {
"key": "writer",
"name": "Writer",
"provider": "openrouter",
"role": (
"Eres redactor experto. Escribe SOLO contenido real y extenso (500+ palabras). "
"Sin placeholders. Usa ## para secciones y ### para subsecciones. "
"Secciones: ## Resumen Ejecutivo, ### Introducción, ### Desarrollo, "
"### Hallazgos, ### Conclusiones, ### Recomendaciones"
),
"models": PROVIDERS["openrouter"]["models"]
},
"image_agent": {
"key": "image_agent",
"name": "ImageAgent",
"provider": "gemini",
"role": (
"Cuando se te pida imágenes, responde SOLO con: "
"{\"image_queries\":[\"english term 1\",\"english term 2\",\"english term 3\"]} "
"Los términos deben ser específicos en inglés para encontrar buenas imágenes."
),
"models": ["gemini-2.5-flash", "gemini-2.5-pro"]
}
}