在这个飞速发展的人工智能时代,AI技术的创新不断刷新我们的认知。然而,各种AI代理常常在不同框架和基础设施中独立开发,导致它们难以有效互动,创新步伐因此受到限制。为了解决这些挑战,Agent Communication Protocol(ACP)应运而生。ACP是一种开放协议,旨在促进AI代理、应用程序和人类之间的沟通与协作。
ACP的核心功能及应用场景
ACP赋能AI代理能够以多模态消息的方式进行互动,它不仅支持文本、代码、文件或媒体的丰富消息传递,还能实现实时、后台或流式的响应。此外,ACP促进了AI代理在长时间任务上的协作,并支持在需要时共享状态信息。
通过ACP,开发者可以在BeeAI平台[1]中发现、运行并共享AI代理。这意味着无论您是想构建新应用、优化现有流程,还是增加团队沟通的效能,ACP都可以为您提供强大的支持。
想要深入了解ACP的使用?可以参加DeepLearning.AI的短期教程[2],在实践中掌握这一强大工具。
最新更新:增强的功能与支持
-
🧭 轨迹元数据:增强了MessagePart的轨迹元数据功能,用于多步骤推理和工具调用的跟踪。 -
🌐 分布式会话:通过URI资源共享实现多服务器实例间的会话连续性。 -
🔍 RAG LlamaIndex代理:提供了基于LlamaIndex的检索增强生成的新示例代理。 -
📚 引用元数据:改进了消息部分的来源跟踪和归属元数据。 -
⚡ 高可用性支持:通过集中的存储(如Redis/PostgreSQL)实现可扩展的、容错的ACP服务器部署。 -
📝 消息角色参数:为消息结构添加 role参数,以便更好地识别代理。 -
🔄 TypeScript SDK:提供完整的TypeScript客户端库,用于与ACP代理交互。
快速入门指南
您准备用ACP构建自己的项目吗?以下是一份简单的快速入门指南,帮助您走上开发之路:
1. 项目初始化
使用以下命令初始化您的Python项目:
uv init --python '>=3.11' my_acp_project
cd my_acp_project
2. 添加ACP SDK
uv add acp-sdk
3. 创建一个简单的“回声代理”
在您的项目目录中创建一个名为agent.py的文件,并输入以下代码:
# agent.py
import asyncio
from collections.abc import AsyncGenerator
from acp_sdk.models import Message
from acp_sdk.server import Context, RunYield, RunYieldResume, Server
server = Server()
@server.agent()
async def echo(
input: list[Message], context: Context
) -> AsyncGenerator[RunYield, RunYieldResume]:
"""Echoes everything"""
for message in input:
await asyncio.sleep(0.5)
yield {"thought": "I should echo everything"}
await asyncio.sleep(0.5)
yield message
server.run()
4. 启动ACP服务器
uv run agent.py
此时,您的服务器应运行在http://localhost:8000[3]。
5. 验证代理是否可用
在另一个终端中运行以下命令:
curl http://localhost:8000/agents
您将看到包含echo代理的JSON响应,确认其可用。
6. 通过HTTP运行代理
curl -X POST http://localhost:8000/runs \
-H "Content-Type: application/json" \
-d '{
"agent_name": "echo",
"input": [
{
"role": "user",
"parts": [
{
"content": "Howdy!",
"content_type": "text/plain"
}
]
}
]
}'
您将收到回声消息"Howdy!",这一切都在您的控制台中展示。
7. 构建ACP客户端
在项目目录中创建一个名为client.py的文件,并输入以下代码:
# client.py
import asyncio
from acp_sdk.client import Client
from acp_sdk.models import Message, MessagePart
async def example() -> None:
async with Client(base_url="http://localhost:8000") as client:
run = await client.run_sync(
agent="echo",
input=[
Message(
role="user",
parts=[MessagePart(content="Howdy to echo from client!!", content_type="text/plain")]
)
],
)
print(run.output)
if __name__ == "__main__":
asyncio.run(example())
8. 运行ACP客户端
uv run client.py
您将在控制台中看到回声消息的响应。
结语
在AI代理的通信和协作领域,ACP不仅提供了开放和灵活的解决方案,还能有效打破创新瓶颈。其广泛的应用场景和易于上手的快速开发工具包,使得无论是AI新手还是老手,都可以从中受益无限。随着平台的不断迭代与完善,ACP必将成为未来AI通信的中坚力量。
同类项目比较
虽然市场上有其他代理通信协议项目,但ACP在功能的多样性、部署的简易性以及与现有工具的兼容性上表现突出。例如,Rasa和Dialogflow主要关注于AI在对话式应用中的用途,而ACP的设计初衷更多是支持多模态通信及跨平台协作,适用于更广泛的开发应用场景。无论是何种需求,ACP都能为您的项目提供强大支持。
参考资料
BeeAI平台: https://github.com/i-am-bee/beeai-platform
[2]DeepLearning.AI的短期教程: https://www.deeplearning.ai/short-courses/acp-agent-communication-protocol/
[3]http://localhost:8000: http://localhost:8000

