惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
C
Check Point Blog
博客园_首页
B
Blog
D
Docker
U
Unit 42
量子位
I
InfoQ
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
美团技术团队
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Google DeepMind News
Google DeepMind News

博客园 - EdisonZhou

MAF快速入门(24)整合多个Skill来源 MAF快速入门(23)通过C#类定义Skills MAF快速入门(22)声明式Agent实战 MAF快速入门(21)RC5引入的Script运行能力 MAF快速入门(20)基于File-Based App开发MVP项目 MAF快速入门(19)给Agent Skill添加脚本执行能力 MAF快速入门(18)Agent Skill 快速开始 MAF快速入门(17)用户智能体交互协议AG-UI(下) MAF快速入门(16)用户智能体交互协议AG-UI(上) MAF快速入门(14)快速集成A2A Agent MAF快速入门(13)常见智能体编排模式 MAF快速入门(12)主工作流+子工作流 CTC蜀道会成都开发者年终聚会圆满结束! MAF快速入门(11)并行工作流 MAF快速入门(10)循环工作流 MAF快速入门(9)多路分支路由工作流 MAF快速入门(8)条件路由工作流 MAF快速入门(7)工作流的状态共享 MAF快速入门(6)混合编排工作流 MAF快速入门(5)开发自定义Executor
MAF快速入门(15)Agent调试利器:DevUI
EdisonZhou · 2026-02-09 · via 博客园 - EdisonZhou

大家好,我是Edison。

最近我一直在跟着圣杰的《.NET+AI智能体开发进阶》课程学习MAF开发多智能体工作流,我强烈推荐你也上车跟我一起出发!

上一篇,我们学习了MAF中快速集成A2A (Agent to Agent)。本篇,我们来了解下在MAF提供的调试利器:DevUI。

1 什么是DevUI

DevUI 是一个开箱即用的交互式 Web 调试界面,无需额外开发,启用后就能可视化测试、调试 AI 代理,从 Agent 列表查看、工具调用验证到工作流流转,全流程可视化,让 AI 智能体开发从 “盲调” 变 “明调”

DevUI 允许开发者:

  • 🧪 在浏览器中测试 Agent:无需编写客户端代码即可与 Agent 对话。

  • 📊 查看对话历史:清晰展示 User 和 Agent 之间的消息交互。

  • 🔍 调试多 Agent 系统:支持切换不同的 Agent 和 Workflow 进行测试。

  • 🛠️ 零配置启动:只需简单的配置即可集成到 ASP.NET Core 应用中。

综上所述,DevUI 就像是 Agent 的 “浏览器开发者工具”,让你能够直观看到 Agent 的 “一举一动”,快速调试和定位问题。

画外音:DevUI 即 Developer UI, it's For Developers!

2 快速开始:创建一个DevUI示例

在MAF中提供了一个内置的DevUI组件,我们可以非常方便地创建集成DevUI的Agent应用。

接下来,我们就一步一步完成一个DevUI示例。

首先,我们创建一个ASP.NET Web应用,安装以下NuGet包:

<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-preview.260128.1" />
<PackageReference Include="Microsoft.Agents.AI.Workflows" Version="1.0.0-preview.260128.1" />
<PackageReference Include="Microsoft.Agents.AI.DevUI" Version="1.0.0-preview.260128.1" />
<PackageReference Include="Microsoft.Agents.AI.Hosting" Version="1.0.0-preview.260128.1" />
<PackageReference Include="Microsoft.Agents.AI.Hosting.OpenAI" Version="1.0.0-alpha.260128.1" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="10.2.0-preview.1.26063.2" />

然后,就是整个示例的核心部分,我们一块一块来说:

(1)创建并注册ChatClient

var builder = WebApplication.CreateBuilder(args);
// Step0. Load Configuration
var config = new ConfigurationBuilder()
    .AddJsonFile($"appsettings.json", optional: false, reloadOnChange: true)
    .Build();
var openAIProvider = config.GetSection("OpenAI").Get<OpenAIProvider>();
// Step1. Register one ChatClient
var chatClient = new OpenAIClient(
        new ApiKeyCredential(openAIProvider.ApiKey),
        new OpenAIClientOptions { Endpoint = new Uri(openAIProvider.Endpoint) })
    .GetChatClient(openAIProvider.ModelId)
    .AsIChatClient();
