reasoning_content
DeepSeek thinking mode 下单独存放模型推理过程的响应字段,与普通 content 分离,在多轮工具循环中用于维持推理状态上下文
时间轴 (近 90 天)
对于推理模型,Eino 将响应中的 reasoning_content 映射到 out.ReasoningContent,内联的 <think> 标签保留在 out.Content 中,框架不会剥离。
使用 tools 时,必须把历史中每一轮 assistant 的 reasoning_content 原样回传(包括未发起工具调用的轮次),否则返回 HTTP 400;不使用 tools 时该字段被忽略。
思考内容的字段名在生态中有三种写法:reasoning、reasoning_content、thinking;vLLM写入reasoning_content,而读取端只查找reasoning,导致误报空响应。
修复 400 错误最稳妥的做法是追加完整的 assistant 消息对象(如 Python 中 messages.append(resp.choices[0].message)),而非手工拼副本。
在 DeepSeek 思考模式下,reasoning_content 字段存储模型在最终回答前的推理过程,且在请求携带 tools 时必须原样回传历史 assistant 消息中的该字段。
多数客户端 SDK 或自研消息序列化器只保留 OpenAI 标准的 content 和 tool_calls 字段,丢弃非标准扩展字段 reasoning_content,这是导致 400 错误在 opencode、LangChain、claude-code-router 等项目中反复出现的结构性原因。
在 DeepSeek 自家 API 上,使用 thinking mode 的工具调用必须回传每一轮历史 assistant 消息的 reasoning_content,否则返回 400。
全部知识事实 (7)
在 DeepSeek 自家 API 上,使用 thinking mode 的工具调用必须回传每一轮历史 assistant 消息的 reasoning_content,否则返回 400。
60%待验证对于推理模型,Eino 将响应中的 reasoning_content 映射到 out.ReasoningContent,内联的 <think> 标签保留在 out.Content 中,框架不会剥离。
50%待验证使用 tools 时,必须把历史中每一轮 assistant 的 reasoning_content 原样回传(包括未发起工具调用的轮次),否则返回 HTTP 400;不使用 tools 时该字段被忽略。
50%待验证思考内容的字段名在生态中有三种写法:reasoning、reasoning_content、thinking;vLLM写入reasoning_content,而读取端只查找reasoning,导致误报空响应。
50%待验证修复 400 错误最稳妥的做法是追加完整的 assistant 消息对象(如 Python 中 messages.append(resp.choices[0].message)),而非手工拼副本。
50%待验证在 DeepSeek 思考模式下,reasoning_content 字段存储模型在最终回答前的推理过程,且在请求携带 tools 时必须原样回传历史 assistant 消息中的该字段。
50%待验证多数客户端 SDK 或自研消息序列化器只保留 OpenAI 标准的 content 和 tool_calls 字段,丢弃非标准扩展字段 reasoning_content,这是导致 400 错误在 opencode、LangChain、claude-code-router 等项目中反复出现的结构性原因。
50%