阿里云大模型调用思考模型时输出思考后无法输出回复

简介: 在使用部分OpenAI模型(如deepseek-r1)时,官方代码只能输出思考过程而无法输出最终回复。问题源于代码中未正确判断思考数据为空字符串的情况。修正方法是增加对`delta.reasoning_content`和`delta.content`非空的判断条件。此外,`deepseek-v3`模型的输出格式不规范,包含无意义的信息且标签未闭合,建议避免使用该模型。

部分模型调用官方代码时只能输出思考无法输出回复

官方调用模式如下:

from openai import OpenAI
import os

# 初始化OpenAI客户端
client = OpenAI(
    # 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx"
    api_key = os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)

reasoning_content = ""  # 定义完整思考过程
answer_content = ""     # 定义完整回复
is_answering = False   # 判断是否结束思考过程并开始回复

# 创建聊天完成请求
completion = client.chat.completions.create(
    model="deepseek-r1",  # 此处以 deepseek-r1 为例,可按需更换模型名称
    messages=[
        {"role": "user", "content": "9.9和9.11谁大"}
    ],
    stream=True,
    # 解除以下注释会在最后一个chunk返回Token使用量
    # stream_options={
    #     "include_usage": True
    # }
)

print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")

for chunk in completion:
    # 如果chunk.choices为空,则打印usage
    if not chunk.choices:
        print("\nUsage:")
        print(chunk.usage)
    else:
        delta = chunk.choices[0].delta
        # 打印思考过程
        if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:
            print(delta.reasoning_content, end='', flush=True)
            reasoning_content += delta.reasoning_content
        else:
            # 开始回复
            if delta.content != "" and is_answering == False:
                print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")
                is_answering = True
            # 打印回复过程
            print(delta.content, end='', flush=True)
            answer_content += delta.content

问题原因是判断思考数据时没有判断思考数据为空字符串

#delta.reasoning_content增加delta.reasoning_content不等于空值的判断
if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None and delta.reasoning_content != '':
#同理delta.content增加不等于None的判断
if delta.content != "" and delta.content != None and is_answering == False:

以下是模型回复的几个例子

模型 思考过程 最终回复
deepseek-r1-distill-llama-70b chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, role=None, tool_calls=None, reasoning_content='愉快!\n'), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-r1-distill-llama-70b', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None) chunk == ', choices=[Choice(delta=ChoiceDelta(content='!欢迎来', function_call=None, role=None, tool_calls=None, reasoning_content=''), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-r1-distill-llama-70b', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
deepseek-r1 chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None, reasoning_content='。'), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-r1', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None) chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, role=None, tool_calls=None, reasoning_content=None), finish_reason='stop', index=0, logprobs=None)], created=, model='deepseek-r1', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)

三、deepseek-v3输出思考过程是在content中,输出模式跟其他模型完全不同,这个可能得特殊处理,但API示例用的同一套代码误导严重

建议不使用deepseek-v3模型,输出毫无规律,随性至极。

目前看出的问题:
1、content中<\think><\/think>标签无闭合,markdown无法识别
2、chunk中会包含content='思考过程===================='等意义不明的信息。

模型 思考过程 最终回复
deepseek-v3 chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='<think', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None) chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content=None, function_call=None, role=None, tool_calls=None, reasoning_content='对话。\n</think'), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
2025-02-26 13:00:55,044 - INFO - chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='', function_call=None, role='assistant', tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
2025-02-26 13:00:55,044 - INFO - chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='================', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
2025-02-26 13:00:55,124 - INFO - chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='====', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
2025-02-26 13:00:55,297 - INFO - chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='完整', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
2025-02-26 13:00:55,789 - INFO - chunk == ChatCompletionChunk(id='', choices=[Choice(delta=ChoiceDelta(content='思考过程====================', function_call=None, role=None, tool_calls=None), finish_reason=None, index=0, logprobs=None)], created=, model='deepseek-v3', object='chat.completion.chunk', service_tier=None, system_fingerprint=None, usage=None)
相关文章
|
2月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
672 109
|
2月前
|
分布式计算 测试技术 Spark
科大讯飞开源星火化学大模型、文生音效模型
近期,科大讯飞在魔搭社区(ModelScope)和Gitcode上开源两款模型:讯飞星火化学大模型Spark Chemistry-X1-13B、讯飞文生音频模型AudioFly,助力前沿化学技术研究,以及声音生成技术和应用的探索。
270 2
|
2月前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
1417 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
1月前
|
人工智能 搜索推荐 程序员
当AI学会“跨界思考”:多模态模型如何重塑人工智能
当AI学会“跨界思考”:多模态模型如何重塑人工智能
262 120
|
2月前
|
SQL 人工智能 自然语言处理
阿里云 CIO 蒋林泉:AI 大模型时代,我们如何用 RIDE 实现 RaaS 的首次落地?
本文整理自阿里云智能集团 CIO 蒋林泉在 AICon 2025 深圳的演讲,分享了阿里云在大模型应用落地中的实践经验。通过多个数字人项目案例,探讨了企业在 AI 应用中的组织转型、业务识别、产品定义与工程落地等关键环节,并提出了 RIDE 方法论(重组、识别、定义、执行),助力企业实现 AI 有效落地。
|
3月前
|
存储 人工智能 自然语言处理
告别文字乱码!全新文生图模型Qwen-Image来咯
通义千问团队开源了Qwen-Image,一个20B参数的MMDiT模型,具备卓越的文本渲染和图像编辑能力。支持复杂中英文文本生成与自动布局,适用于多场景图像生成与编辑任务,已在魔搭社区与Hugging Face开源。
683 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
567 13
AI Compass前沿速览:Qwen3-Max、Mixboard、Qwen3-VL、Audio2Face、Vidu Q2 AI视频生成模型、Qwen3-LiveTranslate-全模态同传大模型
|
2月前
|
自然语言处理 机器人 图形学
腾讯混元图像3.0正式开源发布!80B,首个工业级原生多模态生图模型
腾讯混元图像3.0,真的来了——开源,免费开放使用。 正式介绍一下:混元图像3.0(HunyuanImage 3.0),是首个工业级原生多模态生图模型,参数规模80B,也是目前测评效果最好、参数量最大的开源生图模型,效果可对…
757 2
腾讯混元图像3.0正式开源发布!80B,首个工业级原生多模态生图模型

热门文章

最新文章