AI - 尝试一下基于A2A SDK v1使用Microsoft Agent Framework for .NET创建A2A(Agent to Agent) Server和A2A Client
1. 简单介绍A2A(Agent to Agent)是用于智能体间通信与协作的协议。2025年6月份Google将A2A协议规范及SDK捐赠给了Linux基金会。A2A解决了AI Agent之间互相连通的问题这些AI Agent可以是不同的技术制作的也可以是远程的Agents。MCP(Model Context Protocol)是用于连接AI Agent到外部工具或者系统而A2A则是用于AI Agent间的连接。A2A SDK v1在2026年4月已经发布了。A2A SDK v1和之前的v0.3版本有很大的区别这是一个break change。在A2A SDK v1中, A2A hosting(server-side)和A2A Agent(client-side)的实现方式都有一些变化。微软在2026/4/3发布了Microsoft Agent Framework(简称MAF) 1.0。A2A v1其实也已经整合在MAF框架中Microsoft.Agents.AI.Hosting.A2A.AspNetCore就可以用于制作A2A项目。这边将尝试一下基于A2A SDK v1版本创建A2A server和A2A client。2. 创建A2A项目2.1 A2A .NET SDK这边打算使用.NET10来尝试一下A2A项目。如下是 A2A的.NET SDK信息A2A .NET nuget package: https://www.nuget.org/packages/A2AA2A .NET SDK GitHub repo: https://github.com/a2aproject/a2a-dotnet2.2 制作项目这边打算使用GitHub Models来制作AI Agent,2.2.1 获取GitHub Token1) 创建一个personal access token(classic)设定一下Note, Expiration, scope等信息2) 最后拷贝一下生成的PAT(personal access token)2.2.1 制作A2A server这是一个Asp.Net Core项目1给项目添加A2A package Microsoft.Agents.AI.Hosting.A2A.AspNetCore2) 创建一个chatclientIChatClient chatClient new ChatClient( model, new AzureKeyCredential(githubToken), new OpenAIClientOptions { Endpoint new Uri(apiEndpoint) } ) .AsIChatClient();3) 注册一个用于数学计算的AI Agentbuilder.Services.AddKeyedSingletonAIAgent(calculator-agent, (sp, _) { return chatClient .AsAIAgent( instructions: You are a math expert. When someone asks you a math question, please give the answer directly, name: calculator-agent ); });4) 注册一个A2A server给calculatorAgentbuilder.AddA2AServer(calculator-agent);5) 使用A2A的方式来暴露calculatorAgentapp.MapA2AHttpJson(calculator-agent, /a2a/calculator); app.MapWellKnownAgentCard(new AgentCard { Name calculator Agent, Description An agent that good at calculating, especially math, SupportedInterfaces [ new AgentInterface { Url https://[your host]/a2a/calculator, ProtocolBinding ProtocolBindingNames.HttpJson, ProtocolVersion 1.0, } ] });6) A2A server制作完成后使用命令dotnet run运行项目 2.2.2 制作A2A client这是一个console项目1) 从远程A2A server host address获取agent card然后创建AIAgentA2ACardResolver resolver new(new Uri(https://[your host])); AIAgent agent await resolver.GetAIAgentAsync();2) 发送信息给calculator agent并获取回复Console.WriteLine(await agent.RunAsync(Hello calculator! What is the result of 5 7?));3.2.3 运行一下分别运行A2A Server和A2A Client项目最后在A2A Client的Console中有结果输出如下图所示3.总结本文简单介绍了一下A2A Server和A2A Client项目的制作过程都是基于A2A v1版本的。上面创建的A2A Server可以通过devtunnel暴露endpoint到公网这样Copilot Studio agent就可以连接到这个A2A agent了。当前出现的AI相关的新技术新协议新框架很多还需继续跟着社区学习一下。本文如果哪里有错误麻烦告之谢谢谢谢