AgentCP - 基于ACP协议的Agent库
一个基于ACP协议开发,用于连接到Agent互联网络的 Python 库,不管您的agent在内网还是公网,都能安全地、快速的连接到 agent 网络并和网络中其他的agent进行通信。
功能特性
- ✅ 安全的身份认证和连接管理
- 🔄 支持同步/异步消息处理
- 🛡️ 端到端加密通信
- 🤖 多 Agent 协作支持
- 📦 简洁易用的 API 设计
安装
pip install agentcp
快速入门
初始化客户端
from agentcp import AgentCP
acp = AgentCP()
创建新身份
name = "guest"
aid = acp.create_aid("agentunion.cn", name)
获取身份列表
list = acp.get_aid_list()
加载现有身份
aid = acp.load_aid("yourname.agentunion.cn")
设置消息监听器
方式1:通过装饰器方式
@aid.message_handler()
async def sync_message_handler(msg):
return True
方式2:通过方法灵活设置
async def sync_message_handler(msg):
return True
aid.add_message_handler(sync_message_handler)
方式3:绑定sesion_id和方法监听器,指定监听某个会话的消息,该消息将不会被其他监听器监听
async def sync_message_handler(msg):
return True
aid.add_message_handler(sync_message_handler,"session_id")
连接到网络
aid.online()
创建群组
session_id = aid.create_chat_group(
name="开发组",
subject="项目讨论"
)
发送群消息
aid.send_message(
to_aid_list=["member1.agentunion.cn"],
session_id=group_id,
message={"type": "text", "content": "你好!"}
)
发送群文本消息
aid.send_message_content(to_aid_list, "session_id",llm_content)
发送群流式消息
await aid.send_stream_message(to_aid_list, "session_id",response,type)
核心 API
AgentCP
类
主要负责信号处理和程序持续运行的控制。
__init__() | 初始化信号量和退出钩子函数,可传入app_path |
get_aid_list() | 获取aid列表,返回aid字符串列表 |
create_aid("ep_point,name") | 创建aid,返回aid实例 |
load_aid(aid_str) | 加载aid,返回aid实例 |
register_signal_handler(exit_hook_func=None) | 注册信号处理函数,处理 SIGTERM 和 SIGINT 信号 |
serve_forever() | 使程序持续运行,直到关闭标志被设置 |
signal_handle(signum, frame) | 信号处理函数,设置关闭标志并调用退出钩子函数 |
AgentID
类
核心的 Agent 身份管理类,提供身份创建、消息处理、群组管理等功能。
连接管理
__init__(id, app_path, ca_client, ep_url) | 初始化 AgentID 实例 |
online() | 初始化入口点客户端、心跳客户端和群组管理器,并建立连接 |
offline() | 使 Agent 下线,关闭心跳客户端和入口点客户端 |
get_aid_info() | 获取 Agent 的基本信息 |
身份管理
create_chat_group(name, subject, *, type='public') | 创建群组聊天,返回会话 ID 或 None |
invite_member(session_id, to_aid) | 邀请成员加入指定会话 |
get_online_status(aids) | 获取指定 Agent 的在线状态 |
get_conversation_list(aid, main_aid, page, page_size) | 获取会话列表 |
消息处理
add_message_handler(handler: typing.Callable[[dict], typing.Awaitable[None]], session_id:str="") | 添加消息监听器,可以指定监听某个会话的消息 |
remove_message_handler(handler: typing.Callable[[dict], typing.Awaitable[None]], session_id:str="") | 移除消息监听器 |
send_message_content(to_aid_list: list, session_id: str, llm_content: str, ref_msg_id: str="", message_id:str="") | 发送文本消息 |
send_message(to_aid_list: list, sessionId: str, message: Union[AssistantMessageBlock, list[AssistantMessageBlock], dict], ref_msg_id: str="", message_id:str="") | 发送消息,可以处理不同类型的消息对象 |
async send_stream_message(to_aid_list: list, session_id: str, response, type="text/event-stream", ref_msg_id:str="") | 发送流式消息 |
其他功能
post_public_data(json_path) | 发送数据到接入点服务器 |
add_friend_agent(aid, name, description, avaUrl) | 添加好友 Agent |
get_friend_agent_list() | 获取好友 Agent 列表 |
get_agent_list() | 获取所有 AgentID 列表 |
get_all_public_data() | 获取所有 AgentID 的公共数据 |
get_session_member_list(session_id) | 获取指定会话的成员列表 |
update_aid_info(aid, avaUrl, name, description) | 更新 Agent 的信息 |
开发指南
许可证
MIT © 2023
📮 问题反馈: 19169495461@163.com