引言

2025年初,深度求索正式推出 DeepSeek-R1 推理模型,在数学、编程、逻辑推理等任务上展现出媲美 OpenAI o1 的实力,并且完全开源。与普通大模型“一步到位”的生成方式不同,R1 会先进行深度思考,输出长长的内部推理链,再给出最终答案。这种显式的思维链不仅提升了答案的准确性,也让开发者能更好地理解模型的决策过程。

本文将带你深入解析 DeepSeek-R1 的核心概念,并通过一个完整、可运行的 Python 示例,演示如何调用 API 来获得模型的思考过程和最终回复。无论你是算法工程师还是应用开发者,都能从中收获实操经验。

1. 核心概念:什么是推理模型

传统大语言模型在接收到问题后,直接生成第一个输出 token,逐步续写回答,没有显式的“思考”环节。虽然可以通过 system prompt 要求模型“一步步思考”,但这种思考对用户不可见,也无法进行干预或分析。

推理模型则不同,它会先输出一段隐式的推理过程(思维链),再基于该推理生成最终答案。DeepSeek-R1 正是这类模型的代表。

从架构角度看,R1 没有改变底层 Transformer 结构,而是通过强化学习(RL)和冷启动数据训练,让模型学会在回答问题前进行更深层的多步推理。具体来说:

  • 长思维链能力:模型能够连续输出数千个 token 的推理步骤,包括自我验证、错误修正、多角度分析等行为。
  • 推理与答案分离:API 层面,推理内容放在 reasoning_content 字段中,最终答案放在 content 字段,允许开发者分别使用。
  • 可控的思考深度:通过设置 reasoning_effort 参数(可选 low / medium / high),可以控制模型投入的推理计算量。

💡 关键区别:普通模型输出的是“答案”,而推理模型输出的是“思考过程 + 答案”,相当于模型把大脑里的草稿纸也摊开给你看。

1.1 思维链示例

假设你问:“f(x)=x²+3x+2 在区间 [-3,1] 上的最小值是多少?”
普通模型可能直接给出答案“-0.25”。
DeepSeek-R1 则会像人类一样推导:

这是一个二次函数,开口向上,所以最小值在对称轴上取得。
对称轴公式 x = -b/(2a) = -3/(2*1) = -1.5.
检查 -1.5 是否在区间 [-3,1] 内:在。
代入得 f(-1.5)=(-1.5)^2 + 3*(-1.5) + 2 = 2.25 - 4.5 + 2 = -0.25.
所以最小值是 -0.25。

这种透明化的推理极大地提升了答案的可靠性和可解释性,尤其适用于金融分析、医疗诊断、法律咨询等需要严格逻辑的领域。

2. DeepSeek-R1 API 调用实战

DeepSeek-R1 目前通过 DeepSeek 官方 API 提供服务,接口完全兼容 OpenAI SDK,迁移成本几乎为零。下面我们将从零开始,编写一段完整的 Python 代码来调用 R1 模型。

2.1 准备工作

  1. 获取 API Key:访问 platform.deepseek.com 注册账号,在“API Keys”页面创建一个新的 Key。
  2. 安装环境:本教程使用 Python 3.8+,需要安装 openai 库(因为 DeepSeek API 与 OpenAI 兼容)。
pip install openai
  1. 保存 API Key(可选但推荐):将 API Key 设置为系统环境变量 DEEPSEEK_API_KEY,避免硬编码。
# Linux / Mac
export DEEPSEEK_API_KEY="你的key"
# Windows PowerShell
$env:DEEPSEEK_API_KEY="你的key"

2.2 完整代码示例

以下代码演示了如何向 DeepSeek-R1 发送问题,并分别获取思维链过程和最终答案。你可以直接复制运行(记得替换 API Key)。

import os
from openai import OpenAI

# 1. 初始化客户端
# 如果未设置环境变量,可以直接填入字符串(不推荐,生产环境请用环境变量)
api_key = os.getenv("DEEPSEEK_API_KEY", "你的API_KEY")
client = OpenAI(
    api_key=api_key,
    base_url="https://api.deepseek.com"
)

# 2. 发送推理请求
def ask_r1_with_reasoning(user_question: str, reasoning_effort: str = "medium"):
    """
    调用 DeepSeek-R1 模型,返回思维链和最终答案。

    参数:
        user_question: 用户问题
        reasoning_effort: 推理深度,可选 'low', 'medium', 'high'

    返回:
        (reasoning_content, answer_content): 思维链文本和最终答案文本
    """
    # 构建消息,仅需 user 角色,因为推理模型不依赖外部 system prompt
    messages = [{"role": "user", "content": user_question}]

    # 调用 chat.completions.create,指定模型为 deepseek-reasoner
    response = client.chat.completions.create(
        model="deepseek-reasoner",          # 推理模型
        messages=messages,
        reasoning_effort=reasoning_effort,  # 控制思考深度(low/medium/high)
        max_tokens=1,                       # 设为 1 的特殊用法,强制只返回推理过程
        # 实际上推理模型会忽略 max_tokens<推理长度,正常获取整个回复
        # 这里演示仅获取推理内容,如果想同时获取答案,使用默认 max_tokens(或较大值)
    )

    # 从响应中提取 reasoning_content
    # 注意:reasoning_content 可能在顶层或 choices[0].message 中
    reasoning_content = ""
    final_answer = ""

    # 尝试从顶层 message 获取
    if hasattr(response.choices[0].message, "reasoning_content"):
        reasoning_content = response.choices[0].message.reasoning_content
        final_answer = response.choices[0].message.content
    else:
        # 兼容不同版本 SDK,可能嵌套在 model_extra 中
        raw = response.choices[0].message.model_dump()
        reasoning_content = raw.get("reasoning_content", "")
        final_answer = raw.get("content", "")

    return reasoning_content, final_answer

