El protocolo A2A, o Agent2Agent, es un estándar abierto que permite la comunicación estructurada entre agentes de IA, clientes y herramientas. En este tutorial, puede crear un sistema de agentes en el que un cliente de chat procese las consultas de los usuarios y las envíe a un agente de IA que se ejecuta en un servidor compatible con A2A.
La mayoría de las aplicaciones de IA agéntica implementan una comunicación personalizada entre componentes (por ejemplo, ChatChain de ChatDev), lo que dificulta la reutilización del mismo agente en diferentes aplicaciones o la integración de herramientas externas. Esta falta de estandarización impide la interoperabilidad y limita el desarrollo de un ecosistema de agentes más amplio.
A2A resuelve esta limitación separando la capa de comunicación de la lógica del agente a través de un protocolo estandarizado basado en HTTP, JSON-RPC 2.0 y Server-Sent Events (SSE). Este desacoplamiento permite a los agentes colaborar con otros agentes, atender solicitudes de clientes y acceder a herramientas externas sin código de integración personalizado.
A2A admite arquitecturas descentralizadas que permiten a los equipos evolucionar sus sistemas de IA de forma incremental sin romper el código del cliente. Los equipos pueden actualizar herramientas, intercambiar modelos o modificar el comportamiento de los agentes manteniendo una interfaz coherente en flujos de trabajo complejos.
Los agentes intercambian información en mensajes estructurados en formato JSON-RPC que incluyen metadatos que enriquecen las interacciones de los agentes con claridad y coherencia. Cada servidor A2A expone una AgentCard en un endpoint conocido (.well-known/agent-card.json) que describe las capacidades del agente como datos JSON estructurados. Por lo tanto, permite a los clientes descubrir dinámicamente lo que puede hacer un agente, de forma similar a como la documentación de la API describe los endpoint disponibles.
Siga para crear y ejecutar un sistema de agentes A2A y adquiera experiencia práctica con:
Nota: Si ha trabajado con ACP (Agent Communication Protocol), puede reconocer similitudes. ACP, desarrollado originalmente por BeeAI de IBM, ha unido fuerzas con Google A2A bajo la Fundación Linux. BeeAI ahora utiliza adaptadores A2A (A2AServer y A2AAgent) para proporcionar una comunicación compatible con A2A. A2A también funciona junto con MCP (Model Context Protocol) para permitir que los agentes interactúen con fuentes de datos y herramientas, creando ecosistemas de agentes interoperables.
Este proyecto demuestra cómo A2A permite una separación limpia entre la interfaz del cliente y la lógica del agente.
El flujo de trabajo sigue esta secuencia:
Este flujo de trabajo demuestra un patrón reutilizable aplicable a casos de uso que requieren una comunicación estructurada entre cliente y agente, como chatbots, sistemas de automatización de tareas, agentes de atención al cliente y asistentes de investigación con orquestación de herramientas.
Este proyecto utiliza un único agente de IA con múltiples capacidades de herramientas. En sistemas más complejos, puede implementar varios agentes especializados, cada uno centrado en dominios o tareas específicos.
RequirementAgent (BeeAI): un agente declarativo que selecciona y coordina dinámicamente varias herramientas en función de la solicitud del usuario. Utiliza:
El servidor A2A (
2. Configuración del agente: crea un RequirementAgent con herramientas y memoria para gestionar el ciclo de vida del agente
3. Configuración del servidor: expone el agente a través de endpoints HTTP compatibles con A2A
El servidor expone automáticamente una AgentCard en /.well-known/agent-card.json que describe las capacidades del agente y ayuda a validar las configuraciones del agente.
El cliente A2A (
Configuración de la conexión: crea un adaptador de cliente A2A
El
Intercambio de mensajes: envía instrucciones asincrónicas y procesa las respuestas:
El
Estos son los requisitos del sistema para ejecutar este proyecto:
Antes de empezar, he aquí una descripción general de las herramientas necesarias para este proyecto:
Este proyecto utiliza Ollama como proveedor de modelos para el agente de IA. Siga estos pasos para configurar Ollama:
Nota: puede utilizar cualquier modelo compatible con Ollama configurando la
Para ejecutar este proyecto, clone el repositorio de GitHub utilizando https://github.com/IBM/ibmdotcom-tutorials.git como URL HTTPS. Para conocer los pasos detallados sobre cómo clonar un repositorio, consulte la documentación de GitHub.
Este tutorial se puede encontrar dentro del directorio de proyectos del repositorio.
Dentro de un terminal, navegue hasta el directorio de este tutorial:
Este proyecto requiere dos scripts de Python separados para ejecutarse simultáneamente, uno para el servidor y otro para el cliente. Debe abrir dos ventanas o pestañas de terminal.
Mantenga abierto su terminal actual, luego abra un segundo terminal y asegúrese de que ambos se dirijan al directorio del proyecto correcto (el
¿Utiliza un IDE?
Si utiliza un IDE como Visual Studio Code, puede utilizar la característica Split Terminal (Terminal dividida) para gestionar varias terminales en paralelo.
De lo contrario, abra dos ventanas de terminal independientes y navegue cada una hasta el directorio del proyecto.
Los entornos virtuales ayudan a mantener las dependencias separadas y mantenidas. Para mantener separadas las dependencias del servidor y del cliente, cree un entorno virtual para cada componente.
Para el servidor:
Vaya al
Cree un entorno virtual con Python 3.11:
Active el entorno virtual:
Nota para usuarios de Windows: utilice venv\Scripts\activate para activar el entorno virtual.
Para el cliente:
Vaya al
Cree y active un entorno virtual:
Instale las dependencias necesarias para cada componente ejecutando este código en cada terminal:
Puede ejecutar
En el primer terminal, inicie el servidor del agente A2A:
Debería ver:
El servidor ahora está escuchando las solicitudes entrantes de la aplicación cliente, listo para admitir la comunicación de agente a agente.
En el otro terminal, inicie el cliente A2A:
Esto debería solicitarle una entrada:
Escriba un mensaje en el terminal de cliente y pulse
En el terminal del servidor, puede ver los registros del protocolo A2A que muestran la comunicación con notificaciones push:
La primera solicitud recupera la AgentCard que describe las capacidades del agente. La segunda solicitud envía su mensaje como
Nota: los outputs de los LLM son probabilísticos y pueden variar cada vez que ejecute el flujo de trabajo, incluso con la misma entrada.
Experimente con diferentes tipos de consultas para probar las diversas herramientas del agente:
Vaya a https://0.0.0.0:9999/.well-known/agent-card.json en su navegador para ver el
Este documento JSON describe:
Esta AgentCard permite a cualquier cliente compatible con A2A descubrir e interactuar con el agente sin conocer previamente los detalles de su implementación.
En este tutorial, creó un sistema de chat utilizando un servidor de quejas A2A que expuso una interfaz estructurada para la comunicación cliente-agente. Al separar la capa de mensajería de la lógica interna, el protocolo Agent2Agent permite a los equipos actualizar las capacidades de los agentes, intercambiar modelos o modificar las configuraciones de las herramientas sin cambiar el código del cliente. Esta flexibilidad es especialmente valiosa a la hora de coordinar tareas que requieren entradas, realizar un seguimiento del estado de las tareas o tratar cada operación como una unidad de trabajo discreta.
A2A funciona definiendo un formato de mensaje común que cualquier componente compatible puede entender, lo que permite a los agentes autónomos colaborar con otros agentes. La especificación del protocolo define cómo se estructuran los mensajes en formato JSON-RPC y se enriquecen con metadatos para garantizar la coherencia y la claridad en todas las interacciones.
Este tutorial se basa en los ejemplos fundacionales proporcionados por el repositorio de muestras A2A. Para obtener más información sobre la implementación original, consulte el archivo "Léame" del repositorio, que proporciona más contexto y ejemplos para crear sistemas compatibles con A2A.
Para las implementaciones del mundo real, los servidores A2A pueden implementar mecanismos de autenticación para proteger los endpoints de los agentes, utilizar eventos enviados por el servidor para transmitir respuestas y escalar para gestionar los flujos de trabajo de producción. Al seguir este flujo de trabajo, vio cómo un cliente de línea de comandos puede interactuar con un agente de IA a través de un protocolo estandarizado, lo que permite al agente coordinar múltiples herramientas y proporcionar respuestas contextuales. Este enfoque demuestra el poder de A2A para permitir sistemas de IA mantenibles, escalables y flexibles.
Cuando haya terminado de experimentar con el sistema, siga estos pasos para apagar limpiamente todos los componentes en ejecución:
En cada ventana de terminal, presione Ctrl+C para detener el proceso en ejecución.
Debería ver un output similar al siguiente:
Si el servidor deja de responder o se bloquea al apagarse, puede detenerlo a la fuerza:
Encuentre el ID de proceso (PID):
Identifique el PID del proceso que está intentando detener.
Finalice el proceso:
Repita este proceso para cada servidor si es necesario.
Eso es todo. Ha ejecutado correctamente un sistema de chat completo compatible con A2A.
Cree, implemente y gestione potentes asistentes y agentes de IA que automaticen flujos de trabajo y procesos con IA generativa.
Construya el futuro de su empresa con soluciones de IA en las que puede confiar.
Los servicios de IA de IBM Consulting ayudan a reinventar la forma de trabajar de las empresas usando IA para la transformación.