【AI】一文搞懂提示词工程技巧

2025-03-20T14:03:26+08:00 | 14分钟阅读 | 更新于 2025-03-20T14:03:26+08:00

Macro Zhao

【AI】一文搞懂提示词工程技巧

推荐超级课程:

@TOC

提示词要素

如果您接触过大量提示工程相关的示例和应用,您会注意到提示词是由一些要素组成的。

提示词可以包含以下任意要素:

指令:想要模型执行的特定任务或指令。

上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

输入数据:用户输入的内容或问题。

输出指示:指定输出的类型或格式。

为了更好地演示提示词要素,下面是一个简单的提示,旨在完成文本分类任务:

提示词

请将文本分为中性、否定或肯定
文本:我觉得食物还可以。
情绪:

在上面的提示示例中,指令是“将文本分类为中性、否定或肯定”。输入数据是“我认为食物还可以”部分,使用的输出指示是“情绪:”。请注意,此基本示例不使用上下文,但也可以作为提示的一部分提供。例如,此文本分类提示的上下文可以是作为提示的一部分提供的其他示例,以帮助模型更好地理解任务并引导预期的输出类型。

设计提示的通用技巧

以下是设计提示时需要记住的一些技巧:

从简单开始

在开始设计提示时,你应该记住,这实际上是一个迭代过程,需要大量的实验才能获得最佳结果。使用来自OpenAI或Cohere的简单的 playground 是一个很好的起点。

你可以从简单的提示词开始,并逐渐添加更多元素和上下文(因为你想要更好的结果)。因此,在这个过程中不断迭代你的提示词是至关重要的。阅读本指南时,你会看到许多示例,其中具体性、简洁性和简明性通常会带来更好的结果。

当你有一个涉及许多不同子任务的大任务时,可以尝试将任务分解为更简单的子任务,并随着结果的改善逐步构建。这避免了在提示设计过程中一开始就添加过多的复杂性。

指令

你可以使用命令来指示模型执行各种简单任务,例如“写入”、“分类”、“总结”、“翻译”、“排序”等,从而为各种简单任务设计有效的提示。

请记住,你还需要进行大量实验以找出最有效的方法。以不同的关键词(keywords),上下文(contexts)和数据(data)试验不同的指令(instruction),看看什么样是最适合你特定用例和任务的。通常,上下文越具体和跟任务越相关则效果越好。在接下来的指南中,我们将讨论样例和添加更多上下文的重要性。

有些人建议将指令放在提示的开头。另有人则建议是使用像“###”这样的清晰分隔符来分隔指令和上下文。

例如:

提示:

### 指令 ###将以下文本翻译成西班牙语:文本:“hello!”

输出:

¡Hola!

具体性

要非常具体地说明你希望模型执行的指令和任务。提示越具描述性和详细,结果越好。特别是当你对生成的结果或风格有要求时,这一点尤为重要。不存在什么特定的词元(tokens)或关键词(tokens)能确定带来更好的结果。更重要的是要有一个具有良好格式和描述性的提示词。事实上,在提示中提供示例对于获得特定格式的期望输出非常有效。

在设计提示时,还应注意提示的长度,因为提示的长度是有限制的。想一想你需要多么的具体和详细。包含太多不必要的细节不一定是好的方法。这些细节应该是相关的,并有助于完成手头的任务。这是你需要进行大量实验的事情。我们鼓励大量实验和迭代,以优化适用于你应用的提示。

例如,让我们尝试从一段文本中提取特定信息的简单提示。

提示:

提取以下文本中的地名。所需格式:地点:<逗号分隔的公司名称列表>输入:“虽然这些发展对研究人员来说是令人鼓舞的,但仍有许多谜团。里斯本未知的香帕利莫德中心的神经免疫学家 Henrique Veiga-Fernandes 说:“我们经常在大脑和我们在周围看到的效果之间有一个黑匣子。”“如果我们想在治疗背景下使用它,我们实际上需要了解机制。””

输出:

地点:里斯本,香帕利莫德中心

避免不明确

给定上述关于详细描述和改进格式的建议,很容易陷入陷阱:想要在提示上过于聪明,从而可能创造出不明确的描述。通常来说,具体和直接会更好。这里的类比非常类似于有效沟通——越直接,信息传达得越有效。

例如,你可能有兴趣了解提示工程的概念。你可以尝试这样做:

解释提示工程的概念。保持解释简短,只有几句话,不要过于描述。

