为 Chat Completions 请求选择推理参数
GenStudio 的 Chat Completions 接口兼容 OpenAI 请求形态,但推理参数不是一个统一字段。接入前先确认模型系列,再决定当前请求的控制参数、响应解析字段和多轮历史回传方式。
如果只需要快速判断参数,请先看本页速查。需要完整代码和工具调用历史处理时,再进入对应模型系列页面。
按模型系列确定参数来源
先用模型系列决定参数来源。生产代码优先使用模型系列自己的参数;只有在目标模型验证过效果后,再把平台通用开关写入业务请求。
按模型系列选择原生参数
同一个请求字段不能套用到所有模型。选错字段时,模型可能忽略参数、返回 400,或返回没有推理字段的正常回答。
本组文档的模型系列页面优先使用模型提供方原生参数。平台通用 enable_thinking 只作为兼容选项,见通用开关使用范围。
- GLM:当前请求使用
thinking.type,响应读取reasoning_content,历史保留使用thinking.clear_thinking。查看使用 GLM 的thinking参数。 - Kimi:当前请求使用
thinking.type,响应读取reasoning_content,历史保留使用thinking.keep。查看使用 Kimi 的thinking参数。 - MiniMax:
reasoning_split只控制返回形态;推理内容可能在reasoning_details,也可能在content的<think>中;历史回传优先保留完整 assistant 消息。查看使用 MiniMax 的reasoning_split。 - DeepSeek:当前请求使用
thinking.type和reasoning_effort,响应读取reasoning_content;工具调用历史中需要回传推理字段。查看使用 DeepSeek 的thinking参数。 - Qwen 文本模型:当前请求使用
enable_thinking,部分模型支持thinking_budget;响应读取reasoning_content,部分模型支持preserve_thinking。查看使用 Qwen 文本模型的enable_thinking。 - Qwen-VL:多模态请求中使用
enable_thinking,响应读取reasoning_content;历史保留规则以 Qwen-VL 页面为准。查看使用 Qwen-VL 的enable_thinking。 - MiMo:当前请求使用
thinking.type,响应读取reasoning_content;工具调用历史中需要回传推理字段。查看使用 MiMo 的thinking.type。
检查默认思考是否符合预期
先用默认行为判断是否必须显式传参。生产代码需要稳定行为时,仍应设置对应模型系列的推理参数。
- GLM:
glm-5.1、glm-5、glm-4.7默认开启思考;glm-4.6是混合或自动思考行为。 - Kimi:
kimi-k2-thinking强制思考;kimi-k2.6、kimi-k2.5默认开启,可显式关闭。 - Qwen 开放混合模型:
qwen3-8b、qwen3-14b、qwen3-32b、qwen3-30b-a3b默认可见推理只在流式响应中返回。 - Qwen
qwen3-235b-a22b:默认在非流式和流式响应中都返回可见推理内容。 - Qwen instruct、coder、next instruct 模型:
qwen3-235b-a22b-instruct-2507、qwen3-coder-480b-a35b-instruct、qwen3-next-80b-a3b-instruct接受推理参数,但默认不返回可见推理内容。 - Qwen thinking 后缀模型:
qwen3-next-80b-a3b-thinking默认返回可见推理内容。 - Qwen-VL:
qwen3-vl-235b-a22b-instruct默认不返回可见推理;qwen3-vl-235b-a22b-thinking默认返回可见推理内容。 - DeepSeek、MiMo、MiniMax:按目标模型验证默认行为;接入时优先显式设置该模型系列的原生参数。
提醒:没有返回 reasoning_content、reasoning_details 或 <think>,只表示这次响应没有可见推理内容,不一定表示模型没有内部推理。
只在验证后使用通用 enable_thinking
部分模型接受 enable_thinking 参数。它接受布尔值,但不是所有模型系列的统一协议。
使用时按下面的范围处理:
- Qwen 文本模型和 Qwen-VL 本来就使用
enable_thinking,按对应模型系列页面接入。 - GLM、Kimi、DeepSeek、MiMo、MiniMax 等模型系列优先使用各自页面中的原生参数。
- 如果要在非 Qwen 模型上使用
enable_thinking,先对目标模型发送一次等价请求,确认它能改变可见推理内容后再写入业务代码。
接入请求、响应和历史消息
选定参数后,还需要同时处理响应字段和历史消息。当前请求开关只影响这一次生成;多轮对话和工具调用还取决于 assistant 消息中的推理字段是否按原样回传。
设置当前请求的推理开关
当前请求的控制参数只影响这一次模型生成。它不自动修复历史消息,也不等同于历史推理内容保留策略。
- GLM、Kimi、MiMo、DeepSeek 使用
thinking.type:
extra_body = {"thinking": {"type": "enabled"}}- Qwen 文本模型和 Qwen-VL 使用
enable_thinking参数:
extra_body = {"enable_thinking": True}- MiniMax 的
reasoning_split主要控制推理内容返回在哪里,不是通用开关:
extra_body = {"reasoning_split": True}如果某个模型是强制思考模型,不要把关闭思考作为正常路径写入业务逻辑。强制思考模型即使接受请求,也可能忽略关闭参数或返回与可切换模型不同的结果。
读取响应中的推理内容
应用侧应按模型系列读取推理字段,并允许字段缺失。很多 OpenAI SDK 类型不会静态声明 provider 扩展字段,Python 代码应使用动态访问方式。
message = response.choices[0].message
reasoning = getattr(message, "reasoning_content", None)
reasoning_details = getattr(message, "reasoning_details", None)
content = message.content or ""
if reasoning:
print(reasoning)
elif reasoning_details:
print(reasoning_details)
elif "<think>" in content:
print(content)流式响应中也按同样的字段名读取 delta。如果 choices 为空,或某个 chunk 只携带 usage 信息,应跳过该 chunk。
for chunk in stream:
if not chunk.choices:
continue
delta = chunk.choices[0].delta
reasoning = getattr(delta, "reasoning_content", None)
if reasoning:
print(reasoning, end="")
text = getattr(delta, "content", None)
if text:
print(text, end="")回传历史中的推理内容
只有当前请求参数还不够。多轮对话,尤其是工具调用,会把上一轮 assistant 消息放回 messages[]。如果上一轮 assistant 消息带有推理字段,回传策略会影响请求是否被接受和模型是否能延续上下文。
- 普通多轮对话没有工具调用时,通常只需要回传面向用户的 assistant
content。不要伪造没有返回过的推理字段。 - assistant 同时返回
tool_calls和reasoning_content时,回传 assistant 消息时保留原始reasoning_content,再追加 tool 消息。 - GLM preserved thinking 需要在请求体中使用
thinking.clear_thinking: false,并原样回传已经存在的reasoning_content。 - Kimi preserved thinking 需要在请求体中使用
thinking.keep,并原样回传已经存在的reasoning_content。 - MiniMax 工具调用需要回传完整 assistant 消息,因为推理内容可能在
reasoning_details或content中。 - Qwen
preserve_thinking只在目标模型明确支持且经过验证时启用。
回传历史时不要重新排序、改写或补写推理内容。如果某一轮关闭了思考,assistant 消息没有 reasoning_content,保留它的缺失状态即可。
没有推理内容时检查请求和响应模式
请求返回 200 但没有推理内容时,先检查请求和模型行为,再判断是否是错误。
- 确认模型是否默认关闭推理,是否需要显式设置
thinking.type或enable_thinking。 - 确认模型是否是强制思考模型。强制思考模型通常不需要显式开启。
- 确认当前响应模式。流式响应需要从
delta中拼接推理内容。 - 检查 MiniMax 是否使用了
reasoning_split。未开启 split 时,推理可能在content的<think>片段中。 - 检查 Qwen-VL 是否使用了视觉请求形态,并以视觉模型验证结果为准。
- 如果请求返回 400,先移除不属于该模型系列的推理参数,再按对应系列页面重新构造请求。
查看完整请求样例和回传规则
确定模型系列后,进入对应页面查看完整请求样例和历史回传规则。