news 2026/6/23 18:51:15

.NET+AI | MEAI | 基于 IChatClient 获取思考过程(15)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
.NET+AI | MEAI | 基于 IChatClient 获取思考过程(15)

DeepSeek/千问推理模型思考过程获取指南

DeepSeek、千问等推理模型支持输出"思考过程"。本文介绍如何在 Microsoft.Extensions.AI 中启用推理模式,并实现流式与非流式获取推理内容。

核心概念

  • 🧠推理内容 (Reasoning Content):模型内部的思考逻辑,独立于最终回答,用于展示思考过程或调试。

  • 🔧JsonPatch:OpenAI SDK 提供的动态参数配置机制,用于设置enable_thinking等非标准参数。

  • ⚙️RawRepresentationFactory:Microsoft.Extensions.AI (MEAI) 的扩展点,允许开发者直接配置底层 SDK 对象。

流程图解

关键实现

1. 启用推理模式

通过RawRepresentationFactoryJsonPatch设置底层参数:

// 创建启用推理模式的 ChatOptions var reasoningOptions = new ChatOptions() { RawRepresentationFactory = (client) => { var options = new ChatCompletionOptions(); // 使用 JsonPatch 设置 enable_thinking 参数 (适用于千问/DeepSeek部分模型) options.Patch.Set("$.enable_thinking"u8, true); return options; } };

💡 提示:不同模型的参数可能不同,例如 DeepSeek Reasoner 可能需要设置thinking.typeenabled

2. 流式获取推理内容 (推荐)

在流式响应中实时提取推理内容,实现"思考中..."效果:

var updates = client.GetStreamingResponseAsync("问题...", options: reasoningOptions); var openAIUpdates = updates.AsOpenAIStreamingChatCompletionUpdatesAsync(); awaitforeach (var update in openAIUpdates) { Console.WriteLine("[思考]"); // 提取推理内容 if (update.Patch.TryGetValue("$.choices[0].delta.reasoning_content"u8, outstring reasoning)) { Console.Write($"{reasoning}"); } // 提取最终回答 if (update.Patch.TryGetValue("$.choices[0].delta.content"u8, outstring content)) { Console.Write(content); } }

3. 非流式获取

如果不需要实时展示,可在完整响应后提取:

// 需要引用 Azure.AI.OpenAI 包 using Azure.AI.OpenAI.Chat;
var response = await chatClient.GetResponseAsync("问题...", reasoningOptions); var chatCompletion = response.AsOpenAIChatCompletion(); // 使用扩展方法获取推理内容 var reasoning = chatCompletion.GetMessageReasoningContent();

最佳实践

  • 交互体验:优先使用流式响应,实时展示模型的思考过程,减少用户等待焦虑。

  • ⚠️参数适配:注意不同模型提供商的参数差异(如enable_thinkingvsthinking.type)。

  • 💰成本意识:推理内容会计入 Token 消耗,生产环境请根据需求开启。

  • 🔍调试利器:利用推理内容分析模型是如何得出结论的,有助于优化 Prompt。

总结

通过 Microsoft.Extensions.AI 的RawRepresentationFactory扩展点,我们可以灵活地支持 DeepSeek、千问等模型的推理特性。


如需获取文章配套完整代码,可扫码咨询领取。👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 14:12:25

Microsoft Agent Framework - Workflow 基本概念

前面的系列把关于 Agent 的部分讲完了。下面让我们开始说说关于 workflow 的部分。Microsoft Agent Framework 提供了一个强大的工作流 (Workflow) 系统,使您能够构建集成了 AI 代理和业务流程的智能自动化系统。借助其类型安全的体系结构和直观的设计,您…

作者头像 李华
网站建设 2026/6/22 18:29:34

Wan2.2-T2V-5B能否生成社会责任项目回顾?品牌形象塑造

Wan2.2-T2V-5B能否生成社会责任项目回顾?品牌形象塑造 在品牌传播的战场上,一个越来越明显的趋势正在浮现:内容的速度,正在决定品牌的温度。 想象一下——你的企业在云南山区完成了一次支教活动,志愿者教孩子们写代码、…

作者头像 李华
网站建设 2026/6/23 15:25:00

如何评估企业的量子传感器地震预警应用

如何评估企业的量子传感器地震预警应用关键词:量子传感器、地震预警、企业应用评估、评估指标、应用场景摘要:本文旨在探讨如何对企业的量子传感器地震预警应用进行全面评估。首先介绍了量子传感器地震预警应用的背景,包括目的、预期读者、文…

作者头像 李华
网站建设 2026/6/23 2:34:11

AI驱动的软件架构模式识别:辅助系统理解

AI驱动的软件架构模式识别:辅助系统理解关键词:AI、软件架构模式识别、系统理解、机器学习、深度学习摘要:本文聚焦于AI驱动的软件架构模式识别,旨在阐述其如何辅助系统理解。首先介绍了该领域的背景,包括目的、预期读者等内容。接…

作者头像 李华
网站建设 2026/6/23 0:35:18

大数据领域 OLAP 数据存储方案的选择与实践

大数据领域OLAP数据存储方案的选择与实践:从原理到落地的全指南 引言:为什么OLAP存储选择是大数据时代的“生死题”? 痛点引入:你是否遇到过这些“查数崩溃时刻”? 场景1:运营同学要查“过去7天各地区的用户…

作者头像 李华
网站建设 2026/6/22 17:50:38

Wan2.2-T2V-5B能否生成节日促销广告?零售业营销加速

Wan2.2-T2V-5B能否生成节日促销广告?零售业营销加速 你有没有经历过这种场景:距离春节只剩三天,市场部还在等外包团队出一条“喜庆红包商场氛围”的短视频,结果对方说“最快还得两天”——而你的社交媒体排期已经空在那里了。&…

作者头像 李华