当前位置: 首页 > news >正文

大语言模型提示工程与应用:大语言模型进阶提示工程技术

高级提示词使用

学习目标

掌握大语言模型中进阶提示工程技术的原理与应用,包括零样本/少样本提示、思维链推理、知识生成等核心方法,提升复杂任务解决能力。

相关知识点

  • 零样本与少样本提示
  • 思维链提示技术
  • 高级推理技术

学习内容

1 零样本与少样本提示

1.1 零样本原理

当今的大规模语言模型(LLMs)在大量数据上进行了训练,并被调优以遵循指令,因此它们能够在零样本的情况下执行任务。以下是示例:

提示:

将文本分类为中性、负面或正面。文本:我觉得假期还可以。
情感: 

输出:

中性

请注意,在上述提示中,实验并没有给模型提供任何示例——这就是零样本能力的体现。当零样本方法不奏效时,建议在提示中提供演示或示例来引导模型取得更好的表现。这种技术被称为少样本提示。

尽管大规模语言模型已经展示了令人印象深刻的零样本能力,但在处理复杂任务时,零样本设置仍显不足。为了改进这一点,少样本提示作为一种技术被用来实现上下文学习,即通过在提示中提供演示来引导模型的表现。以下是示例:

提示:

将文本分类为中性、负面或正面。“whatpu”是一种小型毛茸茸的动物,原产于坦桑尼亚。使用单词whatpu的一个句子例子是:
我们在非洲旅行时看到了非常可爱的小whatpus。
要做“farduddle”的意思是快速上下跳动。使用单词farduddle的一个句子例子是: 

输出:

当我们赢得了比赛,我们都开始farduddle庆祝。可以观察到,通过仅提供一个示例(即1-shot),模型已经学会了如何执行这个任务。对于更困难的任务,可以通过增加演示的数量(例如3-shot, 5-shot, 10-shot等)来进行实验。

提示:

将文本分类为中性、负面或正面。这太棒了!// Negative
这不好!// Positive
哇,那部电影真酷!// Positive
多么糟糕的节目啊!//

输出:

Negative

即使标签已经被随机化,这里仍然得到了正确的答案。注意实验保持了格式,这对结果也有帮助。实际上,通过进一步的实验发现,正在实验的新GPT模型对甚至随机格式的鲁棒性也越来越强。例如:

提示:


将文本分类为中性、负面或正面。Positive 这太棒了! 
这不好! Negative
哇,那部电影真酷!
Positive
多么糟糕的节目啊! --

输出:


Negative

上面没有一致的格式,但模型仍然预测了正确的标签。

1.2 少样本优化

标准的少样本提示对于许多任务来说工作得很好,但在处理更复杂的推理任务时,它仍然不是一种完美的技术。这里通过一个例子来说明这一点:

提示:


这组数字中的奇数加起来是一个偶数:15, 32, 5, 13, 82, 7, 1。

输出:


是的,这组数字中的奇数加起来是107,这是一个偶数。这不是正确的回答,这不仅突显了这些系统的局限性,也表明需要更高级的提示工程技术。
可以试着添加一些示例,看看少样本提示是否能改善结果。

提示:


这组数字中的奇数加起来是一个偶数:4, 8, 9, 15, 12, 2, 1。
答:答案是False。这组数字中的奇数加起来是一个偶数:17, 10, 19, 4, 8, 12, 24。
答:答案是True。这组数字中的奇数加起来是一个偶数:16, 11, 14, 4, 8, 13, 24。
答:答案是True。这组数字中的奇数加起来是一个偶数:17, 9, 10, 12, 13, 4, 2。
答:答案是False。这组数字中的奇数加起来是一个偶数:15, 32, 5, 13, 82, 7, 1。
答:

输出:


答案是True。

这种方法不起作用。看来对于这种类型的推理问题,少样本提示并不足以获得可靠的回答。
总体而言,提供示例对于解决某些任务是有用的。当零样本提示和少样本提示不够充分时,可能意味着模型所学的内容不足以很好地完成任务。在这种情况下,我们需要开始考虑微调模型或尝试更先进的提示技术。

