基于思维链的DeepSeek推理模型实战-《DeepSeek原生应用与智能体开发实践》第4章实践案例
**密度差异**:铁的密度远大于棉花(铁约7.8 g/cm³,棉花约0.05 g/cm³),所以一斤铁的体积很小(约64 cm³),而一斤棉花的体积很大(约10,000 cm³)。- **浮力影响(次要因素)**:在空气中,棉花体积大,受到的空气浮力略大于铁,理论上会使棉花的“净重量”略微减小(约0.1%左右),但这种差异在日常生活中可以忽略不计,不会改变“一样重”的结论。Answer 2: 这是
本文对应《DeepSeek原生应用与智能体开发实践》第4章 思维链与DeepSeek实践案例推理模型的实践案例。

思维链是一种创新的推理方式和过程,就像我们人类解决复杂问题时,会在脑海里一步一步地思考一样。传统的人工智能模型处理问题时,可能比较直接和机械,而思维链技术则让模型学会像人类一样“深入思考”。
它会把一个复杂的大问题,拆解成一系列相互关联、有逻辑顺序的小问题,就像把一座大山分解成一块块可以攀爬的石头。然后,模型会按照这些小问题的顺序,一个一个去解决,每解决一个小问题,就离最终答案更近一步。
基于这种思维链的推理过程,DeepSeek提出了一种新的推理模型——DeepSeek-Reason二,其作用犹如一把精准的手术刀,在人工智能的复杂领域中发挥着关键作用。
下面通过书中4.2章节的几个实例,展示下思维链的具体魅力。
刚好本地用conda部署过一个虚拟环境,配置可能与书中前文所述略有不同,但是也可以运行demo,具体配置如下:
Python版本:3.11.11
PyTorch版本: 2.2.2+cu121
GPU是否可用: True
GPU数量: 3
CUDA版本: 12.1
GPU索引号: 0
GPU名称: NVIDIA GeForce RTX 2080 Ti
1、通过Prompt提示构建思维链
对于普通的文本问答,大模型倾向于直接对结果进行回复。下面我们举一个经典的计算字母的例子对大模型进行问答,代码如下:
from openai import OpenAI
client = OpenAI(api_key="sk-dfd742ec38dc4ede96977974085485b0", base_url="https://api.deepseek.com")
prompt = """
strawberry里面有几个r字母。用中文回答
"""
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "user", "content": prompt},
],
max_tokens=1024,
temperature=0.95,
stream=False
)
print(response.choices[0].message.content)
运行结果:
$ python demo_0.py
### 第一步:理解题目首先,我们需要明确题目在问什么。题目问的是“strawberry”这个单词中有几个字母“r”。也就是说,我们需要数一数这个单词中出现了多少次“r”。
### 第二步:正确拼写单词
在开始数之前,确保我们拼写的单词是正确的。题目给出的单词是“strawberry”。让我先确认一下这个单词的正确拼写。
“strawberry”是“草莓”的英文单词。正确的拼写确实是s-t-r-a-w-b-e-r-r-y,共10个字母。
### 第三步:逐个字母检查
现在,我们逐个字母来看“strawberry”中有多少个“r”。我们可以将单词拆分开来:
s - t - r - a - w - b - e - r - r - y
让我们给每个字母编号:
1. s
2. t
3. r
4. a
5. w
6. b
7. e
8. r
9. r
10. y### 第四步:标记“r”字母
现在,我们看看哪些位置的字母是“r”:
- 第3个字母:r → 第一个r
- 第8个字母:r → 第二个r
- 第9个字母:r → 第三个r看起来有三个“r”。
### 第五步:验证
让我们再快速看一下:
s (1), t (2), r (3), a (4), w (5), b (6), e (7), r (8), r (9), y (10)
确实,第3、8、9位是“r”,共三个。
### 第六步:可能的误区
有时候,人们可能会忽略连续的“r”或者大小写的问题。在这里:
- 所有字母都是小写,没有大小写混淆。
- 有两个“r”是连续的(第8和第9位),不要误认为是一个“rr”组合,而是两个独立的“r”。### 第七步:总结
经过以上步骤,确认“strawberry”中有三个字母“r”。
### 最终答案
“strawberry”这个单词里有**三个**字母“r”。
可以看到,这里我们将问答步骤进行拆分,并且以清晰、有条理的方式引导模型完成任务。这种基于思维链的提示方法,让模型的回答过程不再是一个黑箱操作,而是变得透明、可接受。
2、下面我们演示一下如何使用DeepSeek推理模型访问思维链和最终回答,以及如何在多轮对话中进行上下文拼接的方法,代码如下所示:
from openai import OpenAI
client = OpenAI(api_key="sk-dfd742ec38dc4ede96977974085485b0", base_url="https://api.deepseek.com")
# Round 1
messages = [{"role": "user", "content": "9.11 与 9.8, 哪个数字比较大?"}]
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=messages
)
reasoning_content = response.choices[0].message.reasoning_content
content = response.choices[0].message.content
print("Answer 1:",content)
# Round 2
messages.append({'role': 'assistant', 'content': content})
messages.append({'role': 'user', 'content': "一斤的铁和一斤的棉花哪个重?"})
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=messages
)
content = response.choices[0].message.content
print("Answer 2:",content)
运行结果:
python demo_2.py
Answer 1: 要比较两个小数 9.11 和 9.8 的大小,可以将它们转换为相同的位数以便更清晰地比较。- 9.11 保持不变,即 9.11。
- 9.8 可以写成 9.80(因为添加一个零不会改变其值,9.8 = 9.80)。现在比较:
- 整数部分相同(都是 9)。
- 小数部分:9.11 的小数部分是 0.11,而 9.80 的小数部分是 0.80。
- 比较小数部分:0.11(即 11/100)和 0.80(即 80/100),显然 0.80 > 0.11。因此,**9.8 比 9.11 大**。
更精确的计算:
- 9.11 = 911/100 = 9.11
- 9.8 = 98/10 = 980/100 = 9.80
- 因为 980/100 > 911/100,所以 9.8 > 9.11。总结:**9.8 较大**。
Answer 2: 这是一个经典的脑筋急转弯问题,答案可能会让人意外,但根据物理原理,**一斤的铁和一斤的棉花一样重**。下面我来一步步解释清楚。### 1. **核心原因:重量是由质量决定的**
- “一斤”是一个质量单位(在中国,1斤 = 500克)。无论物体是什么材质,只要质量相同,在相同重力环境下(如地球表面),它们的重量就相同。
- 铁和棉花都是一斤,意味着它们的质量都是500克,因此重量相等。
- 重量公式:重量 = 质量 × 重力加速度(在地球上,重力加速度约9.8 m/s²)。既然质量相同,重量就相同。### 2. **为什么有人觉得铁更重?常见误解解析**
- **密度差异**:铁的密度远大于棉花(铁约7.8 g/cm³,棉花约0.05 g/cm³),所以一斤铁的体积很小(约64 cm³),而一斤棉花的体积很大(约10,000 cm³)。当我们拿起它们时,铁感觉“更沉甸甸”,因为它的密度高,压力集中在手上;棉花感觉“轻飘飘”,因为体积大,重量分散,且空气阻力或浮力影响更大。但这只是**触感上的错觉**,实际重量没有变。
- **浮力影响(次要因素)**:在空气中,棉花体积大,受到的空气浮力略大于铁,理论上会使棉花的“净重量”略微减小(约0.1%左右),但这种差异在日常生活中可以忽略不计,不会改变“一样重”的结论。在真空中或标准比较中,重量完全相同。### 3. **实际验证**
- 用天平或电子秤测量:如果你把一斤铁和一斤棉花放在精密秤上,秤会显示相同的重量(500克)。
- 生活例子:就像1公斤的羽毛和1公斤的砖头——质量相同,重量就相同,尽管羽毛看起来“更轻”。### 总结
- **一样重**!不要被密度或体积欺骗了。一斤就是一斤,无论物体是什么材质。
- 这个问题提醒我们:重量(质量)和密度是不同的概念。如果你想深入讨论物理细节(如浮力或重力变化),我可以进一步解释! 😊
通过上述案例运行可以看出思维链巧妙地模拟了人类解决复杂问题时的分步思考模式,使模型能够像人类一样,将复杂问题拆解为多个子步骤,并逐步推导出最佳答案。这种技术赋予了模型更加精细和深入的推理能力,使其在处理复杂问题时更加得心应手。
更多推荐


所有评论(0)