Microsoft 的 .NET 团队与 CopilotKit 合作,宣布推出 AG-UI 协议的官方 .NET SDK。AG-UI 是一种规定人工智能代理如何与应用程序及面向用户的界面通信的标准。该软件包已与 TypeScript 和 Python 软件包一同发布在 AG-UI 代码仓库中,并通过 NuGet 以 MIT 许可证提供。
实际变化在于,任何 .NET 服务现在都可以直接通过 AG-UI 通信,无需依赖某个特定代理框架的专用实现。此外,Microsoft Agent Framework(简称 MAF)中的 AG-UI 支持现在建立在新的 SDK 软件包之上。
该软件包增加了什么?
AG-UI 旨在解决长时间运行的代理应用中的常见问题。代理可能会逐步发送令牌、调用工具、将任务委派给子代理,或在执行请求期间改变应用状态。如果没有通用协议,前端就必须为每个框架或服务理解不同的事件格式。
该协议将这些交互转换为类型化事件,其中包括 RUN_STARTED、TEXT_MESSAGE_CONTENT、STATE_DELTA 和 RUN_FINISHED。客户端决定如何显示这些事件,无论是在 Web 应用、终端、移动应用,还是 Slack 和 Teams 等聊天平台中。
服务器和客户端支持
该软件包包含两条互补路径。AGUI.Server 将代理转换为兼容 AG-UI 的端点,而 AGUI.Client 允许 .NET 应用连接到任何支持该协议的代理。该集成基于 IChatClient,这是 Microsoft.Extensions.AI 中的聊天抽象层。
在服务器端,ToChatRequestContext 函数会将传入的 AG-UI 请求拆解为客户端所需的消息和选项,然后由 AsAGUIEventStreamAsync 将响应流转换为协议事件。该转换还负责创建运行开始和结束事件,并在转入另一条消息或工具调用之前关闭尚未结束的文本块或推理块。
Microsoft Agent Framework 用户可以依赖 ASP.NET Core 集成,该集成提供 AddAGUIServer() 和 MapAGUIServer() 两个函数,以减少端点设置代码。
SDK 组件与兼容性
该软件包由通过 NuGet 发布的五个组件组成:
- AGUI.Abstractions:用于事件、消息、工具、状态和中断的协议模型。
- AGUI.Formatting:线路数据格式化,默认支持 Server-Sent Events。
- AGUI.Protobuf:可选的 Protobuf 支持,覆盖部分事件类型。
- AGUI.Client:消费 AG-UI 流。
- AGUI.Server:生成 AG-UI 流。
SSE 仍是默认格式,并支持 SDK 中提到的所有事件类型,而 Protobuf 支持仅限于其中一部分。
对 Agent Framework 用户有何变化?
现有用户的基本编程模型不会改变,事件格式也保持兼容,这意味着现有前端可以继续与升级后的服务器协同工作。不过,部分接口名称发生了变化:AddAGUIServer() 和 MapAGUIServer() 取代了 AddAGUI() 和 MapAGUI(),命名空间和类也迁移到了 AGUI.Client、AGUI.Server 和 AGUI.Abstractions 软件包中。
客户端支持从 .NET Framework 4.7.2 及更高版本消费 AG-UI,而呈现端点则要求使用当前版本的 .NET。
为什么这一公告很重要?
此次发布为 .NET 服务提供了处理多个界面的统一路径,无需为每个应用重新构建事件流层。它还允许使用 C#、Python 和 TypeScript 编写的组件相互协作,同时让集成层继续建立在 IChatClient 之上。对于希望将一个代理连接到 Web 界面、内部应用或不同聊天渠道的企业而言,这一点的价值日益增加。
不过,SDK 并不会免除构建服务器或选择事件呈现方式的需要;它负责协议,而 Web 架构和端点仍由应用负责。此外,Protobuf 并不全面支持所有事件,因此 SSE 仍是默认的完整选项。