2 思维链提示技术

2.1 基础CoT

链式思考(CoT)提示使模型能够通过中间推理步骤来解决复杂的问题。你可以将其与少样本提示结合使用,以在需要推理才能回答的更复杂任务上取得更好的结果。

提示:


这组数字中的奇数加起来是一个偶数:4, 8, 9, 15, 12, 2, 1。
答:将所有奇数(9, 15, 1)相加得到25。答案是False。这组数字中的奇数加起来是一个偶数:17, 10, 19, 4, 8, 12, 24。
答:将所有奇数(17, 19)相加得到36。答案是True。这组数字中的奇数加起来是一个偶数:16, 11, 14, 4, 8, 13, 24。
答:将所有奇数(11, 13)相加得到24。答案是True。这组数字中的奇数加起来是一个偶数:17, 9, 10, 12, 13, 4, 2。
答:将所有奇数(17, 9, 13)相加得到39。答案是False。这组数字中的奇数加起来是一个偶数:15, 32, 5, 13, 82, 7, 1。
答:

输出:


将所有奇数(15, 5, 13, 7, 1)相加得到41。答案是False。

可以看到看到,当提供了推理步骤后,这里得到了完美的结果。甚至可以用更少的示例来解决这个问题,也就是说,只有一个示例似乎就足够了:

提示:


这组数字中的奇数加起来是一个偶数:4, 8, 9, 15, 12, 2, 1。
答:将所有奇数(9, 15, 1)相加得到25。答案是False。这组数字中的奇数加起来是一个偶数:15, 32, 5, 13, 82, 7, 1。
答:

输出:


将所有奇数(15, 5, 13, 7, 1)相加得到41。答案是False。
2.2 零样本CoT

零样本链式思考(Zero-Shot CoT),基本上是在原始提示中添加“让我们一步步思考”。示例如下:

提示:


我去市场买了10个苹果。我给了邻居2个苹果,又给了修理工2个。然后我又买了5个苹果并吃了一个。我还剩下多少个苹果?

输出:


11个苹果

答案是错误的!现在试试特殊的提示。

提示:


我去市场买了10个苹果。我给了邻居2个苹果,又给了修理工2个。然后我又买了5个苹果并吃了一个。我还剩下多少个苹果?让模型一步步思考。

输出:


首先,你开始有10个苹果。
你给了邻居2个苹果,又给了修理工2个,所以你还剩6个苹果。
然后你又买了5个苹果,所以你现在有11个苹果。
最后,你吃了一个苹果,所以你最终剩下10个苹果。

这个简单的提示在这个任务上非常有效!

3 高级推理技术

3.1 自我一致性

另一种先进的提示工程技术之一是自一致性。自一致性的目标是“替换链式思考提示中使用的朴素贪婪解码”。其理念是通过少样本链式思考采样多个不同的推理路径,并使用这些生成内容选择最一致的答案。这有助于提升涉及算术和常识推理任务中的链式思考提示性能。

算术推理的例子如下:

提示:


当我6岁的时候,我的姐姐是我年龄的一半。现在我70岁了,我的姐姐多大年纪?

输出:


35

输出结果是错误的!这里可以使用自一致性来改进这一点:

提示:


