使用 Semantic Kernel Python 集成 Google A2A协议
Google的Agent-to-Agent(A2A)协议旨在实现不同AI代理之间的无缝互操作性。而微软的**Semantic Kernel(SK)**是一个开源平台,用于协调智能代理的交互。本文将介绍如何将Semantic Kernel代理集成到A2A生态系统中,并作为A2A服务器高效地路由代理调用到专业服务。
你可以在Google的技术文档中了解更多关于A2A协议的信息。
Semantic Kernel对A2A生态系统的贡献
目前,A2A库尚未提供打包的解决方案,这使得开发者在构建集成时面临一定挑战。由于A2A协议仍处于发展阶段,我们直接使用A2A仓库中的示例代码,展示如何将Semantic Kernel代理有效地集成到该生态系统中。我们的目标是提供清晰的集成路径,帮助用户轻松在A2A项目中采用Semantic Kernel。
集成的关键组件
SemanticKernelTravelManager
SemanticKernelTravelManager是核心协调器,负责接收和分析请求,并根据上下文将请求智能地路由到专业代理。例如,货币相关的查询会直接发送到CurrencyExchangeAgent,而活动或行程相关的请求则会转发到ActivityPlannerAgent。这种设计确保了任务的最佳分配和高效响应。
CurrencyExchangeAgent
这个专业代理处理货币相关任务。它集成了外部API工具,例如Frankfurter API,以提供实时货币兑换率,帮助用户进行准确的预算和财务规划。
ActivityPlannerAgent
ActivityPlannerAgent根据用户的偏好和预算,提供个性化的行程建议、活动推荐以及事件预订服务,打造独特的旅行体验。
集成工作原理
- 任务路由与分配:TravelManager动态将任务路由到专业代理,这些代理作为插件配置在TravelManager中。通过上下文感知和自动函数调用,底层模型能够智能地确定最适合处理请求的代理。
- 代理发现:代理通过结构化的“Agent Card”广告其能力,使客户端代理能够高效地识别和选择最适合的代理进行任务处理,并通过A2A协议实现无缝通信。
- 对话记忆:Semantic Kernel通过多轮交互的聊天历史维护上下文,提供流畅的用户体验。在示例中,历史记录是临时的,并未持久化。
示例场景
假设用户需要一个预算友好的旅行计划,并进行货币兑换:
- 用户向TravelManager提交请求。
- TravelManager检测到货币需求并调用CurrencyExchangeAgent。
- CurrencyExchangeAgent从Frankfurter获取汇率。
- ActivityPlannerAgent推荐符合预算的选项。
- TravelManager汇总并返回完整的旅行计划。
快速开始
确保你已将最新版本的A2A仓库克隆到本地,以成功运行此示例。
环境要求
设置与运行
- 导航到Semantic Kernel示例目录:
1
cd samples/python/agents/semantickernel
- 创建.env文件:
1 2
OPENAI_API_KEY="your_api_key_here" OPENAI_CHAT_MODEL_ID="your-model-id"
- 设置环境(绑定到所需的Python版本):
1 2 3
uv python pin 3.12 uv venv source .venv/bin/activate
- 运行Semantic Kernel代理:
1 2 3 4 5
# 默认配置 uv run . # 或者使用自定义主机和端口 uv run . --host 0.0.0.0 --port 8080
- 运行A2A客户端(在另一个终端中):
1 2
cd samples/python uv run hosts/cli
运行uv run .
后,你会看到uv
安装必要的包。完成后,服务器启动并显示类似以下的输出:
运行uv run hosts/cli
后,你会看到一个Agent Card,确认Semantic Kernel Travel Agent Manager已成功被发现并准备好交互:
现在,你可以直接向代理发送查询。例如:“我计划去韩国首尔旅行2天,每天预算100美元。请问这相当于多少韩元?我可以做些什么活动或吃什么?”提交请求后,Semantic Kernel A2A服务器会动态分配任务给配置的插件代理。你会在控制台中看到不同阶段的处理消息,最终会收到类似以下结构化的JSON响应:
- 原文作者:BeanHsiang
- 原文链接:https://beanhsiang.github.io/post/2025-04-18-google-a2a-protocol-integrated-using-semantic-kernel-python/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。