1. 概述

推理模型是基于深度学习的AI系统,通过逻辑推演、知识关联和上下文分析解决复杂任务,典型应用包括数学解题、代码生成、逻辑判断和多步推理场景。这类模型通常具备以下特性:

  • 结构化思维:采用思维链(Chain-of-Thought)等技术分解复杂问题
  • 知识融合:整合领域知识库与常识推理能力
  • 自修正机制:通过验证反馈回路提升结果可靠性
  • 多模态处理:部分先进模型支持文本/代码/公式混合输入

2. 平台支持推理模型列表

  • MiniMaxAI:

    • MiniMaxAI/MiniMax-M1-80k
  • Qwen 系列:

    • Tongyi-Zhiwen/QwenLong-L1-32B
    • Qwen/Qwen3-30B-A3B
    • Qwen/Qwen3-32B
    • Qwen/Qwen3-14B
    • Qwen/Qwen3-8B
    • Qwen/Qwen3-235B-A22B
    • Qwen/QwQ-32B
  • THUDM 系列:

    • THUDM/GLM-Z1-32B-0414
    • THUDM/GLM-Z1-Rumination-32B-0414
    • THUDM/GLM-Z1-9B-0414
  • deepseek-ai 系列:

    • Pro/deepseek-ai/DeepSeek-R1
    • deepseek-ai/DeepSeek-R1
    • Pro/deepseek-ai/DeepSeek-R1-0120
    • deepseek-ai/DeepSeek-R1-Distill-Qwen-32B
    • deepseek-ai/DeepSeek-R1-Distill-Qwen-14B
    • deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
    • deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
    • Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
    • Pro/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

3. 使用建议

3.1 API 参数

3.1.1 请求参数

  • 请求参数

    • 最大思维链长度(thinking_budget):模型用于内部推理的 token 数,调节 thinking_budget 控制回答的思维链长度。
    • 最大回复长度(max_tokens):仅用于限制模型最终输出给用户的回复 token 数,不包含思维链部分。用户可正常配置,控制回复的最大长度。

最大上下文长度(context_length):包括用户输入长度+思维链长度+输出长度的最大内容长度,非请求参数,不需要用户自己设置。

不同模型支持的最大回复长度、最大思维链长度及最大上下文长度如下表所示:

模型最大回复长度最大思维链长度最大上下文长度
DeepSeek-R1163843276898304
DeepSeek-R1-Distill 系列1638432768131072
Qwen3 系列819232768131072
QwQ-32B3276816384131072
GLM-Z1 系列1638432768131072
MiniMax-M1-80k400004000080000

推理模型思维链与回复长度分离后,输出行为将遵循以下规则:

  • 若“思考阶段”生成的 token 数达到 thinking_budget,因 Qwen3 系列推理模型原生支持该参数模型将强制停止思维链推理,其他推理模型有可能会继续输出思考内容。
  • 若最大回复长度超过 max_tokens或上下文长度超过context_length 限制,回复内容将进行截断,响应中的 finish_reason 字段将标记为 length,表示因长度限制终止输出。

3.1.2 返回参数

  • 返回参数:
    • reasoning_content:思维链内容,与 content 同级。
    • content:最终回答内容

3.2 DeepSeek-R1 使用建议

  • 将 temperature 设置在 0.5-0.7 范围内(推荐值为 0.6),以防止无限循环或不连贯的输出。

  • 将 top_p 的值设置在 0.95。

  • 避免添加系统提示,所有指令应包含在用户提示中。

  • 对于数学问题,建议在提示中包含一个指令,例如:“请逐步推理,并将最终答案写在 \boxed 中。”

  • 在评估模型性能时,建议进行多次测试并平均结果。

4. openai请求示例

4.1 流式输出请求

from openai import OpenAI

url = 'https://api.siliconflow.cn/v1/'
api_key = 'your api_key'

client = OpenAI(
    base_url=url,
    api_key=api_key
)

# 发送带有流式输出的请求
content = ""
reasoning_content=""
messages = [
    {"role": "user", "content": "奥运会的传奇名将有哪些?"}
]
response = client.chat.completions.create(
    model="Pro/deepseek-ai/DeepSeek-R1",
    messages=messages,
    stream=True,  # 启用流式输出
    max_tokens=4096,
    extra_body={
        "thinking_budget": 1024
    }
)
# 逐步接收并处理响应
for chunk in response:
    if chunk.choices[0].delta.content:
        content += chunk.choices[0].delta.content
    if chunk.choices[0].delta.reasoning_content:
        reasoning_content += chunk.choices[0].delta.reasoning_content

# Round 2
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "继续"})
response = client.chat.completions.create(
    model="Pro/deepseek-ai/DeepSeek-R1",
    messages=messages,
    stream=True
)

4.2 非流式输出请求

from openai import OpenAI
url = 'https://api.siliconflow.cn/v1/'
api_key = 'your api_key'

client = OpenAI(
    base_url=url,
    api_key=api_key
)

# 发送非流式输出的请求
messages = [
    {"role": "user", "content": "奥运会的传奇名将有哪些?"}
]
response = client.chat.completions.create(
    model="Pro/deepseek-ai/DeepSeek-R1",
    messages=messages,
    stream=False, 
    max_tokens=4096,
    extra_body={
        "thinking_budget": 1024
    }
)
content = response.choices[0].message.content
reasoning_content = response.choices[0].message.reasoning_content

# Round 2
messages.append({"role": "assistant", "content": content})
messages.append({'role': 'user', 'content': "继续"})
response = client.chat.completions.create(
    model="Pro/deepseek-ai/DeepSeek-R1",
    messages=messages,
    stream=False
)

5. 注意事项

  • API 密钥:请确保使用正确的 API 密钥进行身份验证。
  • 流式输出:流式输出适用于需要逐步接收响应的场景,而非流式输出则适用于一次性获取完整响应的场景。

6. 常见问题

  • 如何获取 API 密钥?

    请访问 SiliconFlow 注册并获取 API 密钥。

  • 如何处理超长文本?

    可以通过调整 max_tokens 参数来控制输出的长度,但请注意最大长度为 16K。