Q: 果园里有15棵树。果园工人今天将在果园里种树。完成后,将会有21棵树。果园工人今天种了多少棵树?
A: 我们开始时有15棵树。之后我们有了21棵树。差额就是他们种植的树木数量。所以,他们必须种了21 - 15 = 6棵树。答案是6。Q: 如果停车场里有3辆车,又有2辆车到来,那么停车场里总共有多少辆车?
A: 停车场已经有3辆车了。又来了2辆。现在总共有3 + 2 = 5辆车。答案是5。Q: Leah有32块巧克力,她姐姐有42块。如果她们吃了35块,那么总共还剩下多少块?
A: Leah有32块巧克力,Leah的姐姐有42块。这意味着原来总共有32 + 42 = 74块巧克力。已经吃了35块。所以总共还剩下74 - 35 = 39块巧克力。答案是39。Q: Jason有20个棒棒糖。他给了Denny一些棒棒糖。现在Jason有12个棒棒糖。Jason给了Denny多少个棒棒糖?
A: Jason原来有20个棒棒糖。因为他现在只有12个,所以他一定把其余的都给了Denny。他给Denny的棒棒糖的数量一定是20 - 12 = 8个棒棒糖。答案是8。Q: Shawn有五个玩具。圣诞节时,他从妈妈和爸爸那里各自得到了两个玩具。他现在有多少个玩具?
A: 他有5个玩具。他从妈妈那里得到了2个,所以之后他有5 + 2 = 7个玩具。然后他又从爸爸那里得到了2个,所以总共他有7 + 2 = 9个玩具。答案是9。Q: 服务器房间原来有九台电脑。从周一到周四,每天安装五台新电脑。现在服务器房间里有多少台电脑?
A: 从周一到周四是4天。每天增加5台电脑。这意味着总共增加了4 * 5 = 20台电脑。最初有9台电脑,所以现在总共有9 + 20 = 29台电脑。答案是29。Q: Michael有58个高尔夫球。周二他丢了23个高尔夫球。周三他又丢了2个。周三结束时他还剩多少个高尔夫球?
A: Michael最初有58个球。他在周二丢了23个,所以之后他有58 - 23 = 35个球。周三他又丢了2个,所以他现在有35 - 2 = 33个球。答案是33。Q: Olivia有23美元。她买了五个贝果,每个3美元。她还剩多少钱?
A: 她买了5个贝果,每个3美元。这意味着她花费了...Q: 当我6岁的时候,我的姐姐是我年龄的一半。现在我70岁了,我的姐姐多大年纪?
A: 

输出1:


当我6岁时,我的姐姐是我年龄的一半,所以她是3岁。现在我70岁了,她就是70 - 3 = 67岁。答案是67。

输出2:


当叙述者6岁时,他的姐姐是他年龄的一半,即3岁。现在叙述者70岁了,他的姐姐会是70 - 3 = 67岁。答案是67。

输出3:


当我6岁时,我的姐姐是我年龄的一半,所以她是3岁。现在我70岁了,她是70 / 2 = 35岁。答案是35。

计算最终答案需要几步,但为了简单起见,可以看到已经有一个多数答案出现,因此它将成为最终答案。这种方法展示了通过结合多种推理路径来提高答案准确性的潜力。

3.2 生成知识

大型语言模型(LLMs)不断得到改进,其中一种流行的技术是将知识或信息融入其中,以帮助模型做出更准确的预测。

利用类似的想法,模型能否在进行预测之前也用于生成知识?

让我们尝试一个简单的提示:

提示:


高尔夫的部分内容是试图获得比他人更高的分数。对还是错?

输出:


对。

这种类型的错误揭示了LLMs在执行需要更多世界知识的任务时的局限性。我们如何通过知识生成来改进这一点?

首先,生成一些“知识”:

提示:


输入:希腊比墨西哥大。
知识:希腊面积约为131,957平方公里,而墨西哥面积约为1,964,375平方公里,这意味着墨西哥比希腊大1389%。输入:眼镜总是会起雾。
知识:当你的汗水、呼吸和环境湿度中的水蒸气落在冷表面上冷却后变成小液滴时,就会在眼镜镜片上形成一层膜,这就是你看到的雾。尤其是在外面空气寒冷时,你的镜片相对你的呼吸来说会比较冷。输入:鱼具有思考能力。
知识:鱼类比看起来要聪明得多。在许多方面,如记忆力,它们的认知能力与‘高等’脊椎动物,包括非人类灵长类动物相当甚至超过。输入:一生中抽很多烟的一个常见后果是得肺癌的机会高于正常水平。
知识:那些一生中平均每天吸烟不到一支的人患肺癌死亡的风险是从未吸烟者的9倍。而在每天吸1到10支烟的人群中,因肺癌死亡的风险几乎是从未吸烟者的12倍。输入:一块石头和一颗卵石大小相同。
知识:根据Udden-Wentworth沉积学尺度,卵石是一种直径为4至64毫米的岩石碎块。卵石通常被认为比颗粒(直径2至4毫米)大,但比卵石(直径64至256毫米)小。输入:高尔夫的部分内容是试图获得比他人更高的分数。
知识:

