找回密码
 注册

Sign in with Twitter

It's what's happening?

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 168|回复: 0

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

[复制链接]
发表于 2025-12-9 02:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
作者:微信文章
DeepSeek/千问推理模型思考过程获取指南

w1.jpg

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

    🧠 推理内容 (Reasoning Content) :模型内部的思考逻辑,独立于最终回答,用于展示思考过程或调试。🔧 JsonPatch:OpenAI SDK 提供的动态参数配置机制,用于设置 enable_thinking 等非标准参数。⚙️ RawRepresentationFactory:Microsoft.Extensions.AI (MEAI) 的扩展点,允许开发者直接配置底层 SDK 对象。
流程图解

w2.jpg
关键实现

1. 启用推理模式

通过 RawRepresentationFactory 和 JsonPatch 设置底层参数:
// 创建启用推理模式的 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.type 为 enabled。
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_thinking vs thinking.type)。💰 成本意识:推理内容会计入 Token 消耗,生产环境请根据需求开启。🔍 调试利器:利用推理内容分析模型是如何得出结论的,有助于优化 Prompt。
总结

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


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

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-12-15 22:49 , Processed in 0.085837 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表