# 3. 测试调用
if __name__ == "__main__":
    question = "一根绳子随机分成三段,能组成三角形的概率是多少?请详细推导。"
    print(f"❓ 问题:{question}\n")

    try:
        reasoning, answer = ask_r1_with_reasoning(question, reasoning_effort="high")
        print("🧠 模型思维链:")
        print(reasoning[:800] + "..." if len(reasoning) > 800 else reasoning)
        print("\n✅ 最终答案:")
        print(answer)
    except Exception as e:
        print(f"调用失败:{e}")

2.3 运行结果解读

运行上面代码,你将看到类似输出:

❓ 问题:一根绳子随机分成三段,能组成三角形的概率是多少?请详细推导。

🧠 模型思维链:
首先,将绳子随机分成三段,可以抽象为在单位长度线段上随机选取两个切割点。设绳子长度为1,两个切割点坐标为x和y,且0≤x≤y≤1。则三段长度分别为x, y-x, 1-y。能组成三角形的条件是任意两边之和大于第三边,即x + (y-x) > 1-y,x + (1-y) > y-x,(y-x) + (1-y) > x。化简后得到y<0.5, y>0.5, x<0.5?哦不对,我们仔细推导一下……(后续数百行推理过程)

✅ 最终答案:
能组成三角形的概率是 1/4。推导过程:在单位正方形{x,y|0≤x≤y≤1}中,满足三角形条件的面积占比为1/4。

可以看到,模型先输出了一段非常详细、甚至带有自我纠错性质的思维链(有时超过 5000 字符),最后才给出精简的答案。

2.4 纯思维链获取技巧

如果你只想获取模型的推理过程,而不关心最终答案,可以设置 max_tokens=1(如示例中所示)。由于推理模型会先生成所有内部思考 token,然后才生成最终答案,当 max_tokens 非常小时,API 会返回完整的推理部分,但答案被截断为空。这是一种巧妙利用 token 限制的技巧。

相反,如果只想获取最终答案,建议设置 reasoning_effort="low" 并增加 max_tokens,以节省推理成本。

3. 常见问题与注意事项

3.1 推理 token 不计入 max_tokens 限制

DeepSeek-R1 的推理过程 token 不计入 max_tokens 配额,只有最终答案的 token 才受该参数约束。推理 token 是独立计费的,价格与输出 token 不同(目前平台有详细价格表)。在计算成本时,记得将推理 token 纳入。

3.2 如何关闭思维链

如果某些场景不需要显式推理(比如简单对话),可以使用标准模型 deepseek-chat(即 DeepSeek-V3),它不会输出 reasoning_content,响应速度更快。

3.3 推理深度控制与延迟

  • reasoning_effort="low":推理较短,响应快,适合简单问题。
  • reasoning_effort="medium":默认平衡,多数场景适用。
  • reasoning_effort="high":最长思考,可能耗时 10~30 秒甚至更久,但准确率最高。

建议在可接受延迟下设置为 high;交互式应用可使用 medium;对实时性要求高的场景可用 low,但需评估准确率。

3.4 流式输出(Streaming)

推理模型也支持流式响应,只需在 create 中设置 stream=True。需要注意的是,流式传输时,reasoning_contentcontent 会分块到达,你需要根据字段名区分思考块和答案块。示例代码:

stream = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=[{"role": "user", "content": "9.11和9.8哪个大?"}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta
    # 思考过程
    if hasattr(delta, "reasoning_content") and delta.reasoning_content:
        print(delta.reasoning_content, end="", flush=True)
    # 最终答案
    elif delta.content:
        print(delta.content, end="", flush=True)

3.5 温度参数与采样

推理模型通常建议使用 temperature=0(或官方推荐的接近 0 的值),因为随机性会破坏推理的逻辑一致性。如果确实需要多样性,可以适当提高到 0.3,但过高可能导致思维链混乱。

4. 总结

DeepSeek-R1 的发布,标志着推理模型从闭源走向开放生态。通过显式的思维链,开发者不仅能获得更准确的答案,还能深入理解模型的推理逻辑,这在构建 agent、自动化审计、教育辅助等场景中极具价值。

本文带你从概念到实战,完整走通了调用 R1 的流程。核心要点回顾:

  • R1 会产生 reasoning_content(思考)和 content(答案),两者可独立使用。
  • API 调用完全兼容 OpenAI SDK,只需切换 base_url 和模型名。
  • 通过 reasoning_effort 控制思考深度,平衡成本与效果。
  • 推理 token 独立计费,且不受 max_tokens 限制。
  • 支持流式输出,可实时展示模型思考过程。

如果你想更深入,建议阅读 DeepSeek 官方技术报告,了解强化学习训练细节。现在,拿起你的 API Key,用代码亲自体验一下“思考者”模式吧!

本文代码已在 deepseek-reasoner 模型上验证通过,运行环境为 Python 3.10 + openai 1.14.

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