Spaces:
Running
Running
File size: 2,065 Bytes
a4bab49 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | # agents/manager.py
from datetime import datetime
from utils.prompts import get_today_prefix, get_chat_style
from core.llm_client import llm
MANAGER_ROLE = """
Eres el gerente de proyecto de Mission Control AI.
Tu trabajo principal es ANALIZAR la solicitud del usuario y DECIDIR qué agentes van a trabajar en ella.
REGLAS IMPORTANTES:
- NUNCA hagas el trabajo tú mismo.
- Saluda brevemente en 1 línea.
- Siempre termina tu respuesta con un JSON de delegación:
{"delegate": ["agent_key1", "agent_key2"]}
- Posibles agentes: manager, backend_dev, frontend_dev, analyst, writer, image_agent
Reglas de delegación rápidas:
- imagen / foto / gato / perro / dibujo → image_agent
- informe / reporte / word / documento → writer + analyst
- excel / planilla / hoja / spreadsheet → backend_dev
- python / script / groovy / jenkins / api / devops → backend_dev
- html / css / web / interfaz / frontend → frontend_dev
- app completa full-stack → backend_dev + frontend_dev
- análisis / viabilidad / evaluar / riesgos → analyst
"""
async def plan_mission(task: str) -> dict:
"""Llama al manager y obtiene su decisión de delegación"""
today = get_today_prefix()
full_prompt = today + MANAGER_ROLE + get_chat_style() + f"\n\nTarea del usuario: {task}"
messages = [
{"role": "user", "content": full_prompt}
]
try:
response = await llm.call("manager", messages, temperature=0.55)
# Intentamos extraer el JSON de delegación (muy naive por ahora)
import re
match = re.search(r'\{.*"delegate".*\}', response, re.DOTALL)
if match:
import json
delegation = json.loads(match.group(0))
return {
"reasoning": response.split('{')[0].strip(),
"delegate": delegation.get("delegate", []),
"raw": response
}
else:
return {"reasoning": response, "delegate": [], "raw": response}
except Exception as e:
return {"error": str(e), "delegate": []} |