Microsoft 宣布推出新的 Blazor AI 组件。这是一套面向 Blazor 应用开发者的实验性组件,适用于希望将智能代理交互集成到应用界面中,而不是仅使用传统聊天界面的开发者。这些组件提供状态模型和用户界面元素,用于显示流式响应、工具调用、审批请求、共享状态以及生成式界面体验。
该体验要求使用 .NET 11 RC1 SDK,并添加实验性程序包 Microsoft.AspNetCore.Components.AI。组件 ChatPage 提供了一个现成的入口,其中包括消息列表、输入字段、流式传输指示器以及重试功能。在编程层面,UIAgent 管理交互状态,并封装来自 Microsoft.Extensions.AI 的 IChatClient,然后将流式响应更新转换为可观察和重新渲染的内容块。
从聊天到完整应用界面
该程序包并不局限于显示文本。ContentBlock 表示交互的一部分,并具有身份、角色、生命周期状态以及变更通知;其中还包含用于对话内容、工具调用、审批和前端操作的专用块。对于需要自定义布局的开发者,该程序包提供了 AgentBoundary、MessageList、MessageInput 和 BlockRenderer 等低级元素。
应用还可以使用由服务器执行的工具,例如天气工具,并将调用及其结果转换为自定义 Razor 组件。同样,前端工具可以执行应用所拥有的功能,例如导航、打开窗口或更改界面颜色。对于需要人工决策的操作,FunctionApprovalBlock 会暂停交互,直到用户批准或拒绝该操作。
通过 AG-UI 连接远程代理
Blazor AI 组件可以与任何 IChatClient 配合使用,也可以通过 AG-UI .NET SDK 程序包中的 AGUIChatClient 连接远程代理。AG-UI 是一种基于事件的开放协议,用于统一代理与面向用户的应用之间的通信,同时不会强制规定特定的界面组件。
AgenticUI 示例展示了一种架构,其中包含 Blazor Web App、基于 ASP.NET Core 构建的代理服务器以及 Aspire AppHost,并使用 Microsoft Foundry 和 Microsoft Agent Framework。事件通过 HTTP 和 Server-Sent Events 发送,而 Blazor 应用则保留自己的显示层。
实际会发生什么变化?
这些组件让应用能够自行决定如何显示代理的输出。开发者可以将工具调用显示为自定义卡片,在用户与代理之间同步结构化状态,或将建议显示为可在采用前审核的变更,也可以随着新状态到达而实时更新计划。这些组件还支持处理模型提供的推理摘要,同时强调这些是模型发送的摘要,而不是内部思维链。
这一层将 Blazor 的角色从显示聊天扩展为构建用户与代理协作的工作空间,但并不会免除应用的责任。图像、文件和音频的输入,以及模型专用媒体的处理,仍然属于应用和人工智能服务的任务。此外,这些组件仍处于实验阶段,这意味着其 API 和使用体验可能会根据提交到 dotnet/aspnetcore 存储库的反馈而发生变化。
给开发者的结论
Microsoft 面向的是那些需要将代理集成到具有明确架构和工作流的应用中的开发者,而不是希望添加一个独立聊天机器人的开发者。其核心价值在于,在可自定义的 Blazor 模型中统一处理流式传输、工具、状态和审批,同时让应用掌握界面呈现方式和行为的最终决定权。