从上面的提示中不清楚要使用多少句子以及什么风格。尽管你可能仍会从上述提示中得到较好的响应,但更好的提示应当是非常具体、简洁并且切中要点的。例如:

使用 2-3 句话向高中学生解释提示工程的概念。

做什么还是不做什么?

设计提示时的另一个常见技巧是避免说不要做什么,而应该说要做什么。这样(说要做什么)更加的具体,并且聚焦于(有利于模型生成良好回复的)细节上。

以下是一个电影推荐聊天机器人的示例,因为我写的指令——关注于不要做什么,而失败了。

提示:

以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。客户:请根据我的兴趣推荐电影。代理:

输出:

当然,我可以根据你的兴趣推荐电影。你想看什么类型的电影?你喜欢动作片、喜剧片、爱情片还是其他类型的电影?

以下是更好的提示:

提示:

以下是向客户推荐电影的代理程序。代理负责从全球热门电影中推荐电影。它应该避免询问用户的偏好并避免询问个人信息。如果代理没有电影推荐,它应该回答“抱歉,今天找不到电影推荐。”。```顾客:请根据我的兴趣推荐一部电影。客服:

输出:

抱歉,我没有关于你兴趣的任何信息。不过,这是目前全球热门的电影列表:[电影列表]。希望你能找到喜欢的电影!

高级提示技术

时至今日,改进提示词显然有助于在不同任务上获得更好的结果。这就是提示工程背后的整个理念。 但在本节中,我们将介绍更高级的提示工程技术,使我们能够完成更复杂和有趣的任务。

零样本提示

如今,经过大量数据训练并调整指令的LLM能够执行零样本任务。以下是我们使用的一个示例:

提示:

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

输出:

中性

请注意,在上面的提示中,我们没有向模型提供任何示例——这就是零样本能力的作用。

少样本提示

虽然大型语言模型展示了惊人的零样本能力,但在使用零样本设置时,它们在更复杂的任务上仍然表现不佳。少样本提示可以作为一种技术,以启用上下文学习,我们在提示中提供演示以引导模型实现更好的性能。

让我们通过Brown等人2020年(opens in a new tab) 提出的一个例子来演示少样本提示。在这个例子中,任务是在句子中正确使用一个新词。

提示:

“whatpu”是坦桑尼亚的一种小型毛茸茸的动物。一个使用whatpu
这个词的句子的例子是:我们在非洲旅行时看到了这些非常可爱的whatpus。
“farduddle”是指快速跳上跳下。
一个使用farduddle这个词的句子的例子是:

输出:

当我们赢得比赛时,我们都开始庆祝跳跃。

我们可以观察到,模型通过提供一个示例(即1-shot)已经学会了如何执行任务。

链式思考(CoT)提示

Wei等人(2022)(opens in a new tab) 中引入的链式思考(CoT)提示通过中间推理步骤实现了复杂的推理能力。您可以将其与少样本提示相结合,以获得更好的结果,以便在回答之前进行推理的更复杂的任务。

提示:

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

输出:

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

哇!我们可以看到在提供推理步骤时得到了完美的结果。实际上,我们可以通过提供更少的示例来解决此任务,即仅一个示例似乎就足够了:

提示:

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

输出:

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

文档问答中的链式提示

提示链可以用于不同的场景,这些场景可能涉及多个操作或转换。例如,LLM 的一个常见用途是根据大型文本文档回答问题。想要更好阅读大文本文档,可以设计两个不同的提示,第一个提示负责提取相关引文以回答问题,第二个提示则以引文和原始文档为输入来回答给定的问题。换句话说,可以创建两个不同的提示来执行根据文档回答问题的任务。

提示 1:

你是一个很有帮助的助手。你的任务是根据文档回答问题。第一步是从文档中提取与问题相关的引文,由####分隔。请使用<quotes></quotes>输出引文列表。如果没有找到相关引文,请回应“未找到相关引文!”。
####
{{文档}}
####

自我一致性

也许在提示工程中更高级的技术之一是自我一致性。由 Wang等人(2022) 提出,自我一致性旨在“替换链式思维提示中使用的天真贪婪解码方法”。其想法是通过少样本 CoT 采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高 CoT 提示在涉及算术和常识推理的任务中的性能。

让我们尝试以下算术推理示例:

提示:

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

输出:

35

输出是错误的!我们如何通过自我一致性来改进这个问题?让我们试试。我们将使用 Wang 等人 2022 年的少量样本范例(表 17 ):

提示:

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:服务器房间里有9台计算机。从周一到周四,每天都会安装5台计算机。现在服务器房间里有多少台计算机?
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:她用每个3美元的价格买了5个百吉饼。这意味着她花了15美元。她还剩8美元。
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。

计算最终答案涉及几个步骤(详见论文),但为了简单起见,我们可以看到已经出现了大多数答案,因此这基本上将成为最终答案。

生成知识提示

LLM 继续得到改进,其中一种流行的技术是能够融合知识或信息,以帮助模型做出更准确的预测。

使用类似的思路,模型是否也可以在做出预测之前用于生成知识呢?这就是 Liu 等人 2022 的论文所尝试的——生成知识以作为提示的一部分。特别是,这对于常识推理等任务有多大帮助?

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

提示:

高尔夫球的一部分是试图获得比其他人更高的得分。是或否?

输出:

是。

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

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

提示:

输入:希腊比墨西哥大。
知识:希腊的面积约为131,957平方公里,而墨西哥的面积约为1,964,375平方公里,使墨西哥比希腊大了1,389%。
输入:眼镜总是会起雾。
知识:当你的汗水、呼吸和周围的湿度中的水蒸气落在冷的表面上,冷却并变成微小的液滴时,会在眼镜镜片上产生冷凝。你看到的是一层薄膜。你的镜片相对于你的呼吸会比较凉,尤其是当外面的空气很冷时。
输入:鱼有思考能力。
知识:鱼比它们看起来更聪明。在许多领域,如记忆力,它们的认知能力与或超过非人类灵长类动物等“更高级”的脊椎动物。鱼的长期记忆帮助它们跟踪复杂的社交关系。
输入:一个人一生中吸烟很多香烟的常见影响是患肺癌的几率高于正常水平。
知识:那些一生中平均每天吸烟不到一支香烟的人,患肺癌的风险是从不吸烟者的9倍。在每天吸烟1到10支香烟之间的人群中,死于肺癌的风险几乎是从不吸烟者的12倍。
输入:一块石头和一颗卵石大小相同。
知识:卵石是一种根据Udden-Wentworth沉积学尺度的颗粒大小为4到64毫米的岩屑。卵石通常被认为比颗粒(直径2到4毫米)大,比卵石(直径64到256毫米)小。
输入:高尔夫球的一部分是试图获得比其他人更高的得分。
知识:

知识1:

高尔夫球的目标是以最少的杆数打完一组洞。一轮高尔夫球比赛通常包括18个洞。每个洞在标准高尔夫球场上一轮只打一次。每个杆计为一分,总杆数用于确定比赛的获胜者。

知识2:

高尔夫球是一项精密的球杆运动,竞争选手(或高尔夫球手)使用许多类型的球杆,用最少的杆数将球打入球场上一系列洞中。目标是以最低的分数完成比赛,该分数是通过将每个洞上所用的杆数相加计算出来的。得分最低的选手赢得比赛。

我们使用 Liu等人2022 的论文中提供的提示。

下一步是将知识整合并得出预测。我将问题重新格式化为 QA 格式,以指导答案格式。

提示:

问题:高尔夫球的一部分是试图获得比其他人更高的得分。是或否?
知识:高尔夫球的目标是以最少的杆数打完一组洞。一轮高尔夫球比赛通常包括18个洞。每个洞在标准高尔夫球场上一轮只打一次。每个杆计为一分,总杆数用于确定比赛的获胜者。
解释和答案: 

答案 1(置信度非常高):

不是,高尔夫球的目标不是获得比其他人更高的得分。相反,目标是以最少的杆数打完一组洞。总杆数用于确定比赛的获胜者,而不是总得分。
问题:高尔夫球的一部分是试图获得比其他人更高的得分。是或否?
知识:高尔夫球是一项精密的球杆运动,竞争选手(或高尔夫球手)使用许多类型的球杆,用最少的杆数将球打入球场上一系列洞中。目标是以最低的分数完成比赛,该分数是通过将每个洞上所用的杆数相加计算出来的。得分最低的选手赢得比赛。
解释和答案:

答案 2(置信度要低得多):

是的,高尔夫球的一部分是试图获得比其他人更高的得分。每个选手都试图以最少的杆数打完一组洞。总杆数用于确定比赛的获胜者,而不是总得分。得分最低的选手赢得比赛。

这个例子发生了一些非常有趣的事情。在第一个答案中,模型非常自信,但在第二个答案中不太自信。我简化了过程以进行演示,但在得出最终答案时还有一些细节需要考虑。请查看论文以了解更多。

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee