Repository navigation
Replies: 2 comments
|
这是 DeepSeek 思考模式 + tools 的硬校验:带 先自救:
修好之前,思考模式和工具调用不要放在同一条会话里。 |
|
给这个 400 的机理补一组跨路由测量,能把"哪层该修"钉得更死: 我们把带 thinking 块 + tool call 的助手历史分别喂进 pi-ai 0.82.1 和 0.84.1 的真实 transform(
判决文件: 对你的 400 的含义:思考模式后端严格要求历史里带 边界说明:我们的 live 腿跑在非思考模型上(思考模式的 400 正是待修项,没法拿它当验证环境),transform 侧结论与版本无关地稳定。 |
Uh oh!
There was an error while loading. Please reload this page.
描述
使用 DeepSeek 模型(
deepseek-v4-flash/deepseek-v4-pro)时,开启思考模式(reasoning_effort: max)并携带 tools 参数,多轮对话在第一次 tool call 之后会持续返回 400 错误。症状
第一轮正常。从第二轮开始(包括纯文本消息),每次请求都返回:
一旦出现这个错误,同会话后续所有请求都会持续报 400,即使只发纯文本消息也一样。原因是缺少
reasoning_content的 assistant 消息已经被写入了会话历史,每次重放都会触发 DeepSeek 的格式校验拒绝。根因
DSH 在重放会话历史时,assistant 消息只保留了
role、content、tool_calls三个字段,丢弃了reasoning_content字段,而 DeepSeek API 要求这个字段必须保留。根据 DeepSeek 官方思考模式文档:
复现步骤
reasoning_effort: maxweb_search、read、bash)reasoning_content预期行为
携带
tool_calls的 assistant 消息在后续请求中重放时,应保留原始的reasoning_content字段,以满足 DeepSeek API 的要求。环境
deepseek-v4-flash/deepseek-v4-proreasoning_effort: max)复现所用的请求参数
POST /v1/chat/completions(OpenAI 兼容协议)deepseek-v4-flashreasoning_effort: "max"extra_body: { "thinking": { "type": "enabled" } }tools参数(如web_search、read等内置工具)All reactions