DeepSeek 的“思考过程”到底是什么?

0 阅读6分钟

DeepSeek 的“思考过程”到底是什么?

打开 Thinking 会怎样?调用 API 时的 Chat 和 Responses 又是什么?

在 DeepSeek 里输入“说出 10 个夸我的理由”,十个理由还没出现,屏幕上先多了这样一段文字:

DeepSeek 回答“夸我”之前显示的一段分析

看着“正在思考”里的这段分析,你可能也想问:

  • 这段文字是什么?就是模型的全部思考吗?
  • 开和不开 Thinking(思考模式),实际有什么区别?
  • 自己写代码调用 DeepSeek 的 API 时,Chat、Responses 这两种写法有什么区别?它们也能开 Thinking 吗?

这篇约 6 分钟,用这次聊天和两段调用代码理清这三个问题。代码只需对照看,不必运行。

1. 多出的“思考过程”,到底是什么?

截图里,它在考虑怎样夸得具体、怎样避免过度虚构,还没有开始列那十个理由。

开启 Thinking(思考模式)后,DeepSeek 会先生成这样的分析,再给出正式回答。 官方把前面的分析称为“思维链”,可以把它理解成做题时写的草稿。DeepSeek:思考模式(api-docs.deepseek.com/zh-cn/guide…

这段分析没有记录模型内部每一步运算。最后的理由有没有编造细节,仍要核对。

2. 开和不开 Thinking,区别在哪里?

假如把 Thinking 关掉,再问同一句“夸我”,会少掉什么?先看两种模式分别输出哪些内容:

模式会输出什么
开启 Thinking先生成分析文字,再给出答案
关闭 Thinking直接给出答案,不单独输出这段分析

开关改变的是是否单独生成这段分析。关掉后,模型仍会计算和回答;开启后先推理再回答,目的是提高准确性,但仍可能答错。DeepSeek:模式开关(api-docs.deepseek.com/zh-cn/guide…

还有一个容易混淆的操作:点击箭头,把“思考过程”折叠起来。这只是把已有文字收起,没有关闭 Thinking。

写成代码,就能看清“开启思考”和“显示分析”分别写在哪里。

3. 用代码调用 DeepSeek

网页上的软件替你发送问题、接收回复。自己写程序,就需要用 API,也就是服务商提供给程序的调用接口。

下面两种写法都问同一句“夸我”,用同一个模型,并开启 Thinking。先准备调用地址和问题:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEEPSEEK_API_KEY"],
    base_url="https://api.deepseek.com",
)
question = "说出10个夸我的理由,要求真情实感,要说详细细节!"

「openai」 是现成的代码工具箱,也叫 SDK。「base_url」 指向 DeepSeek;「api_key」 用来提供调用凭证,这里从终端里保存的一项设置(环境变量)「DEEPSEEK_API_KEY」 读取。

写法 A。 接在准备代码后面:

reply = client.chat.completions.create(  # ① 选 Chat 接口
    model="deepseek-flash",             # 选用哪个模型
    messages=[{"role": "user", "content": question}],
    extra_body={"thinking": {"type": "enabled"}},  # ② 开启 Thinking
)
message = reply.choices[0].message
print("分析:", message.reasoning_content)  # ③ 显示分析
print("答案:", message.content)            # ③ 显示答案

写法 B。 保留准备代码,把上面的调用和输出部分换成:

reply = client.responses.create(  # ① 选 Responses 接口
    model="deepseek-flash",
    input=question,
    reasoning={"effort": "high"},  # ② 开启 Thinking,并设置思考强度
)
for item in reply.model_dump()["output"]:
    if item["type"] == "reasoning":
        for part in item["content"]:
            print("分析:", part["text"])  # ③ 显示分析
print("答案:", reply.output_text)         # ③ 显示答案

留意第 ① 处:一个写着 「chat.completions」,另一个写着 「responses」。调用 API 时,这里的 Chat、Responses 是什么?和 Thinking 有什么关系?

这里的 Chat 指 Chat Completions。它和 Responses 是两种 API 接口,收发格式不同:代码 A 用 「messages」 装消息,代码 B 用 「input」 发送问题。

第 ① 处选接口,第 ② 处设置 Thinking,是两项不同的选择。图里把它们画成两条线,最后汇成同一次调用:

程序选择调用接口,再设置是否开启 Thinking;两项选择属于同一次调用

图中选了 Chat 或 Responses,都还可以设置 Thinking。对应到代码,关闭思考模式的方法分别是:

第 ③ 处分别打印分析和答案。Chat 读取 「reasoning_content」 和 「content」;Responses 从 「output」 列表中找分析,用 「output_text」 读答案。取文字的代码不同,是因为返回格式不同。DeepSeek:返回格式(api-docs.deepseek.com/api/create-…

删掉第 ③ 处“分析”的 「print」,只是程序不再显示分析;要关闭 Thinking,得改第 ② 处的参数。

想运行,需要 Python,先执行 「python -m pip install -U openai」,再在终端里设置好 「DEEPSEEK_API_KEY」。预期会看到“分析”和“答案”两部分;若提示缺少这个变量,先检查当前终端的设置。

4. 追问“第三个理由”,它怎么知道我指哪条?

现在已经拿到了十个理由,你继续问:“第三个理由能展开说说吗?”

如果程序只发送这一句话,模型就不知道“第三个”指什么。沿用写法 A,第二次调用前,可以把要发送的消息准备成这样:

messages = [
    {"role": "user", "content": question},          # 上次的问题
    {"role": "assistant", "content": message.content},  # 上次的十个理由
    {"role": "user", "content": "第三个理由能展开说说吗?"},
]

这里的 「message.content」 是代码 A 收到的答案。把这份列表作为 「messages」 参数再次调用,模型就同时拿到了旧问题、旧答案和新问题。DeepSeek:多轮对话(api-docs.deepseek.com/guides/mult…

模型这次回答能使用的材料,叫上下文。 网页聊天时,软件会替你准备。它怎样显示旧回复、下次又发送哪些内容,是两件事:

聊天软件显示模型的回复,并决定下次提问时重新发送哪些内容

上面那条线把文字留在屏幕上,下面那条线把旧内容放进新的请求。所以,能在屏幕上翻到旧分析,不代表模型下次一定会用它。

再看刚才的 「messages」:它带上了旧问题和最终答案,没有带“思考过程”。上面的普通 Chat 调用没有配工具,旧分析不用回传;传了也会被忽略。这不妨碍它根据旧答案展开第三个理由。DeepSeek:历史分析回传规则(api-docs.deepseek.com/zh-cn/guide…

换成 DeepSeek 的 Responses,也需要重新提交相关对话。换一个接口,不会自动让它记住之前聊了什么。DeepSeek:Responses 支持范围(api-docs.deepseek.com/zh-cn/guide…

如果以后给模型接上计算器,程序会用 「tools」 参数声明这项工具。DeepSeek 的 Chat 思考模式此时要求完整回传历史分析,并将它放进上下文;即使某轮没有实际调用工具,也要回传。上面的示例没有这个参数。工具场景的回传要求(api-docs.deepseek.com/zh-cn/guide…

再看开头那次“夸我”

同一句“夸我”,程序可以通过 Chat 或 Responses 发给 DeepSeek。开启 Thinking 后,模型先生成分析,再给出十个理由;软件把两部分分别显示出来。你追问“第三个理由”时,程序再带上前面的问答,让聊天接着进行。

对照代码:① 选择收发格式,② 开关 Thinking,③ 显示回复。继续追问时,再检查程序带上了哪些旧内容。

下次想比较开关有没有帮助,可以继续用这句“夸我”各试一次:最后的理由是否更具体,有没有编造细节?分析写得长,并不保证夸得准。🐳