引言
在人工智能领域,我们一直在追求让机器像人类一样思考。然而,即使是最先进的 AI,也常常被诟病缺乏'常识',难以理解复杂问题,更不用说像人类一样进行逻辑推理和解决问题了。最直观的表现就是遇到不会的地方,或者一些人一眼能看出来的地方,AI 在那里胡扯。
为了解决这个问题,一种名为'思维链(Chain of Thought, CoT)'的技术应运而生。CoT 的核心思想是:将复杂问题分解成一系列简单的子问题,并逐步推理出最终答案。这就像人类在解决问题时,会先将问题拆解成一个个小步骤,然后一步步推理,最终得出结论。

理解实践
存疑例子
为了理解 CoT,我们先来看个经典的例子:统计单词 "strawberry" 里面有几个字母 "r"。
直接询问模型往往容易出错,因为模型倾向于直接输出结果而非展示推理过程。通过引入思维链提示,我们可以引导模型先列出每个字符,再进行计数。
下面是一个基于 LangChain 的 Python 实现示例。注意我们在提示模板中加入了'请一步步思考'的指令,这是触发 CoT 的关键。
from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 配置模型
model = ChatOpenAI(
model='deepseek-chat',
openai_api_key='sk-xxx',
openai_api_base='https://api.deepseek.com',
max_tokens=4096
)
# 定义提示模板,加入 CoT 指令
prompt_template = PromptTemplate(
input_variables=["user_input"],
template="用户:{user_input}\n请一步步思考并给出最终答案。\nAI:"
)
# 创建链,将提示模板与模型连接起来
chain = LLMChain(llm=model, prompt=prompt_template)
# 手动输入一个值并发送给模型
user_input = "strawberry 里面有几个 r"
# 发送消息给模型并获取响应
response = chain.run(user_input=user_input)
print(f"\n\nAI: {response}")
在这个示例中,通过修改 template 字段,我们强制模型在输出最终数字前展示中间推理步骤。虽然代码片段展示了基础结构,但在实际工程中,你可能还需要处理异常捕获、Token 限制以及更复杂的上下文管理。不过,这个最小化示例足以验证 CoT 对特定逻辑问题的改善效果。


