LangChain 实战06 - 六大核心组件之Prompt(下)

我正在参加「豆包MarsCode AI练中学体验活动」详情请看:掘金小册上线 AI练中学功能 | 你的 AI 编程助教喊你免费领小册啦!

前言

用思维链和思维树提升模型思考质量

思维链: CoT(Chain of Thought)的概念来引导模型的推理

Chain of Thought

CoT这个概念来源于学术界,是谷歌大脑的Jason Wei等人在2022年的论文《 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(自我一致性提升了语言模型中的思维链推理能力)》中提出的概念。他们提出,如果生成一系列的中间推理步骤,就能够显著提高大型语言模型进行复杂推理的能力。

Few-Shot CoT

Few-Shot CoT 方法通过在提示中加入少量的链式思维实例(即Chain-of-Thought Prompting),能够有效提升大型语言模型的推理能力。换句话说,这种方法是通过展示一至两个含有详细推理步骤的例子,来引导模型更好地理解并模仿这种解决问题的方式。

实际上,LangChain 的核心组成部分 Agent,其主要任务就是实施高效的提示工程技术,并广泛采用预先设定的 Few-Shot 和 Chain-of-Thought (CoT) 模板。随着我们后续课程的深入学习,对于这一点的理解将会更加深刻和全面

Zero-Shot CoT

在Zero-Shot CoT中,你只要简单地告诉模型" 让我们一步步的思考(Let's think step by step) ",模型就能够给出更好的答案!

Few-Shot CoT,指的就是在带有示例的提示过程中,加入思考的步骤,从而引导模型给出更好的结果。

Zero-Shot CoT,就是直接告诉模型要一步一步地思考,慢慢地推理。

Chain of Thought 实战

项目需求:在这个示例中,你正在开发一个AI运营助手,我们要展示AI如何根据用户的需求推理和生成答案。然后,AI根据当前的用户请求进行推理,提供了具体的花卉建议并解释了为什么选择这些建议。

python 复制代码
# 设置环境变量和API密钥
import os
os.environ["OPENAI_API_KEY"] = '你的OpenAI API Key'

# 创建聊天模型
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(temperature=0)

# 设定 AI 的角色和目标
role_template = "你是一个为花店电商公司工作的AI助手, 你的目标是帮助客户根据他们的喜好做出明智的决定"

# CoT 的关键部分,AI 解释推理过程,并加入一些先前的对话示例(Few-Shot Learning)
cot_template = """
作为一个为花店电商公司工作的AI助手,我的目标是帮助客户根据他们的喜好做出明智的决定。

我会按部就班的思考,先理解客户的需求,然后考虑各种鲜花的涵义,最后根据这个需求,给出我的推荐。
同时,我也会向客户解释我这样推荐的原因。

示例 1:
  人类:我想找一种象征爱情的花。
  AI:首先,我理解你正在寻找一种可以象征爱情的花。在许多文化中,红玫瑰被视为爱情的象征,这是因为它们的红色通常与热情和浓烈的感情联系在一起。因此,考虑到这一点,我会推荐红玫瑰。红玫瑰不仅能够象征爱情,同时也可以传达出强烈的感情,这是你在寻找的。

示例 2:
  人类:我想要一些独特和奇特的花。
  AI:从你的需求中,我理解你想要的是独一无二和引人注目的花朵。兰花是一种非常独特并且颜色鲜艳的花,它们在世界上的许多地方都被视为奢侈品和美的象征。因此,我建议你考虑兰花。选择兰花可以满足你对独特和奇特的要求,而且,兰花的美丽和它们所代表的力量和奢侈也可能会吸引你。
"""
from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
system_prompt_role = SystemMessagePromptTemplate.from_template(role_template)
system_prompt_cot = SystemMessagePromptTemplate.from_template(cot_template)

# 用户的询问
human_template = "{human_input}"
human_prompt = HumanMessagePromptTemplate.from_template(human_template)

# 将以上所有信息结合为一个聊天提示
chat_prompt = ChatPromptTemplate.from_messages([system_prompt_role, system_prompt_cot, human_prompt])

prompt = chat_prompt.format_prompt(human_input="我想为我的女朋友购买一些花。她喜欢粉色和紫色。你有什么建议吗?").to_messages()

# 接收用户的询问,返回回答结果
response = llm(prompt)
print(response)

Tree of Thought

Chain-of-Thought (CoT) 的理念显著提升了大型语言模型生成高质量答案的能力,但对于那些需要深入探索或战略规划的复杂任务而言,传统的或是基础的提示技术显得力有未逮。受 CoT 启发,Yao 和 Long 等研究者几乎同步在其论文《思维之树:使用大型语言模型进行深思熟虑的问题解决》与《大型语言模型指导的思维之树》中,引入了 Tree of Thoughts (ToT) 框架。这一框架是在思维链提示的基础上发展而来的,旨在指导语言模型构建一个由连贯语言序列(即解决问题过程中的各个阶段)构成的思维树,而非直接输出最终答案。

ToT 构建了一个用于处理需多步推理任务的框架,其关键在于使模型具备生成及评估自身思考过程的能力,并将此能力与诸如广度优先搜索或深度优先搜索等搜索算法相结合,从而系统地展开探索与验证工作。这种方法不仅扩展了模型解决问题的深度和广度,也提高了面对复杂挑战时的灵活性和适应性。

ToT 框架为每个任务定义具体的思维步骤和每个步骤的候选项数量。例如,要解决一个数学推理任务,先把它分解为3个思维步骤,并为每个步骤提出多个方案,并保留最优的5个候选方案。然后在多条思维路径中搜寻最优的解决方案。

相关推荐
神夜大侠3 分钟前
VUE 实现公告无缝循环滚动
前端·javascript·vue.js
Fanstay9853 分钟前
人工智能技术的应用前景及其对生活和工作方式的影响
人工智能·生活
明辉光焱5 分钟前
【Electron】Electron Forge如何支持Element plus?
前端·javascript·vue.js·electron·node.js
lunch( ̄︶ ̄)7 分钟前
《AI 使生活更美好》
人工智能·生活
Hoper.J18 分钟前
用两行命令快速搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),包含完整的 Docker 安装步骤
人工智能·深度学习·docker
Shaidou_Data23 分钟前
信息技术引领未来:大数据治理的实践与挑战
大数据·人工智能·数据清洗·信息技术·数据治理技术
Elastic 中国社区官方博客24 分钟前
开始使用 Elastic AI Assistant 进行可观察性和 Microsoft Azure OpenAI
大数据·人工智能·elasticsearch·microsoft·搜索引擎·全文检索·azure
柯南二号38 分钟前
HarmonyOS ArkTS 下拉列表组件
前端·javascript·数据库·harmonyos·arkts
wyy729340 分钟前
v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条
前端·ui·html
qq_2739002341 分钟前
pytorch detach方法介绍
人工智能·pytorch·python