作者:卢建晖 - 微软高级云技术布道师
翻译/排版:Alan Wang
在快速发展的 AI 应用开发领域,能够协调多个智能体已成为构建复杂企业级解决方案的关键。虽然单个 AI 智能体擅长特定任务,但复杂的业务场景往往需要跨平台、跨框架甚至跨组织边界的专业智能体协同工作。这正是微软的 Semantic Kernel 编排功能与 A2A(Agent-to-Agent)协议相结合,构建真正互操作多智能体系统的重要基础。
理解 A2A 协议:超越传统工具集成
A2A 协议由 Google 于 2025 年 4 月推出,并得到了超过 50 家技术合作伙伴的支持,旨在解决 AI 生态系统中的一个核心难题:让智能体能够以对等的身份进行沟通与协作,而不仅仅是作为工具被调用。与侧重连接智能体与外部工具和数据源的 MCP(模型上下文协议)不同,A2A 构建了一个专门为智能体间交互设计的标准化通信层。
A2A 的核心能力
-
通过 Agent 卡片发现智能体:每个支持 A2A 的智能体都会公开一个机器可读的 “Agent 卡片”,这是一个 JSON 文档,用于展示其能力、接入端点、支持的消息类型、认证要求及运行时元数据。这种发现机制使客户端智能体能够动态识别并选择最适合执行特定任务的远程智能体。
-
通过生命周期跟踪进行任务管理:A2A 的所有交互都围绕有着明确生命周期的独立任务展开,这些任务可以即时完成,也可以持续较长时间,并提供实时状态更新,使该协议既适用于快速的 API 调用,也适用于可能耗时数小时或数天的复杂研究操作。
-
丰富的消息交换:通信通过结构化消息进行,消息包含具有特定内容类型的“部分”。这使得智能体能够协商合适的交互方式,并交换多种类型的数据,包括文本、结构化 JSON、文件,甚至多媒体流。
-
企业级安全保障:A2A 构建在常见的 Web 标准之上(如 HTTP、JSON-RPC 2.0、Server-Sent Events),并结合了企业级的身份验证与权限控制,支持 OpenAPI 的认证机制,在不暴露智能体内部状态或专有工具的前提下,实现安全的协作。
A2A 与 MCP:互为补充,而非竞争关系
一个常见的误解是 A2A 与 Anthropic 的模型上下文协议(MCP)存在竞争关系。实际上,这两个协议服务于智能体 AI 技术栈中的不同层面:
-
MCP 连接智能体与工具和数据 —— 使其能够访问外部 API、数据库、文件系统等结构化资源
-
A2A 连接智能体与其他智能体 —— 实现对等协作、任务委派和分布式问题解决
你可以把它理解为:MCP 是给智能体一把锤子,而 A2A 是教它如何与一个施工队协同工作。大多数复杂的应用程序都会同时利用这两种协议。
Semantic Kernel:编排引擎
微软的 Semantic Kernel 为构建支持 A2A 的多智能体系统提供了理想的基础。作为一个开源 SDK,Semantic Kernel 在以下方面表现出色:
-
插件化架构:通过可复用插件轻松扩展智能体能力
-
多模型支持:协调不同的 AI 模型以执行专门任务
-
企业集成:无缝连接现有的企业系统与 API
-
智能体框架:提供实验性但强大的多智能体协同能力
为什么要结合 Semantic Kernel 与 A2A?
-
框架无关互操作性:Semantic Kernel 智能体可与 LangGraph、CrewAI、Google ADK 或其他 A2A 兼容框架智能体进行通信
-
保留 Semantic Kernel 的优势:在享受 Semantic Kernel 插件生态与提示工程、企业能力的同时,实现跨平台兼容
-
渐进迁移路径:现有 Semantic Kernel 应用可逐步采用 A2A,无需大规模重构
-
云原生设计:支持认证、日志、可观测性,满足企业场景需求
A2A 支持系统的架构模式
在使用 Semantic Kernel 和 A2A 设计多智能体系统时,我们的实现架构展示了几个关键模式:
使用 Azure AI Foundry 的集中路由
我们采用的主要模式是使用由 Azure AI Foundry 驱动的中央路由智能体,智能地将任务委派给各个专业的远程智能体:

关键组件
-
主机智能体:基于 Azure AI Agents 的中央路由系统,负责智能决策
-
A2A 协议:标准化的智能体间通信机制
-
Semantic Kernel:集成 MCP 的高级智能体框架
-
远程智能体:使用不同通信协议的专业任务执行者
优势
-
通过 Azure AI Foundry 的线程实现集中式对话状态管理
-
基于智能体能力和用户意图进行智能任务委派
-
在不同智能体交互中提供一致的用户体验
-
明确的审计记录和完善的错误处理机制
多协议智能体通信
系统展示了不同通信协议如何实现共存:

通信模式:
-
A2A HTTP/JSON-RPC:适用于具备标准化发现能力的通用工具型智能体
-
STDIO:用于基于进程的智能体,如 Playwright 自动化
-
Server-Sent Events(SSE):用于 Azure 中的无服务器 MCP 函数
MCP 与 A2A 的混合集成
我们的架构展示了 MCP 协议与 A2A 协议如何相互补充:

-
面向工具的 MCP:直接集成 Azure Functions、开发工具和数据源
-
面向智能体的 A2A:实现智能体间通信与任务委派
-
Semantic Kernel:作为编排层,桥接两种协议
实施详解
项目结构与组件
我们的多智能体系统采用模块化架构:

开发环境设置
要构建这个支持 A2A 的 Semantic Kernel 系统,我们需要:
# Initialize Python project with uv (recommended)
uv init multi_agent_system
cd multi_agent_system
# Core dependencies for Semantic Kernel and Azure integration
uv add semantic-kernel[azure]
uv add azure-identity
uv add azure-ai-agents
uv add python-dotenv
# A2A protocol dependencies
uv add a2a-client
uv add httpx
# MCP integration dependencies
uv add semantic-kernel[mcp]
# Web interface dependencies
uv add gradio
# Development dependencies
uv add --dev pytest pytest-asyncio
环境配置
配置以下环境变量:
# Azure AI Foundry configuration
AZURE_AI_AGENT_ENDPOINT=https://your-ai-foundry-endpoint.azure.com
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME=Your AI Foundry Model Deployment Name
# Remote agent endpoints
PLAYWRIGHT_AGENT_URL=http://localhost:10001
TOOL_AGENT_URL=http://localhost:10002
# Optional: MCP server configuration
MCP_SSE_URL=http://localhost:7071/runtime/webhooks/mcp/sse
创建中央路由智能体
我们系统的核心是利用 Azure AI Foundry 实现智能任务委派的路由智能体:
import json
import os
import time
import uuid
from typing import Any, Dict, List
import httpx
from a2a.client import A2ACardResolver
from azure.ai.agents import AgentsClient
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
class RoutingAgent:
"""Central routing agent powered by Azure AI Foundry."""
def __init__(self):
self.remote_agent_connections = {
}
self.cards = {
}
self.agents_client = AgentsClient(
endpoint=os.environ["AZURE_AI_AGENT_ENDPOINT"],
credential=DefaultAzureCredential()<

最低0.47元/天 解锁文章
765

被折叠的 条评论
为什么被折叠?



