Protocolo de comunicación), los agentes de IA pueden colaborar libremente en equipos, marcos, tecnologías y organizaciones. Es un protocolo universal que transforma el paisaje fragmentado de los agentes de IA de hoy en compañeros de equipo interconectados. Esto desbloquea nuevos niveles de interoperabilidad, reutilización y escala.
Como un estándar de código abierto con gobernanza abierta, ACP acaba de lanzar su última versión, permitiendo a los agentes de IA comunicarse en diferentes marcos y pilas de tecnología. Es parte de un ecosistema creciente, incluido Beeai (donde soy parte del equipo), que ha sido donado a la Fundación Linux. A continuación se presentan algunas características clave; Puede leer más sobre los conceptos y detalles centrales en el documentación.
Características clave de ACP:
Comunicación basada en el descanso: ACP utiliza patrones HTTP estándar para la comunicación, lo que facilita la integración en la producción. Mientras que JSON-RPC se basa en métodos más complejos.
No se requiere SDK (Pero hay uno si lo quieres): ACP no requiere bibliotecas especializadas. Puede interactuar con agentes que usan herramientas como Curl, Postman o incluso su navegador. Para mayor comodidad, hay un Sdk disponible.
Descubrimiento fuera de línea: Los agentes de ACP pueden incrustar metadatos directamente en sus paquetes de distribución, lo que permite el descubrimiento incluso cuando están inactivos. Esto admite entornos seguros, obtenidos de aire o escala a cero donde el descubrimiento de servicios tradicional no es posible.
Async-First, Sync admitido: ACP está diseñado con comunicación asincrónica como predeterminado. Esto es ideal para tareas de larga duración o complejas. Las solicitudes sincrónicas también son compatibles.
Nota: ACP permite la orquestación para cualquier patrón de arquitectura de agente, pero no gestiona flujos de trabajo, implementaciones o coordinación entre los agentes. En cambio, permite la orquestación en diversos agentes al estandarizar cómo se comunican. Investigación de IBM construida Beeaiun sistema de código abierto diseñado para manejar la orquestación del agente, la implementación y el intercambio (usando ACP como capa de comunicación).
¿Por qué necesitamos ACP?
A medida que aumenta la cantidad de agentes de IA “en la naturaleza”, también lo hace la cantidad de complejidad para navegar cómo obtener el mejor resultado de cada tecnología independiente para su caso de uso (sin tener que estar limitado a un proveedor particular). Cada marco, plataforma y kit de herramientas ofrece ventajas únicas, pero integrarlas todas en un sistema de agente es un desafío.
Hoy, la mayoría de los sistemas de agentes operan en silos. Se basan en marcos incompatibles, exponen API personalizadas y carecen de un protocolo compartido para la comunicación. Conectarlos requiere integraciones frágiles y no repetibles que son caras de construir.
ACP representa un cambio fundamental: de un fragmentado, a propósito Ecosistema a una red interconectada de agentes, cada uno capaz de descubrir, comprender y colaborar con otros, independientemente de quién los construyó o en qué pila se ejecutan. Con ACP, los desarrolladores pueden aprovechar la inteligencia colectiva de diversos agentes para construir flujos de trabajo más potentes de los que un solo sistema puede lograr solo.
Desafíos actuales:
A pesar del rápido crecimiento en las capacidades de los agentes, la integración del mundo real sigue siendo un cuello de botella importante. Sin un protocolo de comunicación compartida, las organizaciones enfrentan varios desafíos recurrentes:
- Diversidad del marco: las organizaciones generalmente ejecutan cientos o miles de agentes construidos utilizando diferentes marcos como Langchain, Crewai, Autógen o Pilas personalizadas.
- Integración personalizada: sin un protocolo estándar, los desarrolladores deben escribir conectores personalizados para cada interacción de agentes.
- Desarrollo exponencial: con los agentes N, potencialmente necesita N (N-1)/2 puntos de integración diferentes (lo que hace que los ecosistemas de agentes a gran escala sean difíciles de mantener).
- Consideraciones de organización cruzada: diferentes modelos de seguridad, sistemas de autenticación y formatos de datos complican la integración entre las empresas.
Un ejemplo del mundo real
Para ilustrar la necesidad del mundo real de comunicación de agente a agente, considere dos organizaciones:
Una empresa manufacturera que utiliza un agente de IA para administrar los horarios de producción y el cumplimiento del pedido en función del inventario interno y la demanda de los clientes.
Un proveedor de logística Eso ejecuta un agente para ofrecer estimaciones de envío en tiempo real, disponibilidad de operadores y optimización de rutas.
Ahora imagine que el sistema del fabricante necesita estimar los plazos de entrega para un gran pedido de equipos personalizados para informar a un cotización de un cliente.
Sin ACP: Esto requeriría construir una integración a medida entre el software de planificación del fabricante y las API del proveedor de logística. Esto significa manejar la autenticación, los desajustes del formato de datos y la disponibilidad de servicios manualmente. Estas integraciones son costosas, frágiles y difíciles de escalar a medida que se unen más socios.
Con ACP: Cada organización envuelve a su agente con una interfaz ACP. El agente de fabricación envía detalles de pedidos y destino al agente de logística, que responde con opciones de envío en tiempo real y ETAS. Ambos sistemas colaboran sin exponer a las partes internas o escribir integraciones personalizadas. Los nuevos socios de logística pueden conectarse simplemente implementando ACP.
¿Qué tan fácil es crear un agente compatible con ACP?
https://www.youtube.com/watch?v=6t7h_3_tzgy
La simplicidad es un principio de diseño central de ACP. Envolver un agente con ACP se puede hacer en unas pocas líneas de código. Usando el SDK de Python, puede definir un agente que cumpla con ACP simplemente decorando una función.
Esta implementación mínima:
- Crea una instancia de servidor ACP
- Define una función de agente usando el decorador @server.agent ()
- Implementa un agente que usa el marco Langchain con un backend y memoria LLM para la persistencia del contexto
- Traduce entre el formato de mensaje de ACP y el formato nativo del marco para devolver una respuesta estructurada
- Inicia el servidor, haciendo que el agente esté disponible a través de HTTP
Ejemplo de código
from typing import Annotated
import os
from typing_extensions import TypedDict
from dotenv import load_dotenv
#ACP SDK
from acp_sdk.models import Message
from acp_sdk.models.models import MessagePart
from acp_sdk.server import RunYield, RunYieldResume, Server
from collections.abc import AsyncGenerator
#Langchain SDK
from langgraph.graph.message import add_messages
from langchain_anthropic import ChatAnthropic
load_dotenv()
class State(TypedDict):
messages: Annotated[list, add_messages]
#Set up the llm
llm = ChatAnthropic(model="claude-3-5-sonnet-latest", api_key=os.environ.get("ANTHROPIC_API_KEY"))
#------ACP Requirement-------#
#START SERVER
server = Server()
#WRAP AGENT IN DECORACTOR
@server.agent()
async def chatbot(messages: list[Message])-> AsyncGenerator[RunYield, RunYieldResume]:
"A simple chatbot enabled with memory"
#formats ACP Message format to be compatible with what langchain expects
query = " ".join(
part.content
for m in messages
for part in m.parts
)
#invokes llm
llm_response = llm.invoke(query)
#formats langchain response to ACP compatable output
assistant_message = Message(parts=[MessagePart(content=llm_response.content)])
# Yield so add_messages merges it into state
yield {"messages": [assistant_message]}
server.run()
#---------------------------#
Ahora, ha creado un agente totalmente compatible con ACP que puede:
- Ser descubierto por otros agentes (en línea o fuera de línea)
- Procesar solicitudes sincrónicamente o asincrónicamente
- Comunicarse usando formatos de mensaje estándar
- Integrarse con cualquier otro sistema compatible con ACP
Cómo se compara ACP con MCP y A2A
Para comprender mejor el papel de ACP en el ecosistema de IA en evolución, ayuda a compararlo con otros protocolos emergentes. Estos protocolos no son necesariamente competidores. En cambio, abordan diferentes capas de la pila de integración del sistema AI y a menudo se complementan entre sí.
De un vistazo:
- MCP (Protocolo de contexto modelo de Anthrope): Diseñado para enriquecer el contexto de un solo modelo con herramientas, memoria y recursos.
Enfoque: un modelo, muchas herramientas - ACP (Protocolo de comunicación del agente de Linux Foundation): Diseñado para la comunicación entre agentes independientes entre sistemas y organizaciones.
Enfoque: muchos agentes, que trabajan de forma segura como pares, sin proveedores, se bloquean, gobernanza abierta - A2A (agente a agente de Google): Diseñado para la comunicación entre agentes independientes entre sistemas y organizaciones.
Enfoque: muchos agentes, que trabajan como pares, optimizados para el ecosistema de Google
ACP y MCP
El equipo de ACP inicialmente exploró adaptar el Protocolo de contexto modelo (MCP) Porque ofrece una base sólida para las interacciones de contexto modelo. Sin embargo, rápidamente encontraron limitaciones arquitectónicas que lo hicieron inadecuado para la verdadera comunicación de agente a agente.
Por qué MCP se queda corto para sistemas de múltiples agentes:
Transmisión: MCP admite la transmisión pero no maneja transmisiones delta (por ejemplo, tokens, actualizaciones de trayectoria). Esta limitación proviene del hecho de que cuando se creó originalmente MCP no estaba destinado a interacciones estilo agente.
Compartir memoria: MCP no admite ejecutar múltiples agentes en los servidores mientras mantiene la memoria compartida. El ACP tampoco es compatible con esto tampoco, pero es un área activa de desarrollo.
Estructura de mensajes: MCP acepta cualquier esquema JSON pero no define la estructura para el cuerpo del mensaje. Esta flexibilidad dificulta la interoperabilidad (especialmente para construir UIS o orquestaciones de agentes que deben interpretar diversos formatos de mensajes).
Complejidad del protocolo: MCP usa JSON-RPC y requiere SDK específicos y tiempos de ejecución. Donde el diseño basado en REST de ACP con soporte de async/sincronización incorporado es más liviano y amigable con la integración.
Puedes leer más sobre cómo se comparan ACP y MCP aquí.
Pensar en MCP Como dar a una persona mejores herramientas, como una calculadora o un libro de referencia, para mejorar su rendimiento. En contraste, ACP se trata de permitir que las personas se formen equiposdonde cada persona (o agente) contribuye con sus capacidades y colabora.
ACP y MCP pueden complementarse entre sí:
| MCP | ACP | |
|---|---|---|
| Alcance | Modelo único + herramientas | Múltiples agentes colaborando |
| Enfocar | Enriquecimiento del contexto | Comunicación y orquestación del agente |
| Interacciones | Modelo ↔️ Herramientas | Agente ↔️ Agente |
| Ejemplos | Envíe una consulta de la base de datos a un modelo | Coordinar un agente de investigación y un agente de codificación |
ACP y A2A
El protocolo de agente a agente de Google (A2A), que se introdujo poco después de ACP, también tiene como objetivo estandarizar la comunicación entre los agentes de IA. Ambos protocolos comparten el objetivo de permitir sistemas de agentes múltiples, pero divergen en filosofía y gobernanza.
Diferencias clave:
| ACP | A2A | |
| Gobernancia | Abierto estándar, dirigido por la comunidad bajo la Fundación Linux | Dirigido por Google |
| Ajuste del ecosistema | Diseñado para integrarse con Beeaiuna plataforma de múltiples agentes de código abierto | Estrechamente vinculado al ecosistema de Google |
| Estilo de comunicación | Basado en reposo, utilizando patrones HTTP familiares | Basado en JSON-RPC |
| Formato de mensaje | MIME de tipo MIME extensible, permitiendo una negociación de contenido flexible | Tipos estructurados definidos por adelantado |
| Soporte de agentes | Apoya explícitamente cualquier tipo de agente, desde utilidades sin estado hasta agentes de conversación de larga duración. Los patrones sincrónicos y asincrónicos compatibles. | Apoya a los agentes apátridas y con estado, pero las garantías de sincronización pueden variar |
ACP fue diseñado deliberadamente para ser:
- Fácil de integrar utilizando herramientas HTTP comunes y convenciones de descanso
- Flexible en una amplia gama de tipos de agentes y cargas de trabajo
- Proveedor neutral, con gobernanza abierta y amplia alineación del ecosistema
Ambos protocolos pueden coexistir, cada una de las necesidades diferentes dependiendo del entorno. El diseño ligero, abierto y extensible de ACP lo hace bien adecuado para sistemas descentralizados e interoperabilidad del mundo real a través de los límites organizacionales. La integración natural de A2A puede convertirlo en una opción más adecuada para aquellos que usan el ecosistema de Google.
Hoja de ruta y comunidad
A medida que ACP evoluciona, están explorando nuevas posibilidades para mejorar la comunicación de los agentes. Aquí hay algunas áreas clave de enfoque:
- Federación de identidad: ¿Cómo puede ACP funcionar con sistemas de autenticación para mejorar la confianza en las redes?
- Delegación de acceso: ¿Cómo podemos permitir que los agentes deleguen las tareas de forma segura (mientras mantienen el control del usuario)?
- Soporte de múltiples registros: ¿Puede ACP admitir el descubrimiento de agentes descentralizados en diferentes redes?
- Compartir agentes: ¿Cómo podemos hacer que sea más fácil compartir y reutilizar a los agentes en todas las organizaciones o dentro de una organización?
- Implementaciones: ¿Qué herramientas y plantillas pueden simplificar la implementación del agente?
ACP se está desarrollando al aire libre porque los estándares funcionan mejor cuando se desarrollan directamente con los usuarios. Contribuciones De los desarrolladores, investigadores y organizaciones interesadas en el futuro de la interoperabilidad de los agentes son bienvenidas. Únase a ayudar a dar forma a este estándar en evolución.
Para más información, visite AgentCommunicationProtocol.dev y únete a la conversación en el github y discordia canales.