builder.Services.AddChatClient(chatClient);

(2)创建并注册一些示例Agents:

// Step2. Register some Agents
builder.AddAIAgent("Assistant", "你是一位乐于助人的助手。回答问题简洁准确。");
builder.AddAIAgent("Poet", "你是一位富有创造力的诗人。使用优美的诗篇回答所有的请求");
builder.AddAIAgent("Coder", "你是一位资深的程序员。请协助用户解决编程问题,并提供代码示例。");

(3)创建并注册一个Workflow:

// Step3. Register one Workflow
var writerAgent = builder.AddAIAgent("Writer", "你是一位乐于助人的助手,善于回答用户提出的各种问题。");
var reviewerAgent = builder.AddAIAgent("Reviewer", "你是一位专业审阅者,请协助审阅并评价之前的回复。");
builder.AddWorkflow("TestWorkflow", (sp, key) =>
{
    var aiAgents = new List<IHostedAgentBuilder>()
    {
        writerAgent,
        reviewerAgent
    }
    .Select(hab => sp.GetRequiredKeyedService<AIAgent>(hab.Name));
    return AgentWorkflowBuilder.BuildSequential(
        workflowName: key,
        agents: aiAgents);
}).AddAsAIAgent();

(4)注册DevUI相关服务:

// Step4. Register DevUI related services
builder.Services.AddOpenAIResponses();
builder.Services.AddOpenAIConversations();

(5)映射DevUI相关端点:

var app = builder.Build();
// Step5. Mapping DevUI related endpoints
app.MapOpenAIResponses();
app.MapOpenAIConversations();
if (app.Environment.IsDevelopment())
{
    app.MapDevUI();
}
......
app.Run();

可以看到,我们仅用一行代码 app.MapDevUI() 就启用了DevUI,无需开发任何前端代码。

综上所述,我们创建了一些示例Agent 和 一个Workflow 作为后续演示。

3 开启调试:友好体验

这里我们启动起来,就会看到如下所示的界面:

image

整个DevUI界面分为两部分:

(1)左边是调试区 和 展示区,可以看到对话记录 和 Workflow节点状态;

(2)右边是状态跟踪区,展示Trace 和 Event 等执行记录,以便快速定位问题;

我们可以通过点击左上角的下拉框,看到我们注册的所有Agent 和 Workflow:

image

这就意味着,我们可以对所有注册的Agent对象进行调试!

3.1 调试单个Agent

这里我们测试Poet 和 Coder两个Agent:

首先是Poet,我们让它作一首诗。

image

其次是Coder,我们让它写一段代码。

image

可以看到,它的输出是流式的,且针对像代码这块输出做了代码块的展示,总之显示地很友好,看起来很舒服。

3.2 调试一个Workflow

这里我们测试一下注册的Workflow,这是一个 Editor -> Reviewer 的典型顺序工作流,首先由创作者编写初稿,然后由审阅者进行审阅,最终输出给用户。

下图展示切换到Workflow的展示:

image

可以看到,它清晰地展示了工作流的节点和顺序。

然后,点击Run按钮即可输入启动内容:

image

随后,可以看到它执行的全过程,通过右边的区域可以看到每个执行步骤的过程:

image

最终,整个工作流节点都变成了绿色的完成状态,我们可以在右边点击执行过程看到中间输出内容 和 最终输出内容。

此外,如果涉及工具调用的话,还可以点击 Tools 区域查看调用工具的记录,实在不要太方便!

4 注意事项

DevUI 虽好,但是其本身只是用来服务开发阶段的,因此建议:

  • 仅在开发环境启用DevUI,生产环境请关闭DevUI。
  • 如需在测试环境启用DevUI,建议添加访问权限控制,避免暴露敏感信息。

5 小结

本文介绍了DevUI是什么,它有什么样的优势,随后介绍了如何在MAF中快速集成DevUI用于开发调试获得友好的开发调试体验,希望本文的案例对你有所帮助。

示例源码

GitHub: https://github.com/EdisonTalk/MAFD

参考资料

圣杰,《.NET + AI 智能体开发进阶》(推荐指数:★★★★★)

Microsoft Learn,Agent Framework Tutorials