¿Qué hace AG2 (AutoGen) — Marco de Conversación Multi-Agente?
Eres un experto en AG2 (anteriormente AutoGen), el framework de conversación multi-agente de código abierto. Ayudas a los desarrolladores a construir sistemas donde múltiples agentes de IA colaboran a través de conversaciones estructuradas — con herramientas, supervisión humana, ejecución de código, orquestación de chat grupal y conversaciones anidadas — para tareas complejas como desarrollo de software, investigación y análisis de datos.
Capacidades Principales
Conversación de Dos Agentes
from autogen import ConversableAgent, UserProxyAgent
# Agente asistente de IA
assistant = ConversableAgent(
name="Engineer",
system_message="""Eres un ingeniero de software senior.
Escribe código Python limpio y probado. Explica tus decisiones de diseño.""",
llm_config={"model": "gpt-4o", "temperature": 0.2},
)
# Proxy humano (puede auto-aprobar o requerir entrada humana)
user_proxy = UserProxyAgent(
name="User",
human_input_mode="NEVER", # NEVER / ALWAYS / TERMINATE
max_consecutive_auto_reply=10,
is_termination_msg=lambda msg: "TERMINATE" in msg.get("content", ""),
code_execution_config={
"work_dir": "workspace",
"use_docker": True, # Ejecución segura de código en Docker
},
)
# Iniciar conversación — los agentes hablan hasta que la tarea está completa
result = user_proxy.initiate_chat(
assistant,
message="Crea una aplicación FastAPI con autenticación de usuario usando JWT. Incluye pruebas.",
)
# El ingeniero escribe código → El proxy de usuario ejecuta → El ingeniero revisa la salida → Itera
Chat Grupal (Múltiples Agentes)
from autogen import GroupChat, GroupChatManager
# Agentes especialistas
architect = ConversableAgent(
name="Architect",
system_message="Diseñas la arquitectura del sistema. Enfócate en escalabilidad, confiabilidad e interfaces limpias.",
llm_config={"model": "gpt-4o"},
)
developer = ConversableAgent(
name="Developer",
system_message="Implementas funcionalidades basadas en el diseño del arquitecto. Escribe código de calidad de producción.",
llm_config={"model": "gpt-4o"},
)
reviewer = ConversableAgent(
name="Reviewer",
system_message="Revisas código en busca de errores, problemas de seguridad y mejores prácticas. Sé minucioso pero constructivo.",
llm_config={"model": "gpt-4o"},
)
tester = ConversableAgent(
name="Tester",
system_message="Escribes pruebas exhaustivas. Cubre casos límite y escenarios de integración.",
llm_config={"model": "gpt-4o"},
)
# Chat grupal con selección de orador round-robin o seleccionada por IA
group_chat = GroupChat(
agents=[user_proxy, architect, developer, reviewer, tester],
messages=[],
max_round=20,
speaker_selection_method="auto", # El LLM elige el siguiente orador según el contexto
)
manager = GroupChatManager(groupchat=group_chat, llm_config={"model": "gpt-4o"})
user_proxy.initiate_chat(
manager,
message="Construye un servicio de notificaciones en tiempo real con soporte WebSocket, Redis pub/sub y limitación de tasa.",
)
# El arquitecto diseña → El desarrollador implementa → El revisor detecta problemas → El desarrollador corrige → El tester agrega pruebas
Uso de Herramientas
from autogen import register_function
def search_codebase(query: str, file_pattern: str = "*.py") -> str:
"""Buscar en el código base patrones específicos.
Args:
query: Consulta de búsqueda (regex soportado)
file_pattern: Patrón glob de archivo en el que buscar
"""
import subprocess
result = subprocess.run(["grep", "-rn", query, "--include", file_pattern, "."],
capture_output=True, text=True)
return result.stdout[:2000]
def run_tests(test_path: str = "tests/") -> str:
"""Ejecutar pytest en el directorio de pruebas especificado.
Args:
test_path: Ruta a los archivos o directorio de pruebas
"""
import subprocess
result = subprocess.run(["python", "-m", "pytest", test_path, "-v", "--tb=short"],
capture_output=True, text=True)
return f"STDOUT:\n{result.stdout}\nSTDERR:\n{result.stderr}"
# Registrar herramientas para agentes específicos
register_function(search_codebase, caller=developer, executor=user_proxy,
description="Buscar en el código base patrones de código")
register_function(run_tests, caller=tester, executor=user_proxy,
description="Ejecutar pruebas para verificar la correctitud del código")
Instalación
pip install ag2 # O: pip install pyautogen
Mejores Prácticas
- Mensajes de sistema claros — Define el rol de cada agente con precisión; las instrucciones vagas llevan a conversaciones desenfocadas
- Selección de orador — Usa
autopara oradores seleccionados por el LLM en chat grupal;round_robinpara flujo predecible - Condiciones de terminación — Establece
is_termination_msgymax_consecutive_auto_reply; previene bucles infinitos - Docker para ejecución de código — Habilita
use_docker: Truepara ejecución segura de código; los agentes pueden ejecutar código no confiable - Supervisión humana — Usa el modo
TERMINATEpara aprobación en acciones críticas;NEVERpara completamente autónomo - Registro de herramientas — Registra herramientas con pares específicos llamador/ejecutor; no todos los agentes necesitan todas las herramientas
- Chats anidados — Usa conversaciones anidadas para subtareas; un agente puede iniciar una conversación lateral y devolver resultados
- Control de costos — Establece
max_roundymax_consecutive_auto_reply; monitorea el uso de tokens en chats grupales