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, ChatDev’s ChatChain), 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 mientras mantienen 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.
Síganos para crear y ejecutar un sistema de agentes A2A, y obtenga 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 trabaja 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 el cliente y el 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 desplegar varios agentes especializados, cada uno centrado en dominios o tareas específicos.
RequirementAgent (BeeAI): un agente declarativo que selecciona y coordina dinámicamente múltiples 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 manejar el ciclo de vida del agente
3. Configuración del servidor: expone el agente a través de endpoint HTTP compatible 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
Hay
Intercambio de mensajes: envía instrucciones asincrónicas y procesa respuestas:
Hay
Estos son los requisitos del sistema para ejecutar este proyecto:
Antes de comenzar, aquí hay 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 usar cualquier modelo compatible con Ollama configurando el
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 una 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 abierta su terminal actual, luego abra una segunda terminal y asegúrese de que ambas se dirijan al directorio del proyecto correcto (el
¿Usa un IDE?
Si está utilizando un IDE como Visual Studio Code, puede usar la característica Split Terminal para administrar múltiples terminales lado a lado.
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:
Navegue hasta la
Cree un entorno virtual con Python 3.11:
Active el entorno virtual:
Nota para usuarios de Windows: use venv\Scripts\activate para activar el entorno virtual.
Para el cliente:
Navegue hasta la
Cree y active un entorno virtual:
Instale las dependencias necesarias para cada componente ejecutando este código en cada terminal:
Puedes correr
En la primera 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 la otra terminal, inicie el cliente A2A:
Esto debería darle instrucción para la entrada:
Escriba un mensaje en la terminal de cliente y presione
En la 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 resultados de los LLM son probabilísticos y pueden variar cada vez que ejecuta 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 que cualquier cliente que cumpla con A2A descubra e interactúe con el agente sin conocer previamente los detalles de su implementación.
En este tutorial, creó un sistema de chat mediante el uso de 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 configuraciones de herramientas sin cambiar el código del cliente. Esta flexibilidad es especialmente valiosa cuando se coordinan tareas que requieren entradas, se realiza un seguimiento del estado de las tareas o se trata 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 fundamentales proporcionados por el repositorio de muestras A2A. Para obtener más información sobre la implementación original, consulte el archivo Léame en el repositorio, que proporciona más contexto y ejemplos para crear sistemas compatibles con A2A.
Para despliegues en el 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 manejar 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 resultados como:
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 que cumple con A2A.
Cree, implemente y gestione poderosos 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 pueda confiar.
Los servicios de IA de IBM Consulting ayudan a reinventar la forma en que las empresas trabajan con IA para la transformación.