AI Infra:ACP,标准化的 RESTful API 解决 Agent 之间的通信问题
项目简介
ACP(Agent Communication Protocol)是一个开放协议,旨在统一 AI 代理、应用程序与人类之间的多模态通信方式。现代 AI 系统往往分散在不同的框架、团队和基础设施中,导致创新受阻且协作困难。ACP 通过定义一套通用的消息结构和交互规范,打破这种隔阂,让各类代理能够高效地互相发现、协同和共享状态,从而加速智能系统的发展与落地。
核心功能
- 多模态消息传递:支持文本、代码、文件、媒体等多种格式的消息互通;
- 实时与流式响应:可根据需求即时响应、后台执行或以流(streaming)的形式输出;
- 能力发现:代理可公开自身的“能力清单”(Agent Manifest),让其他系统或用户轻松发现可用功能;
- 长任务协作:内置“会话”(Session)与“挂起/恢复”(Await)机制,方便代理在长时任务中暂停等待外部输入后再继续执行;
- 可扩展生态:ACP 已集成 Python/TypeScript SDK、OpenAPI 规范及多种示例,助力快速构建与接入自定义代理。
快速上手
初始化项目
uv init --python '>=3.11' my_acp_project cd my_acp_project uv add acp-sdk
创建简单的 echo
在agent.py
中编写以下代码:import asyncio from acp_sdk.server import Server from acp_sdk.models import Message, RunYield, RunYieldResume, Context server = Server() @server.agent() async def echo(input: list[Message], context: Context): for msg in input: await asyncio.sleep(0.5) yield {"thought": "Echoing message"} await asyncio.sleep(0.5) yield msg server.run()
启动服务并验证
uv run agent.py curl http://localhost:8000/agents
正常情况下会返回包含
echo
代理的信息;通过 HTTP 接口调用
curl -X POST http://localhost:8000/runs \ -H "Content-Type: application/json" \ -d '{ "agent_name": "echo", "input": [{"role":"user","parts":[{"content":"Hello ACP","content_type":"text/plain"}]}] }'
即可收到同样的消息。
许可证与社区
- 许可证:Apache-2.0
- 维护与贡献:项目由 Linux Foundation AI & Data 下的 BeeAI 社区维护,欢迎通过 GitHub Issues、PR 和 Discussions 参与共建。
更多文档与示例请见官方站点:https://agentcommunicationprotocol.dev