通过Prompt提示构建思维链

发布于:2025-06-25 ⋅ 阅读:(29) ⋅ 点赞:(0)

《DEEPSEEK原生应用与智能体开发实践 王晓华 书籍 图书》【摘要 书评 试读】- 京东图书

思维链技术开启了人工智能通向人类智能的崭新路径。它让模型不再仅仅是机械地执行指令,而是开始具备类似人类的思考方式,能够理解问题的本质,进行深层次的推理和分析。这一突破,让人工智能的发展进入了一个全新的阶段,也为未来智能系统的进化奠定了坚实的基础。

前面我们讲解了思维链,对比了通过Prompt提示完成的思维链对问题的拆解。基于这种思维链的推理过程,DeepSeek提出了一种新的推理模型——DeepSeek-Reasoner,其作用犹如一把精准的手术刀,在人工智能的复杂领域中发挥着关键作用。

首先,DeepSeek-Reasoner充当着“思维解码器”的角色。在面对复杂问题时,它能够深入剖析问题的内在结构,将隐藏在问题背后的思维逻辑清晰地呈现出来。就像一位密码破译专家,能够解读出问题中的关键信息,为后续的推理过程提供清晰的指引。例如,在处理一道复杂的数学证明题时,它能够识别出题目中的已知条件、未知结论以及它们之间的逻辑关系,将证明过程拆解为一系列合理的推理步骤。

其次,DeepSeek-Reasoner是一个“智能推理引擎”。它依据思维链的原理,自动生成一系列有序的子问题,并引导模型逐步求解。在这个过程中,它能够根据模型的推理进展,动态调整推理策略,确保推理过程的高效和准确。就像一位经验丰富的赛车手,能够根据赛道情况灵活调整驾驶策略,以最快的速度到达终点。

然后,DeepSeek-Reasoner还具备“知识融合与创新”的能力。它能够将模型内部存储的海量知识与当前的推理任务相结合,在解决问题的过程中创造出新的知识和推理模式。例如,在处理跨领域的复杂问题时,它能够融合不同领域的知识,提出新颖的解决方案,为模型的推理能力注入新的活力。

最后,DeepSeek-Reasoner还是一个“可解释性增强器”。在传统的深度学习模型中,推理过程往往是一个黑箱,难以理解和解释。而DeepSeek-Reasoner通过思维链的推理方式,将模型的推理过程以清晰、直观的方式呈现出来,让人们能够理解模型是如何得出最终答案的。这不仅提高了模型的可信度,也为模型的进一步优化和改进提供了有力的支持。

4.2.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)

代码运行结果如下所示:

C:\Users\xiayu\miniconda3\python.exe C:\Users\xiayu\PycharmProjects\DeepSeek应用开发实践-源码\第四章\demo_0.py 
### 第一步:理解题目

首先,我们需要清楚地理解题目在问什么。题目问的是“strawberry”这个英文单词中有几个字母“r”。也就是说,我们需要数一数这个单词中出现了多少次“r”这个字母。

### 第二步:写出单词

为了更清楚地数出“r”的数量,我们可以先把“strawberry”这个单词写出来:

s t r a w b e r r y

### 第三步:逐个字母检查

现在,我们逐个字母来看,看看哪些是“r”:

1. 第一个字母:s — 不是r
2. 第二个字母:t — 不是r
3. 第三个字母:r — 是r,计数1
4. 第四个字母:a — 不是r
5. 第五个字母:w — 不是r
6. 第六个字母:b — 不是r
7. 第七个字母:e — 不是r
8. 第八个字母:r — 是r,计数2
9. 第九个字母:r — 是r,计数3
10. 第十个字母:y — 不是r

### 第四步:核对计数

根据上面的逐个检查:

- 第三个字母:r — 1
- 第八个字母:r — 2
- 第九个字母:r — 3

所以,总共有3个“r”。

### 第五步:验证

为了确保我们的答案正确,让我们再快速看一遍单词:

s t r a w b e r r y

标出所有的“r”:

- 第三个字母:r
- 第八个字母:r
- 第九个字母:r

确实有3个“r”。

### 可能的误区