知识1:


高尔夫的目标是在最少的击球次数内完成一系列洞的比赛。一轮高尔夫通常由18个洞组成。每个洞在一个标准高尔夫球场上只打一次。每次击球都被计为一点,总击球数用于确定比赛的胜者。

知识2:


高尔夫是一项精确的俱乐部和球运动,参赛选手使用多种类型的球杆将球打入球场上的系列洞中,目标是以最少的击球次数完成。游戏的目标是用最低得分完成整个过程,这通过计算每洞所用的击球总数得出。得分最低的选手赢得比赛。

下一步是整合知识并得到预测。这里将问题重新格式化为问答形式以指导答案格式。

提示:


问题:高尔夫的部分内容是试图获得比他人更高的分数。对还是错?知识:高尔夫的目标是在最少的击球次数内完成一系列洞的比赛。一轮高尔夫通常由18个洞组成。每个洞在一个标准高尔夫球场上只打一次。每次击球都被计为一点,总击球数用于确定比赛的胜者。解释并回答:

答案1:


不对,高尔夫的目标并不是获得比他人更高的分数。相反,目标是在最少的击球次数内完成一系列洞的比赛。比赛胜者不是根据总分数而是根据总击球数决定的。问题:高尔夫的部分内容是试图获得比他人更高的分数。对还是错?知识:高尔夫是一项精确的俱乐部和球运动,参赛选手使用多种类型的球杆将球打入球场上的系列洞中,目标是以最少的击球次数完成。游戏的目标是用最低得分完成整个过程,这通过计算每洞所用的击球总数得出。得分最低的选手赢得比赛。解释并回答:

答案2:


对,高尔夫的一部分是试图获得比他人更高的分数。每位选手都试图以最低得分完成整个过程,这是通过计算每个洞所用的总击球数得出的。得分最低的选手赢得比赛。这个例子发生了一些有趣的现象,在第一个答案中,模型非常自信,但在第二个答案中则不太确定。

# 大语言模型提示工程与应用
1. 提示工程入门指南
2. 提示词基础使用方式
3. 大语言模型进阶提示工程技术
4. LLMs文本生成与数据标注实践:情感分析与葡萄酒品鉴
5. ChatGPT提示工程技术指南
6. 大语言模型对抗性提示安全防御指南
7. 提示工程:提升模型准确性与减少偏见的方法
8. 前沿提示工程技术探索

http://www.dtcms.com/a/323723.html

相关文章:

  • 【LLM实战|langchain】langchain基础
  • 百度网盘自动启动如何关闭,关闭智能看图
  • Windows系统NUL文件删除问题解决
  • 【ref、toRef、toRefs、reactive】
  • C++学习之STL学习:map/set
  • openvela之ADB
  • Java Stream 使用 Fork/Join框架的分治任务模型
  • 详解Windows(十四)——PowerShell与命令提示符
  • 如何检查减速机的密封件是否老化?
  • 06-docker容器常用命令
  • Docker镜像地址
  • 安装NodeJS和TypeScript简要指南
  • MySQL数据库详细笔记
  • 线上排查问题的一般流程是怎么样的?
  • Linux网络子系统架构分析
  • 检索增强生成:RAG(Retrieval Augmented Generation)
  • doubletrouble靶机通关练习笔记
  • 数学与应用数学:到底有啥区别?
  • 【LLM】大模型投机采样(Speculative Sampling)推理加速
  • 基于麦克风阵列电机噪声振动监测解决方案技术解析
  • C++算法练习:单词识别
  • 前端面试专栏-面试实战:33. 简历撰写技巧与优化
  • Linux操作系统如何不进入图形化界面
  • 鸿蒙开发中的Tabs组件详解
  • Java中Lambda表达式的常见用法和解析:从入门到实战
  • 嵌入式软件工程师笔试题(二)
  • 关于C语言本质的一些思考
  • PAT 1053 Path of Equal Weight
  • 力扣-41.缺失的第一个正数
  • 三极管在电路中的应用