)
目录一句话简介 核心价值 Agent vs ChatClient什么时候用 Agent️ MAF 架构定位 快速开始创建第一个 Agent三步创建 Agent完整示例口语教练 Agent 流式调用提升用户体验对比同步 vs 流式流式调用示例 MAF 核心概念三大核心组件⚠️ 当前限制无法记住历史 解决方案AgentThread 总结一句话简介Microsoft Agent Framework (MAF) 是微软推出的企业级 AI Agent 开发框架基于 Microsoft.Extensions.AI 构建为开发者提供状态管理、身份定义和工具管理等高级能力。 核心价值✅状态管理内置 AgentThread 实现多轮对话记忆✅身份定义固定的 Instructions 和 Name无需每次传入✅工具管理Agent 级别统一管理工具集合✅企业级构建在 MEAI 之上适合生产环境 Agent vs ChatClient什么时候用 Agent很多开发者会困惑我已经有 IChatClient 了为什么还需要 Agent特性IChatClientAIAgent定位 底层 AI 调用抽象 高级智能体封装状态管理❌ 无状态每次调用独立✅ 内置对话线程 (AgentThread)身份定义❌ 需手动传入 System Message✅ 固定的 Instructions 和 Name工具管理⚠️ 需手动配置 ChatOptions.Tools✅ Agent 级别统一管理使用场景 单次对话场景 多轮交互、企业级对话系统简单来说ChatClient 纯函数给定输入返回输出不保留状态Agent 有记忆的助手有固定身份、能记住上下文、能使用工具️ MAF 架构定位MAF 构建在 Microsoft.Extensions.AI 之上提供更高层次的抽象让开发者专注于业务逻辑。 快速开始创建第一个 Agent三步创建 Agent完整示例口语教练 Agent// 1. 获取底层 ChatClient var chatClient AIClientHelper.GetDefaultChatClient(); // 2. 创建 Agent AIAgent spokenEnglishCoach chatClient.CreateAIAgent( instructions: 你是一位专业的英语口语教练。帮助学生提升英语口语能力始终保持鼓励和友好的态度。, name: SpokenEnglishCoach ); // 3. 调用 Agent (同步模式) var response await spokenEnglishCoach.RunAsync( 我想提高英语口语能力但不知道从哪里开始。你能给我一些建议吗? ); Console.WriteLine($ {spokenEnglishCoach.Name}: {response});核心要点instructions定义 Agent 的角色和行为System MessagenameAgent 的唯一标识用于日志和调试RunAsync同步调用等待完整响应 流式调用提升用户体验同步调用需要等待完整响应用户体验不佳。流式调用可以逐字显示 AI 的响应就像 ChatGPT 那样。对比同步 vs 流式流式调用示例// 流式调用逐块输出 await foreach (var chunk in spokenEnglishCoach.RunStreamingAsync( 请讲解如何练习英语的连读技巧并给出例子。 )) { Console.Write(chunk); // 逐块输出不换行 }核心差异同步RunAsync()→Taskstring流式RunStreamingAsync()→IAsyncEnumerablestring MAF 核心概念三大核心组件组件功能说明AIAgent智能代理具有固定身份Name Instructions和工具集合AgentThread对话线程维护独立的对话历史支持序列化AgentRun执行实例每次调用创建一个 Run返回响应⚠️ 当前限制无法记住历史上面的示例中每次调用RunAsync()都是独立的单次对话Agent 不会记住之前的内容。问题演示// 第一轮 var response1 await spokenEnglishCoach.RunAsync(我叫张三我想学英语口语。); // 第二轮 - Agent 无法记住 我叫张三 var response2 await spokenEnglishCoach.RunAsync(你知道我叫什么名字吗?); // ❌ Agent 会回答抱歉我不知道您的名字... 解决方案AgentThread要实现多轮对话记忆需要使用AgentThread// 创建对话线程 var thread agent.GetNewThread(); // 所有对话使用同一个 thread await agent.RunAsync(我叫张三, thread); await agent.RunAsync(你知道我叫什么吗?, thread); // ✅ 能够记住您好张三AgentThread 将在下节课详细讲解。 总结✅MAF 定位构建在 MEAI 之上的企业级 Agent 框架提供状态管理和工具能力✅Agent vs ChatClientAgent 是有状态、有身份的智能体适合多轮对话场景✅创建 AgentchatClient.CreateAIAgent(instructions, name)三步完成✅调用模式同步调用RunAsync()和流式调用RunStreamingAsync()✅核心概念Agent智能代理、Thread对话线程、Run执行实例⚠️当前限制单次调用无历史记忆需使用 AgentThread 解决下节课下节课预告《多轮对话与上下文管理》—— 深入 AgentThread 的创建、使用和持久化。引入地址