有时候,人们可能会忽略连续相同的字母。例如,在“strawberry”中,“rr”是连续的两个“r”,可能会被误认为是一个“r”或者发音上的一个音。但是题目问的是字母的数量,不是发音,所以“rr”是两个独立的“r”字母。

### 结论

经过以上步骤和验证,“strawberry”这个单词中共有**3个字母“r”**。

### 最终答案

“strawberry”里面有**3个字母“r”**。

Process finished with exit code 0

可以看到,对于普通的大模型而言,其回复过程往往是一种基于自身对问题理解的笼统考量,而非对问题进行细致入微的分解剖析。这种缺乏系统性分解的处理方式,就如同在迷雾中摸索前行,使得模型难以精准把握问题的核心要点与关键细节,进而不可避免地造成了结果的不准确性。

在面对复杂问题时,普通大模型的这种局限性尤为明显。复杂问题通常包含着多个相互关联又各自独立的子问题,它们如同一张错综复杂的网,需要有条理地梳理和分析。然而,普通大模型却难以做到这一点,它可能会将不同子问题的信息混淆在一起,或者在处理过程中遗漏某些重要环节,从而导致最终回复与实际情况相去甚远。

我们通过提示(Prompt)分解问题,构建一个完整思维链对问题解答的示例,代码如下所示:

from openai import OpenAI

# for backward compatibility, you can still use 'https://api.deepseek.com/v1' as 'base_url'.
client = OpenAI(api_key="sk-dfd742ec38dc4ede96977974085485b0", base_url="https://api.deepseek.com")

prompt = """
回答下面问题并注意回答的时候严格按照以下步骤,
逐步进行:
1.将单词拆开
2.从左到右一个一个对比字母是不是r,是的话你要记录它的位置,并记住数量加-3.
第2步数出来多少个r直接输出,不要有任何分析和判断 

问题:"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)

在这里我们通过提示prompt对问题的求解过程进行拆分,并指示模型在回答时依据步骤进行,回答如下:

C:\Users\xiayu\miniconda3\python.exe C:\Users\xiayu\PycharmProjects\DeepSeek应用开发实践-源码\第四章\demo_1.py 
1. 将单词拆开:s, t, r, a, w, b, e, r, r, y  
2. 从左到右一个一个对比字母是不是r:  
- s: 不是  
- t: 不是  
- r: 是(位置3,数量1)  
- a: 不是  
- w: 不是  
- b: 不是  
- e: 不是  
- r: 是(位置8,数量2)  
- r: 是(位置9,数量3)  
- y: 不是  

输出:3

Process finished with exit code 0

可以看到,这里我们将问答步骤进行拆分,并且以清晰、有条理的方式引导模型完成任务。这种基于思维链的提示方法,让模型的回答过程不再是一个黑箱操作,而是变得透明、可解释。

通过这种方式,模型不再是盲目地给出答案,而是按照我们设定的步骤,一步一步地进行推理和计算。这不仅提高了答案的准确性,还使得模型的推理过程具有可复现性。如果出现问题,我们可以很容易地回溯到具体的步骤,检查是哪一步出现了偏差。

而且,这种拆分步骤的方法具有很强的通用性。对于不同类型的问题,我们只需要根据问题的特点,设计相应的步骤提示,就可以引导模型进行有效的求解。例如,在处理数学问题时,我们可以将解题过程拆分为分析问题、列出已知条件、确定解题方法、进行计算等步骤;在处理文本分析问题时,我们可以将解题过程拆分为文本预处理、特征提取、模型推理等步骤。

此外,将问答步骤拆分还有助于提升模型的学习能力。模型在按照步骤进行多次任务后,会逐渐理解每个步骤的意义和作用,从而在面对类似问题时,能够更加自主地运用这些步骤进行求解。这就像是人类在学习新技能时,通过反复练习分解动作,最终能够熟练掌握整个技能一样。

总之,通过提示(Prompt)对问题求解过程进行拆分,并指示模型依据步骤进行回答,这是一种非常有效的提升模型性能和可解释性的方法。它为人工智能的发展提供了一种新的思路,有望推动人工智能在更多领域取得更好的应用效果。


网站公告

今日签到

点亮在社区的每一天
去签到