代理协议
概述
使用代理实现功能的应用程序可以使用多种协议与这些代理通信,每种协议都有其独特的优势:
- 谷歌的代理对代理协议(A2A) -为代理间通信提供标准化框架,使代理能够高效协作和共享信息
- Anthropic模型上下文协议(MCP) -提供了一种灵活的方法,将外部工具和数据源集成到AI代理中,使其特别适合扩展代理功能
- OpenAI的聊天完成模型 -为会话式AI交互提供了一个简单、广泛采用的界面,具有强大的流媒体和函数调用支持
- Microsoft Foundry的通信格式 -通过本机Azure集成提供企业级代理托管
协议的选择取决于特定的要求,如互操作性需求、工具生态系统、部署环境以及对代理交互所需的控制级别。

微软代理框架与ASP。NET使得实现这些代理协议中的任何一个都很容易。通过提供统一的代理抽象层并利用ASP。NET的web托管功能,开发人员可以通过专用协议甚至同时使用多个协议快速公开相同的代理逻辑。
回购内容
此存储库为每个代理协议提供了专用的示例实现,演示了如何使用MCP、A2A、OpenAI和Foundry本机格式构建代理。此外,它还包括一个统一的项目(Hosting.unified),展示了同一代理如何通过所有四种协议(MCP、A2A、OpenAI和Foundry原生)同时公开其功能,从而实现了最大的灵活性,并允许不同的客户端使用其首选的通信方法与代理交互。
| 协议 | 项目 | 描述 |
|---|---|---|
| 主控程序 | src/主机。主控程序 | 实现工具集成的模型上下文协议 |
| A2A | src/主机。A2A | 实现Google的代理到代理协议,用于代理间通信 |
| 开放人工智能 | src/主机。开放人工智能 | 使用OpenAI的聊天完成API格式公开代理 |
| Foundry原生 | src/主机。AzureNative | 实现Microsoft Foundry的本机代理托管格式 |
| 统一 | src/主机。统一 | 通过所有四种协议同时暴露单个代理 |
代理功能
代理在 代理工厂.cs 模拟一个体育信息亭,提供有关虚构的“超级体育锦标赛”活动的信息。代理通过以下方式使用检索增强生成(RAG)模式 TextSearchProvider,其在生成响应之前从模拟知识库中检索相关信息。当用户询问赛事结果时,代理会查询停赛数据源,以查找有关获胜者(慕尼黑飞行海豚队-27:31)的信息或总冠军的详细信息。
测试
这 测试 该文件夹包含每个协议实现的HTTP测试脚本,允许验证代理并与代理交互。
测试脚本可用于 主控程序, A2A, 开放人工智能, Foundry原生,以及 统一 实施。
Azure环境
中定义的代理 代理工厂.cs 使用Azure OpenAI来提供其功能。
可以在中指定配置设置,包括Azure OpenAI端点、API密钥和已部署聊天完成模型的名称 conf/conf.env 文件。
或者 setup/setup.azcli PowerShell Azure CLI脚本可用于自动创建具有所有必需资源的必要Azure环境。
