零样本提示(zero-shot)
零样本提示是最简单也是最直观的提示方式:你只需向AI模型描述任务,无需提供任何示例。
实战案例:电影评论分类
让我们通过一个具体例子来理解零样本提示的工作原理。假设我们想用AI对电影评论进行情感分析:
任务设计框架
- 目标:将电影评论分类为正面、中性或负面
- 模型:gemini-pro
- 温度设置:0.1(保持输出的一致性)
- 输出限制:5个token
提示格式
将电影评论分类为正面、中性或负面。
评论:"她"是一项令人不安的研究,揭示了如果允许人工智能不受约束地持续进化,人类将走向何方。我希望有更多像这部杰作一样的电影。
情绪:
关键点在于,我们并没有告诉AI如何判断正面或负面评论,也没有提供任何示例。我们只是给出了分类的范围(正面、中性、负面),然后让AI自己判断这段评论属于哪一类。
模型输出
POSITIVE
单样本与少样本(One-shot & few-shot)
与零样本提示不同,单样本(One-shot)和少样本(Few-shot)提示通过提供具体示例来引导AI模型:
- 单样本提示:提供一个示例,展示期望的输出格式或结构
- 少样本提示:提供多个示例(通常3-5个),帮助模型更好地理解模式
实战案例:披萨订单的JSON解析
让我们看一个将披萨订单解析为JSON格式的实际例子:
提示格式:
将披萨订单解析为有效的JSON格式。
示例1:
输入:"我想要一个大号披萨,配料有番茄酱、罗勒和马苏里拉奶酪"
输出:{
"size": "large",
"ingredients": ["tomato sauce", "basil", "mozzarella cheese"]
}
示例2:
输入:"我想要一个大号披萨,一半是奶酪,一半是番茄酱、火腿加菠萝"
输出:{
"size": "large",
"half1": {
"ingredients": ["cheese"]
},
"half2": {
"ingredients": ["tomato sauce", "ham", "pineapple"]
}
}
现在解析:
输入:"我想要两个中号披萨,一个是蘑菇和青椒,另一个是意大利香肠和橄榄"
思维链(Chain-of-Thought, CoT)
思维链提示是一种引导AI模型生成中间推理步骤的技术,通过让AI"说出"其思考过程,来提高回答的准确性。
该提示框架可以做到不用微调模型就可以做到让模型深度思考。
CoT与今天的模型深度思考过程是非常类似的,比如deepseek的深度思考过程
实战案例:伴侣多少岁了
反面案例:没有思维链的提示
问题:当我3岁时,我的伴侣是我年龄的3倍。现在,我20岁了。我的伴侣多大了?
AI回答:63岁
显然,这个答案是错误的。AI在处理数学和逻辑推理问题时经常会犯这样的错误,即使是看似简单的计算。
正面案例:使用思维链提示
让我们在相同的问题后加上"让我们一步一步地思考":
AI回答:
- 当我3岁时,我的年龄是3岁。
- 那时我伴侣的年龄是我年龄的3倍,这意味着我伴侣的年龄是3×3=9岁。
- 现在,我20岁了,这意味着自我3岁以来,我的年龄增加了20-3=17岁。
- 由于我3岁时伴侣的年龄是9岁,并且我的年龄增加了17岁,那么我伴侣的年龄也一定增加了17岁。
- 因此,我伴侣当前的年龄是9+17=26岁。
这次,AI给出了正确答案:26岁。
若是在工程中,通常是自己写出思考的步骤并且将这部分步骤放置于<think></think>
中,由产品决定这部分内容是否显示出来
后退提示 (step-back prompting)
后退提示这项技术旨在提升大型语言模型 (LLM)解决复杂任务的能力,它鼓励模型“退一步”,专注于抽象原则,然后再进行细节推理。
例如,如果要计算三角形某个边长,我们可能首先会想到勾股定理。
后退提示法的灵感源于这样的观察:我们LLM的许多任务都充满了隐性和显性的细节。法学硕士在处理这类任务时,很难提取相关事实。
后退提示法可提升推理密集型任务(例如 STEM(科学、技术、工程、数学)、基于知识的问答和多跳推理)的性能。DeepMind 研究引入了一种名为“后退提示法”的新型提示方法。该研究表明这种方法比思路链提示法(CoT)的提示方法提高了高达 36% 的效率。
实施步骤:
该方法包括两个步骤:
1、抽象:提示模型关注与问题相关的更高层次的概念或原则。
2、推理:一旦检索到高级抽象,模型就会利用它来推理原始问题的具体内容。
实战案例:行驶需要多少时间
原题:如果一辆汽车以100公里/小时的速度行驶,行驶200公里,需要多长时间?
选项:
A.4小时
B.2小时
C.1小时
D.3小时
原答案[不正确]:正确答案是D.3小时。
后退提示:给定速度和距离,计算时间的基本公式是什么?
原则:为了计算时间,我们使用以下公式:时间=距离/速度
使用公式,时间=200公里/100公里/小时=2小时。
修正后答案[正确]:正确答案是B.2小时。
好的,我会为您重新整理这段关于自我一致性(Self-consistency)的内容,保持原文风格和核心信息:
自我一致性 (Self-Consistency)
自我一致性是一种强大的推理技术,它通过结合采样和多数投票机制来增强语言模型的推理能力。这种方法的核心优势在于通过多样化的思考路径来寻找最可靠的答案。对于输出结果明确的任务,自我一致性提示非常有效。
具体而言,自我一致性通过以下方式工作:
- 生成多样化的解决方案,从不同角度探索问题空间
- 通过寻找共识来过滤异常推理路径
- 提高最终结果的可信度和准确性
虽然这种方法需要更高的计算资源,但它显著提升了模型的鲁棒性。自我一致性能够提供答案正确性的伪概率估计,尽管这种优势伴随着较高的计算成本。
实施步骤:
-
生成多样化的推理路径:向语言模型多次提供相同的问题提示。通过设置较高的温度参数,鼓励模型产生不同的推理路径,从多个角度思考问题
-
提取各路径的答案:从每条生成的推理路径中识别并提取最终答案
-
选择最一致的结果:统计所有答案,选择出现频率最高的答案作为最终输出
这种方法特别适用于需要复杂推理的任务,能够有效减少模型在单一推理路径上可能产生的错误。
实战案例:邮件重不重要
我发现您的系统存在一个重大安全漏洞。虽然该漏洞不易利用,但攻击者可以访问您所有用户的数据。我已附上概念验证文件。请尽快修复此问题。
根据上述邮件与软件公司的关系,将其归类为“重要”或“不重要”。让我们一步一步思考。
AI输出1
发件人发现系统存在重大安全漏洞。此漏洞至关重要,因为它可能导致数据泄露。我将此邮件归类为“**重要**”。
AI输出2
发件人发现了系统中存在一个重大安全漏洞,但未提供任何概念证明,且该漏洞不易利用。我将此邮件归类为“**不重要**”。
AI输出3
发件人很可能是黑客,并且可能拥有系统访问权限。这很重要,因为它可能导致数据泄露。我将此邮件归类为“**重要**”。
通过生成许多思路链,并取最常见的答案(IMPORTANT),我们可以从 GPT-3 获得更一致正确的答案。
思维树(Tree of Thoughts-ToT)
思维树 (ToT) 提示方法于 2023 年 5 月问世,当时普林斯顿大学和 DeepMind 研究人员团队发表了《思维树:使用大型语言模型进行深思熟虑的问题解决》
想象一下,当你被要求完成一项复杂的任务,比如解谜或益智游戏时。你可能先考虑了总体目标,选择了最佳路线,然后开始朝着这个方向前进。但也许你意识到最初的路线行不通,所以不得不后退几步。
“思维树”提示旨在利用这种解决问题的方法,利用回溯和探索不同分支的能力。适用于需要一定规划和前瞻性的智力任务。然而,实施思维树在资源消耗和工作量方面要求很高。因此,明智的做法是仅用它来解决那些无法使用 IO 提示和 CoT 提示等技术解决的任务。
实战案例:24点游戏
24 点游戏是一个数学问题,其目标是使用给定的四个数字和四个基本运算符:+、-、/、*,得出 24。
第一步,促使模型得到候选解决方案。
用户输入:
Input: 4, 6, 8, 10
Possible next steps:
4+6 = 10 (left: 10, 8, 10)
8-4 = 4 (left 4, 6, 10)
10+4 = 14 (left: 14, 6, 8)
Input: 4 9 10 13
Possible next steps:
AI输出1
4+9 = 13 (left: 13, 10, 13)
10-4 = 6 (left: 6, 9, 13)
13-9 = 4 (left: 4, 9, 10)
第二步,提示模型评估其所有生成的解决方案
评估 13、10、13
用户输入:
Evaluate if the numbers can reach 24 ( sure/likely/impossible)
10 14: 10+14 = 24 sure
10 7 2: 7*2+10 = 24 sure
11 11: 11 + 11 = 22 impossible
13, 10, 13:
AI输出2
10 + 13 + 13 = 36 impossible
评估 6、9、13
用户输入:
Input: 4, 6, 8, 10
Possible next steps:
4+6 = 10 (left: 10, 8, 10)
8-4 = 4 (left 4, 6, 10)
10+4 = 14 (left: 14, 6, 8)
Input: 4 9 10 13
Possible next steps:
AI输出3
6 * (13-9) = 24 sure
对于使用提议提示生成的每个节点,值提示都会对其进行求值。然后,对于所有可能达到解的节点,使用提议提示进行扩展。使用广度优先搜索 (BFS) 扩展一层的所有节点,然后再移至下一层节点。此过程持续进行,直到节点中只剩下数字 24。
推理与行动(reason & act, ReAct)
它使大型语言模型 (LLM)能够通过自然语言推理和操作来解决复杂任务。它允许LLM执行某些操作,例如检索外部信息,然后基于检索到的数据进行推理。该方法从根本上扩展了LLM能力。
它的本质即将任务拆解为多个“思考-行动-观察”步骤。
实战案例:美国总统多少岁
您可以引导LLM做这部分思考,也可以直接在langchain中可以之间调用使用:
from langchain import OpenAI, Wikipedia
from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType
from langchain.agents.react.base import DocstoreExplorer
docstore=DocstoreExplorer(Wikipedia())
tools = [
Tool(
name="Search",
func=docstore.search,
description="useful for when you need to ask with search"
),
Tool(
name="Lookup",
func=docstore.lookup,
description="useful for when you need to ask with lookup"
)
]
llm = OpenAI(temperature=0, model_name="text-davinci-003")
react = initialize_agent(tools, llm, agent=AgentType.REACT_DOCSTORE, verbose=True)
question = "How old is the president of the United States?"
print(react.run(question))