400 The `content[].thinking` in the thinking mode must be passed back to the API...

2026年05月28日 14:31 27.06 秒 success

错误信息

API Error: 400 The `content[].thinking` in the thinking mode must be passed back to the API. (request id: )

AI 解决方案

🌐 错误翻译


原文:The `content[].thinking` in the thinking mode must be passed back to the API.
译文:在思考模式下,`content[].thinking`(思考内容)必须被传回API。

🎯 原因分析


  • 根本原因:您在调用支持“思考模式”(如OpenAI o1系列模型或类似功能)的API时,没有在后续请求中正确地回传(pass back) 上一次API响应中返回的 thinking 内容。

  • 具体上下文:这类模型在处理复杂问题时,会生成一个内部的 thinking 过程,并在响应中包含它。在多轮对话或链式调用中,为了维持上下文和准确性,API要求客户端必须将这个 thinking 字段作为后续请求输入的一部分。
  • 💡 解决方案


    在构建后续的API请求时,必须将上一次响应中 response.choices[0].message 对象里的 thinking 字段,完整地放入您新的 messages 数组中对应助手(assistant)消息的 content 里。

    # 错误示例(未传递 thinking):
    messages = [
        {"role": "user", "content": "第一步问题"},
        # 假设第一次API调用返回了包含 thinking 的 response
        {"role": "assistant", "content": response.choices[0].message.content} # 只传递了最终回答
    ]
    
    # ✅ 正确示例(传递 thinking):
    messages = [
        {"role": "user", "content": "第一步问题"},
        # 将上一轮完整的 assistant 响应(包含 content 和 thinking)传入
        {"role": "assistant", "content": response.choices[0].message},
        {"role": "user", "content": "根据你的思考,请进行第二步"}
    ]
    

    关键点response.choices[0].message 本身就是一个字典对象,其中包含了 contentthinking 等字段,直接将其作为 assistant 角色的内容传入即可。

    🛡️ 预防措施


  • 仔细阅读文档:在使用任何带有“高级推理”或“思考模式”的API时,务必查阅其官方文档中关于 “多轮对话”“上下文管理” 的具体说明。

  • 构建健壮的上下文管理器:在代码中为对话历史(messages列表)编写一个统一的管理函数,确保每次添加助手响应时,都传入完整的响应对象(或其中的必要字段),而不是仅仅提取 content 字符串。