Phase 14 - Lesson 14
AutoGen v0.4: Modelo de Actores y Framework de Agentes
AutoGen v0.4 (Microsoft Research, ene. 2025) rediseñó la orquestación de agentes en torno al modelo de actores. Intercambio de mensajes asíncrono, agentes orientados a eventos, aislamiento de fallas, concurrencia natural. El framework se encuentra ahora en modo de mantenimiento mientras Microsoft Agent Framework (public preview oct. 2025) se convierte en el sucesor.
Tipo: Aprender + Construir Lenguajes: Python (stdlib) Prerrequisitos: Phase 14 · 01 (Agent Loop), Phase 14 · 12 (Workflow Patterns) Tiempo: ~75 minutos
Objetivos de Aprendizaje
- Describir el modelo de actores: agentes como actores, mensajes como la única IPC, aislamiento de fallas por actor.
- Nombrar las tres capas de la API de AutoGen v0.4 — Core, AgentChat y Extensions — y para qué sirve cada una.
- Explicar por qué desacoplar la entrega de mensajes de su procesamiento proporciona aislamiento de fallas y concurrencia natural.
- Implementar un runtime de actores de la stdlib en Python y portar un flujo de revisión de código de dos agentes sobre él.
El Problema
La mayoría de los frameworks de agentes son síncronos: un agente produce, otro agente consume, en una pila de llamadas. Las fallas bloquean la pila. La concurrencia se añade de manera forzada. La distribución requiere reescribir el código.
La respuesta de AutoGen v0.4: el modelo de actores. Cada agente es un actor con una bandeja de entrada privada. Los mensajes son la única forma de interacción. El runtime desacopla la entrega del procesamiento. Las fallas se aíslan a un solo actor. La concurrencia es nativa. La distribución es solo un transporte diferente.
El Concepto
Actores
Un actor tiene:
- Un estado privado (nunca se accede directamente desde fuera).
- Una bandeja de entrada (fila de mensajes).
- Un handler:
receive(message) -> effectsdonde los efectos pueden ser "responder", "enviar a otro actor", "crear nuevo actor", "actualizar estado", "detenerse a sí mismo".
Dos actores no pueden compartir memoria. Solo pueden enviar mensajes.
Tres capas de la API en AutoGen v0.4
- Core. Framework de actores de bajo nivel.
AgentRuntime,Agent,Message,Topic. Intercambio de mensajes asíncrono, orientado a eventos. - AgentChat. API de alto nivel orientada a tareas (reemplazo de ConversableAgent de v0.2).
AssistantAgent,UserProxyAgent,RoundRobinGroupChat,SelectorGroupChat. - Extensions. Integraciones: OpenAI, Anthropic, Azure, herramientas, memoria.
Por qué es importante el desacoplamiento
En el modelo v0.2, llamar a agent_a.chat(agent_b) bloquea a agent_a de forma síncrona hasta que agent_b retorna. En v0.4, send(agent_b, msg) coloca el mensaje en la bandeja de entrada de agent_b y retorna. El runtime lo entrega más tarde. Tres consecuencias:
- Aislamiento de fallas. Si el Agente B falla, no provoca la caída del Agente A; el runtime captura la falla en el handler de B y decide qué hacer (registrar en el log, reintentar, dead-letter).
- Concurrencia natural. Muchos mensajes en tránsito a la vez; los actores procesan sus bandejas de entrada de forma concurrente.
- Listo para distribución. La abstracción de bandeja de entrada + transporte es la misma independientemente de si el actor está en el mismo proceso o en otro host.
Topologías
- RoundRobinGroupChat. Los agentes se turnan en una rotación fija.
- SelectorGroupChat. Un agente selector elige quién va a continuación según el contexto de la conversación.
- Magentic-One. Equipo de referencia de múltiples agentes para navegación web, ejecución de código y manejo de archivos. Construido sobre AgentChat.
Observabilidad
El soporte de OpenTelemetry está integrado. Cada mensaje emite un span; las llamadas a herramientas contienen atributos gen_ai.* según las convenciones semánticas de GenAI de OTel de 2026 (Lección 23).
Estado: modo de mantenimiento
A principios de 2026: AutoGen v0.7.x es estable para investigación y prototipado. Microsoft ha trasladado el desarrollo activo a Microsoft Agent Framework (public preview el 1 de octubre de 2025; 1.0 GA previsto para finales del Q1 de 2026). Los patrones de AutoGen se portan de forma directa: el modelo de actores es la idea duradera.
Constrúyelo
code/main.py implementa un runtime de actores de la stdlib:
Message— payload tipado consender,recipient,topic,body.Actor— clase abstracta conreceive(message, runtime).Runtime— loop de eventos con una fila compartida, entrega y aislamiento de fallas.- Un demo de dos actores:
ReviewerAgentrevisa el código,ChecklistAgentejecuta una lista de verificación (checklist); intercambian mensajes hasta llegar a un consenso.
Ejecútelo:
python3 code/main.py
El rastreo muestra la entrega de mensajes, una falla simulada en un actor que no causa la caída del otro y la convergencia en un veredicto compartido.
Úselo
- AutoGen v0.4/v0.7 (mantenimiento) — estable para investigación, prototipado y patrones multiagente.
- Microsoft Agent Framework (public preview) — el camino a seguir; las mismas ideas de modelo de actores en una API renovada.
- Topología swarm de LangGraph (Lección 13) — patrón similar mediante transferencias de herramientas compartidas.
- Runtime de actores personalizado — cuando necesita un transporte específico (NATS, RabbitMQ, gRPC).
Entréguelo
outputs/skill-actor-runtime.md genera un runtime de actores minimalista y una plantilla de equipo (RoundRobin o Selector) para una tarea multiagente determinada.
Ejercicios
- Agregue una cola de mensajes no entregados (dead-letter queue): cuando un handler lance una excepción, estacione el mensaje fallido para inspección humana. ¿Con qué frecuencia se activa la DLQ en su prototipo de juguete?
- Implemente
SelectorGroupChat: un actor selector elige quién procesa el siguiente mensaje en función del estado de la conversación. - Agregue transporte distribuido: reemplace la cola interna del proceso por un servidor JSON sobre HTTP para que los actores puedan ejecutarse en procesos separados.
- Conecte un span de OTel por mensaje (or un sustituto ficticio). Emita
gen_ai.agent.name,gen_ai.operation.namesegún la Lección 23. - Lea la publicación de arquitectura de AutoGen v0.4. Porte su prototipo a la API real de
autogen_core. ¿Qué omitió que sea importante en producción?
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| Actor | "Agente" | Estado privado + bandeja de entrada + handler; sin memoria compartida |
| Mensaje | "Evento" | Payload tipado; la única forma en que los actores interactúan |
| Bandeja de entrada | "Buzón" | Fila por actor de mensajes pendientes |
| Runtime | "Host de agentes" | Loop de eventos que enruta mensajes y aísla fallas |
| Tema | "Canal" | Ruta de publicación-suscripción nombrada entre actores |
| Aislamiento de fallas | "Dejar que falle" (Let it crash) | La falla de un actor no provoca la caída de los demás |
| RoundRobinGroupChat | "Equipo de rotación fija" | Los agentes se turnan en orden |
| SelectorGroupChat | "Equipo enrutado por contexto" | El selector elige quién va a continuación |
| Magentic-One | "Equipo de referencia" | Escuadrón de múltiples agentes para web + código + archivos |
Lectura Adicional
- AutoGen v0.4, Microsoft Research — la publicación del rediseño
- Visão geral de LangGraph — alternativa basada en grafos
- Convenciones semánticas de GenAI de OpenTelemetry — spans que AutoGen emite por defecto