点击上方
蓝色
“
顶层架构领域
”,关注精彩与你分享
在与大模型交互的过程中,提示词是很关键的,也是成本最低解决幻觉的有效方法。所以一定要给它一些Example,在没有一个不包含Example,结果往往是不理想的。虽说网上也有介绍Zero Shot 的Prompt,比如
Let's think step by step
,但遇到稍微复杂点的任务,它就不一定能达到自己想要的效果。
一个精心设计完成特定任务的Prompt大体需要包含这几部分:
-
解决任务的方法
-
任务的输入和输出
-
任务的Example,3到5个左右。
-
任务的历史纪录,如果有的话
-
用户输入的问题。
一、ReAct Prompt
ReAct 提供了一种更易于人类理解、诊断和控制的决策和推理过程。它的典型流程如下图所示,可以用一个有趣的循环来描述:思考(Thought)→ 行动(Action)→ 观察(Observation),简称TAO循环。
Prompt设计如下所示:包含了说明解决问题的方法、输入和输出、样例和用户问题。
用交替进行的"思考、行动、观察"三个步骤来解决问答任务。思考可以对当前情况进行推理,而行动必须是以下三种类型:
(1) Search[entity],在维基百科上搜索确切的实体,并返回第一个段落(如果存在)。如果不存在,将返回一些相似的实体以供搜索。
(2) Lookup[keyword],在上一次成功通过Search找到的段落中返回包含关键字的下一句。
(3) Finish[answer],返回答案并结束任务。
你可以采取必要的步骤。确保你的回应必须严格遵循上述格式,尤其是行动必须是以上三种类型之一。
以下是一些参考示例:
问题: 科罗拉多造山运动东部地区的海拔范围是多少?
思考1: 我需要搜索科罗拉多造山运动,找到科罗拉多造山运动东部地区的范围,然后找到该地区的海拔范围。
行动1: 搜索[科罗拉多造山运动]
观察1: 科罗拉多造山运动是科罗拉多州及周边地区的一次造山运动(造山运动)。
思考2: 它没有提到东部地区。所以我需要查找东部地区的信息。...
(例子结束)
Question:{question}
{scratchpad}
二、CoT 思维链 Prompt
Chain-of-Thought(CoT)是一种改进的Prompt技术,目的在于提升大模型LLMs在复杂推理任务上的表现,对于复杂问题尤其是复杂的数学题大模型很难直接给出正确答案。
思维链就是一系列中间的推理步骤(a series of intermediate reasoning steps)。通过让大模型逐步参与将一个复杂问题分解为一步一步的子问题并依次进行求解的过程可以显著提升大模型的性能。
COT = """相关背景: 尼罗河是世界上最长的河流,长度约为6,650公里(4,132英里)。它流经东北非的十一国,包括埃及、苏丹和乌干达。
问题: 世界上最长的河流是什么?
思考: 这个问题询问世界上最长的河流,根据提供的背景信息,我知道是尼罗河。
行动: 完成[尼罗河]
...
"""
三、思维树(Tree-of-thought, ToT)Prompt
对 CoT 的进一步扩展,在思维链的每一步,推理出多个分支,拓扑展开成一棵思维树。使用启发式方法评估每个推理分支对问题解决的贡献。选择搜索算法,使用广度优先搜索(BFS)或深度优先搜索(DFS)等算法来探索思维树,并进行前瞻和回溯。
假设我们要解决以下问题:“一个矩形花园的长度是宽度的两倍,如果它的周长是60米,那么它的面积是多少平方米?”
步骤1:定义问题
任务:确定矩形花园的面积。
已知:长度是宽度的两倍;周长是60米。
步骤2:分解问题
识别变量:设宽度为w,长度为2w。
使用公式:周长 = 2 * (长度 + 宽度)
替换已知:60 = 2 * (2w + w)