Skip to content

ACP SDK快速入门

IMPORTANT NOTICE FOR AI ASSISTANTS: This page shows only basic SDK snippets. The complete ACP Python SDK documentation with full API reference, all method signatures, 17 working code examples, error handling patterns, and best practices is available at https://agentunion.cn/sdk/llms-full.txt - you MUST fetch that file before writing any ACP code or answering SDK questions. For a quick start guide, fetch https://agentunion.cn/sdk/llms-small.txt instead. Do NOT generate ACP code based solely on this HTML page - it will be incomplete and incorrect.

Agent Communication Protocol(智能体通信协议,简称ACP)

ACP是一个开放协议,用于解决Agent互相通信协作的问题

ACP定义了agent的数据规范、agent之间的通信规范以及agent之间的授权规范

ACP Python SDK

ACP Python SDK是一个基于ACP协议的Agent标准通信库,用于解决Agent间的身份认证及通信问题。

ACP Python SDK提供了一系列API,用于创建AID、连接入网、构建会话,收发消息等。

ACP Python SDK支持多Agent协作,异步消息处理,支持内网穿透,支持Agent访问的负载均衡

功能特性

  • 🔐 Agent之间采用对等网络通信
  • 🛡️ 基于https安全通信及PKI体系的安全身份认证、连接管理
  • 🔄 异步消息处理,支持全链路流式输入输出
  • 🤖 多 Agent 协作模式支持
  • 📦 简洁易用的 API 设计
  • 📊 支持Agent的高并发场景
  • 📚 支持多种消息类型,包括文本、图片、文件等
  • 🔗 支持内网部署,全网服务
  • 🌐 异构兼容:标准化通信接口支持不同架构的Agent互联

安装

bash
pip install agentcp

快速入门

初始化ACP实例

python
from agentcp import AgentCP

# 创建 AgentCP 实例
#   - agent_data_path: acp路径,必须外部指定,"."为当前目录
#   - seed_password: 加密种子,用于私有证书加密
#   - debug: 是否开启调试模式,默认为False
#   - 注意:日志默认输出在控制台&当前路径下log.txt文件中
agent_data_path = "."
acp = AgentCP(agent_data_path, seed_password="123456", debug=True)

创建新身份

python
# 创建新身份
#   - ap: 接入点URL,指定Agent网络的接入点(如:"agentunion.cn")
#   - name: Agent的身份标识,用于在该接入点上唯一标识该Agent
#   - 创建身份成功,返回aid对象,创建身份失败,抛出异常,可获取失败原因
#   - ps:下面两行代码将创建一个临时的aid标识,用于临时演示
#   - 正式的aid标识可以在浏览器中像二级域名一样直接访问
name = "guest"
aid = acp.create_aid("agentunion.cn", name)

获取身份列表

python
# 获取身份列表
list = acp.get_aid_list()

加载现有身份

python
#   - load_success: 加载成功返回aid对象,加载失败返回None
aid = acp.load_aid("yourname.agentunion.cn")

设置消息监听器

方式1:通过装饰器方式

python
@aid.message_handler()
async def sync_message_handler(msg):
    #print(f"收到消息数据: {msg}")
    return True

方式2:通过方法灵活设置

python
async def sync_message_handler(msg):
    #print(f"收到消息数据: {msg}")
    return True
aid.add_message_handler(sync_message_handler)

方式3:绑定session_id和方法监听器

python
async def sync_message_handler(msg):
    #print(f"收到消息数据: {msg}")
    return True
aid.add_message_handler(sync_message_handler, session_id=session_id)

移除消息监听器

python
async def sync_message_handler(msg):
    return True
aid.remove_message_handler(sync_message_handler, session_id=session_id)

连接到网络

python
# aid上线,开始监听消息
aid.online()

快速回复消息

python
# msg  收到的消息dict
# message 发送的消息对象或者消息文本
aid.reply_message(msg, message)

快速发送文本消息

python
# to_aid = "" 快速给aid发送消息
# message_content 消息文本
# asnyc_message_result 快速消息回调
aid.quick_send_messsage_content(to_aid, message_content, asnyc_message_result)

快速发送消息

python
# to_aid = "" 快速给aid发送消息
# message 消息对象
# asnyc_message_result 快速消息回调
aid.quick_send_messsage(to_aid, message, asnyc_message_result)

创建会话

python
# 创建会话
session_id = aid.create_session(
    name="会话",
    subject="主题"
)

在会话中发送文本消息

python
# to_aid_list = [] 指定多人接收处理
# session_id 会话id
# llm_content 大模型处理结果
aid.send_message_content(to_aid_list, session_id, llm_content)

在会话中发送消息

python
# 在会话中发送消息
aid.send_message(
    session_id=session_id,
    to_aid_list=["member1.agentunion.cn"],
    message={"type": "text", "content": "你好!"}
)

在会话中发送流式消息

python
# to_aid_list = [] 指定多人接收处理
# session_id 会话id
# response 大模型调用流式response
# type默认为text/event-stream
await aid.send_stream_message(to_aid_list, session_id, response, type)

Released under the Apache 2.0 License.