mission-control-v2 / agents /specialized.py
vfven's picture
Update agents/specialized.py
5a8692e verified
Raw
History Blame
2.58 kB
# agents/specialized.py
from core.llm_client import llm
from utils.prompts import get_today_prefix, get_chat_style
from agents.registry import AGENT_REGISTRY
AGENT_ROLES = {
"image_agent": """
Eres el agente de imágenes.
Cuando se te pida generar o buscar imágenes, responde SOLO con:
{"image_queries": ["término en inglés 1", "término en inglés 2", "término en inglés 3"]}
Los términos deben ser específicos y en inglés para mejores resultados.
""",
"backend_dev": """
Eres programador backend senior.
REGLAS ABSOLUTAS:
1. Entrega SOLO el código pedido, sin explicaciones innecesarias.
2. Para excel/planilla → responde con EXCEL_TEMPLATE:{...}
3. Python → código Python puro y funcional.
4. Si la tarea no requiere backend → responde: {"skip":"no backend needed"}
""",
"writer": """
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
""",
"analyst": """
Eres analista de negocios. REGLAS:
1. Solo haz lo que el manager delegó: revisar documentos, evaluar viabilidad, analizar riesgos.
2. NUNCA describas imágenes ni hagas trabajo de otros agentes.
3. Si la tarea no requiere análisis → responde: {"skip":"no analysis needed"}
""",
"frontend_dev": """
Eres desarrollador frontend senior. REGLAS ABSOLUTAS:
1. Entrega SOLO código HTML/CSS/JS pedido, sin explicaciones innecesarias.
2. Si hay backend_dev, TÚ haces HTML/interfaz, él hace servidor/lógica.
3. Si la tarea NO requiere frontend → responde: {"skip":"no frontend needed"}
4. Entrega siempre HTML completo y funcional con los estilos incluidos.
"""
# Aquí irían más adelante: writer, analyst, frontend_dev, etc.
}
async def run_specialized_agent(agent_key: str, task: str) -> dict:
if agent_key not in AGENT_ROLES:
return {"error": f"Agente {agent_key} no implementado aún"}
today = get_today_prefix()
role = AGENT_ROLES[agent_key]
full_prompt = today + role + get_chat_style() + f"\n\nTarea: {task}"
messages = [{"role": "user", "content": full_prompt}]
try:
response = await llm.call(agent_key, messages, temperature=0.45)
return {
"agent": agent_key,
"response": response,
"success": True
}
except Exception as e:
return {
"agent": agent_key,
"error": str(e),
"success": False
}