Parte: 10 — Sistemas multiagente e interoperabilidad
Nivel: experto · Horas estimadas: 6
Laboratorio: multiagent · Estado: EXECUTABLE_CORE
Comprender a2a, descubrimiento e interoperabilidad dentro de la evolución de la inteligencia artificial, implementar un experimento mínimo verificable y distinguir qué parte constituye evidencia frente a una afirmación todavía no comprobada.
Al finalizar podrás:
- Explicar a2a, descubrimiento e interoperabilidad usando los conceptos
A2A,discovery,agent card,tasks. - Ejecutar el laboratorio con una semilla explícita y revisar su contrato JSON.
- Identificar al menos un supuesto, una limitación y un riesgo de aplicación.
- Comparar el enfoque con la etapa anterior de la ruta de aprendizaje.
- Producir una evidencia reproducible y una conclusión que no exceda los datos.
A2A, discovery, agent card, tasks
Con MCP (132) un agente habla con sus herramientas; falta el otro eje: agentes de distintos proveedores y organizaciones colaborando sin compartir framework, modelo ni memoria. El protocolo Agent2Agent (A2A) — anunciado por Google en abril de 2025 con decenas de socios y donado después a la Linux Foundation — estandariza ese eje: descubrimiento por Agent Card, tareas con ciclo de vida y artefactos como resultados. Junto con los contratos (131), MCP (132) y los skills (133), completa el stack de interoperabilidad que el proyecto integrador (135) ensambla.
Cada agente A2A publica un documento JSON de metadatos — típicamente en una URL
conocida (/.well-known/agent-card.json) — que declara identidad, endpoint,
capacidades y esquemas de autenticación:
{
"name": "repo-review-agent",
"description": "Evalúa la preparación de repositorios para publicación",
"url": "https://agents.example.com/a2a/v1",
"version": "1.2.0",
"capabilities": {"streaming": true, "pushNotifications": false},
"skills": [{
"id": "repo-readiness",
"name": "Revisión de preparación",
"description": "Audita calidad, seguridad y documentación de un repositorio",
"inputModes": ["text/plain"],
"outputModes": ["application/json"]
}],
"securitySchemes": {"bearer": {"type": "http", "scheme": "bearer"}}
}La Agent Card es el contrato de la clase 131 hecho protocolo: un agente cliente la lee, decide si el remoto sirve para su subtarea, negocia autenticación y sabe qué formatos puede intercambiar — todo antes del primer mensaje.
A2A modela la colaboración como tareas (tasks) con ciclo de vida explícito, sobre JSON-RPC 2.0/HTTP (con streaming vía SSE para tareas largas):
message/send → crea o continúa una tarea
estados: submitted → working → [input-required] → completed | failed | canceled
Task {id, contextId, status, history: [Message], artifacts: [Artifact]}
Message = turnos cliente↔agente con parts (texto, archivos, datos estructurados)
Artifact = el RESULTADO entregable de la tarea (documento, JSON, imagen)
Decisiones de diseño importantes: (1) el estado input-required formaliza que el
agente remoto puede pedir más información a mitad de tarea — la conversación
multi-turno entre agentes es parte del protocolo, no un hack; (2) los artefactos
separan el resultado entregable de la charla que lo produjo (el análogo protocolar
del payload destilado de la clase 126); (3) los agentes colaboran como cajas
opacas: no exponen su razonamiento interno, ni su memoria, ni sus herramientas —
solo tareas, mensajes y artefactos. Esa opacidad es lo que permite que dos empresas
colaboren sin revelar secretos industriales.
Regla mnemotécnica oficial: un agente usa MCP para hablar con sus herramientas (martillo, base de datos) y A2A para hablar con otros agentes (el mecánico al que le encargas la reparación). MCP integra capacidades dentro de un agente; A2A delega tareas entre agentes soberanos. Un mismo agente típicamente implementa ambos: consume tools por MCP y ofrece sus servicios por A2A.
Un agente orquestador de contrataciones delega la verificación de antecedentes a un agente externo especializado:
1. DESCUBRIR GET https://checks.example.com/.well-known/agent-card.json
→ skill "background-check", outputModes: application/json,
auth: bearer → apto para la subtarea
2. DELEGAR message/send {message: {role: "user", parts: [
{kind: "text", text: "verificar antecedentes de <candidato>"},
{kind: "data", data: {consent_id: "C-2210"}}]}}
← Task {id: "T-77", status: "working"}
3. INTERACTUAR ← status: "input-required",
message: "¿el consentimiento cubre verificación internacional?"
→ message/send (taskId T-77): "sí, adjunto alcance" → "working"
4. RESULTADO ← status: "completed",
artifacts: [{name: "informe", parts: [{kind: "data",
data: {result: "sin_hallazgos", fuentes: 4}}]}]
5. CONSUMIR el orquestador valida el artefacto contra su esquema esperado
y lo consolida con el resto de su workflow de contratación
Nótese lo que NO viajó: ni el modelo que usa el verificador, ni sus fuentes internas,
ni su prompt. Viajó una tarea, dos mensajes y un artefacto tipado. Si el remoto
hubiera tardado horas, pushNotifications habría evitado el polling.
| Dimensión | A2A | MCP (132) | Handoff interno (126) |
|---|---|---|---|
| Eje | Agente ↔ agente (pares soberanos) | Agente ↔ herramienta/contexto | Agente ↔ agente (mismo sistema) |
| Descubrimiento | Agent Card en URL conocida | tools/list tras conectar |
Registro interno |
| Unidad de trabajo | Task con ciclo de vida y artefactos | Invocación de tool (request/response) | Payload de contexto |
| Estado remoto | Opaco (caja negra) | El servidor expone primitivas | Compartible (misma organización) |
| Multi-turno | Sí (input-required) |
No en la invocación individual | Sí (devoluciones) |
| Confianza | Entre organizaciones: auth + contratos | Host controla consentimiento | Intra-sistema |
sequenceDiagram
participant O as Agente orquestador
participant R as Agente remoto (otra org)
O->>R: GET /.well-known/agent-card.json
R-->>O: Agent Card {skills, auth, modes}
Note over O: ¿sirve para la subtarea? ¿auth compatible?
O->>R: message/send (tarea + datos)
R-->>O: Task {id, status: working}
R-->>O: status: input-required (falta un dato)
O->>R: message/send (taskId, aclaración)
R-->>O: status: completed + Artifact tipado
Note over O: valida el artefacto contra su esquema y consolida
- "A2A compite con MCP." Operan en ejes ortogonales: herramientas dentro del agente (MCP) vs. delegación entre agentes soberanos (A2A); los sistemas serios usan ambos.
- Tratar al agente remoto como una función. Es una tarea con ciclo de vida:
puede tardar, pedir más datos (
input-required), fallar a medias o cancelarse; el cliente debe manejar todos esos estados. - Confundir mensajes con artefactos. La conversación es transporte; el entregable es el artefacto — consolidar desde los mensajes reintroduce el "teléfono roto".
- Confiar en la Agent Card sin verificar. La card es una declaración publicitaria: la identidad se verifica con la autenticación y la calidad con conformance tests y SLA (clase 131), no leyendo el JSON.
- Asumir memoria compartida entre pares. Cada agente es opaco; todo lo que el
remoto debe saber viaja en la tarea. El
contextIdagrupa tareas relacionadas, no crea memoria común.
Interoperar entre organizaciones añade lo que ningún protocolo resuelve por sí solo: gestión de identidad y credenciales entre dominios (¿quién emite y rota los tokens?); acuerdos legales y de datos detrás de cada delegación (el consentimiento del ejemplo); registro y auditoría de tareas cross-org para disputas; timeouts y compensaciones cuando el remoto falla a mitad de una tarea con efectos; y un registro de agentes confiables con conformance testing — la versión operativa del "no confíes en la Agent Card sin verificar".
python lab.pyEl laboratorio llama a ai_evolution.labs.run_lab("multiagent"). Esta
decisión evita 183 implementaciones divergentes: cada clase tiene un entrypoint
propio, pero los motores didácticos se prueban como una biblioteca común.
- tipo de laboratorio y semilla;
- entradas o decisiones observables;
- resultado estructurado;
- lista
evidencecon hechos que pueden inspeccionarse; - lista
limitationsque impide presentar la demo como producción.
- 📓
notebook.ipynb: recorrido guiado con la materia resumida. - ✍️
notebook_student.ipynb: ejercicios para resolver. - ✅
notebook_solution.ipynb: solución de referencia explicada.
| Criterio | Peso |
|---|---|
| Comprensión conceptual | 25 % |
| Ejecución reproducible | 25 % |
| Interpretación basada en evidencia | 25 % |
| Riesgos, límites y mejora propuesta | 25 % |
Consulta assessment.md para preguntas y criterio de aceptación.
| Síntoma | Causa probable | Corrección |
|---|---|---|
| El código corre, pero no hay conclusión | Se confundió ejecución con aprendizaje | Explica qué demuestra y qué no demuestra |
| El resultado cambia sin explicación | No se registró semilla o configuración | Conserva semilla, versión y parámetros |
| Se promete uso real | Se extrapoló desde una demo educativa | Declara entorno, datos, límites y revisión humana |
| Se copia una métrica aislada | No existe baseline ni costo de error | Añade comparación y criterio de decisión |
¿Debo usar una API comercial?
No. El núcleo funciona localmente. Las extensiones LIVE se documentan por separado.
¿El laboratorio representa una implementación industrial?
No por sí solo. Enseña el contrato y el patrón; producción exige integración,
seguridad, observabilidad, pruebas y operación.
¿Dónde profundizo?
Revisa las especializaciones enlazadas en el README raíz y la ruta siguiente.
- A2A Protocol — sitio y especificación: Agent Cards, tasks, messages y artifacts.
- Google Developers Blog — A2A: A New Era of Agent Interoperability (2025): anuncio, motivación y principios de diseño.
- Linux Foundation — Agent2Agent Protocol Project (2025): gobernanza abierta del protocolo.
- Model Context Protocol: el eje complementario agente↔herramientas.
- JSON-RPC 2.0: la capa de mensajes común a ambos protocolos.
Bloque generado por
python scripts/link_papers_to_classes.py. La fuente espapers/catalog/papers.json.
| Paper | Año | Qué desbloqueó | Miniatura |
|---|---|---|---|
| P138 · KQML como lenguaje de comunicación entre agentes | 1994 | Separa qué se dice de qué se pretende al decirlo, y con esa capa común convierte N×M integraciones punto a punto en N+M. | notebook |
Cada ficha explica el problema anterior, la matemática mínima, los límites y los errores de atribución más frecuentes. Para leerlas con método: cómo leer un paper de IA · anexos matemáticos.
Bloque generado por
python scripts/link_sources_to_classes.py. Cada obra lleva su localizador verificado ensources/bibliography.json.
Los papers dicen de dónde salió el mecanismo. Estas obras lo desarrollan con el espacio que una clase no tiene: teoría completa, demostraciones y ejercicios.
| Obra | Edición | Localizador | Papel en esta clase |
|---|---|---|---|
| Michael J. Wooldridge — An Introduction to MultiAgent Systems | 2009 | ISBN 9780471496915 | obra de referencia de la parte 10 · toda la parte |
| Russell, Stuart J. y Norvig, Peter — Artificial Intelligence: A Modern Approach | 4.ª · 2020 | ISBN 9780134610993 · web de la obra | obra de referencia de la parte 10 · decisión multiagente y teoría de juegos |
Normas y documentación oficial que aplica esta clase: A2A Protocol · Model Context Protocol