共计 6677 个字符,预计需要花费 17 分钟才能阅读完成。
腾小云导读
近年来,大模型如 ChatGPT 等愈发弱小的生成能力一次次引爆行业探讨。你真的玩明确 GPT 等等 AIGC 工具了吗?它是否足够“听话”、了解并满足你所有的需要?提醒词工程是激活大模型能力的关键所在。能够说谁把握 Prompt Engineering 能力,谁就拿到了激活大模型强能力的钥匙。本篇文章讲述了 Prompt Engineering 的根底实用技巧和进阶操作门道,无论你是 AIGC 入门小白还是已上手的玩家,看完文章将会有新启发。欢送浏览~
目录
1 什么是提醒工程
2 提醒工程根底
2.1 提醒四因素
2.2 通用技巧 2.3 简略提醒解析
3 提醒工程进阶
3.1 零 / 少样本提醒
3.2 思维链提醒
3.3 Explicit 思维链
3.4 被动提醒
3.5 思维树 3.6 头脑风暴提醒
3.7 多模态思维链
3.8 一致性提醒
3.9 Progressive-Hint 提醒
3.10 Plan-and-Solve 提醒
3.11 加强(检索)提醒
4 懒人万能提醒工程
01、什么是提醒工程
提醒工程是一门新兴学科,就像是为大语言模型(LLM)设计的 ” 语言游戏 ”。通过这个 ” 游戏 ”,咱们能够更无效地疏导 LLM 来解决问题。只有相熟了这个游戏的规定,咱们能力更分明地意识到 LLM 的能力和局限。
这个 ” 游戏 ” 不仅帮忙咱们了解 LLM,它也是晋升 LLM 能力的路径。无效的提醒工程能够进步大语言模型解决简单问题的能力(比方一些数学推理问题),也能够进步大语言模型的扩展性(比方能够联合业余畛域的常识和内部工具,来晋升 LLM 的能力)。
提醒工程就像是一把钥匙,为咱们了解和利用大语言模型关上了新的大门,无论是当初还是将来,它的后劲都是无穷无尽的。
02、提醒工程根底
2.1 提醒四因素
通常一个 Prompt 会蕴含以下四个元素中的若干个:
指令:心愿 LLM 执行什么工作;上下文:给 LLM 提供一些额定的信息,比方能够是垂直畛域信息,从而疏导 LLM 给出更好的答复;输出数据:心愿从 LLM 失去什么内容的答复;输入格局:疏导 LLM 给出指定格局的输入。 |
---|
2.2 通用技巧
- 由浅入深
设计提醒词常常是一个迭代的过程,须要一直试验能力获得最佳后果。你能够从简略的提醒词开始,随着试验深刻,逐渐增加更多的元素和上下文。在解决简单工作时,能够将工作合成为简略的子工作,逐渐构建并优化。
比方你想让一个语言模型来写一首对于春天的诗。一个简略的提醒词可能是:“写一首对于春天的诗。”随着你对模型输入的察看,你可能发现须要更具体的批示,例如:“写一首四行对于春天的诗,用押韵的形式。”
- 明确指令
设计无效的提醒词,最好是应用明确的命令来领导模型实现你想要的工作,如“写作”、“分类”、“总结”、“翻译”、“排序”等。而后,依据具体任务和利用场景,尝试应用不同的关键词、上下文和数据,找出最佳的组合。
假如你心愿模型可能将一段英文翻译成中文。你能够开始应用这样的提醒词:“将以下文本翻译成中文”,接着提供你要翻译的英文段落。然而,如果你心愿翻译得更具备正式感,你可能须要增加更多上下文:“将以下的正式英文报告翻译成等同正式的中文。”
- 明确细节
当你须要模型执行特定工作或生成特定格调的内容时,具体且明确的提醒词会失去更好的后果。
如果你想要模型生成一段形容美食的文本,你可能会这样批示:“形容一道美味的意大利面。”然而,如果你心愿失去对于某个特定菜品的详细描述,你可能须要批示得更具体:“形容一道由陈腐番茄、大蒜、橄榄油和罗勒叶制成的意大利面的滋味和口感。”
- 明确需要
这里的明确相似于给 LLM 限定一些范畴,而不是泛泛而谈。
比方你可能心愿模型解释一个迷信概念,例如:“解释相对论。”但如果你须要用非专业的语言来形容,你可能须要更明确的批示:“用易于了解的非迷信语言解释爱因斯坦的相对论。”
- 正向疏导,防止反向限度
设计提醒词时,防止批示模型不要做什么,而是明确通知它应该做什么。这将激励更多的确定性,并聚焦于疏导模型产生好的回应。
例如,你正在设计一个电影举荐的聊天机器人。一种可能的提醒词是:“举荐一部电影,但不要询问任何个人信息。”然而,更无效的提醒可能是:“依据寰球热门电影举荐一部电影。”
2.3 简略提醒解析
- 场景:写一个对于本人的介绍
提醒:“Reid 的简历:[粘贴残缺的简历在这里]。依据以上信息,写一个对于 Reid 的有趣的演讲者简介。”
剖析:这个提醒间接提供了 LLM 所需的信息,使得 LLM 可能依据给定的信息来编写一段介绍,并明确了简历的格调和用处。
- 场景:用五个要点总结一篇文章
提醒:“[在这里粘贴全文]。总结下面文章的内容,用五个要点。”剖析:这个提醒明确地指出了工作——对文章进行总结,并制订了输入的模式——五个要点。
- 场景:写一篇对于生产力的博客
提醒:” 写一篇对于小型企业的生产力重要性的博客文章。”
剖析:这个提醒提供了明确的上下文,通知 LLM 所需的内容类型(博客),以及博客文章须要涵盖的具体主题(小型企业的生产力的重要性)。
- 场景:写一首诗
提醒:“以李白的格调写一首对于落叶的诗。”
剖析:这个提醒要求 LLM 以特定的格调(李白的格调)写诗,并给出了诗的主题(落叶)。这让 LLM 晓得了应该采纳的写作格调和主题。
- 场景:对于如何训练小狗的文章
提醒:“作为一名业余的狗训练师,写一封电子邮件给一位刚刚失去一只 3 个月大的柯基的客户,通知他们应该做哪些流动来训练他们的小狗。”
剖析:在这个提醒中,咱们要求 LLM 表演一个特定的角色(狗训练师),并提供特定的上下文信息,如狗的年龄和类型。咱们也指出了咱们想要的内容类型(电子邮件)。
03、提醒工程进阶
3.1 零 / 少样本提醒
Zero-Shot Prompting: 在这种状况下,模型接管到的提醒没有蕴含任何特定工作的示例。这意味着模型须要基于给定的提醒,而没有任何相干工作的先前示例,来推断出应该执行的工作。例如,如果咱们向模型提供提醒 “Translate the following English text to French: ‘Hello, how are you?'”,那么模型将要依据这个提醒,而没有任何额定的翻译示例,来执行翻译工作。
Few-Shot Prompting: 在这种状况下,模型接管到的提醒蕴含了一些(通常是几个)特定工作的示例。这些示例作为上下文,提供了对于冀望输入的线索。例如,如果咱们想要模型进行文本翻译,咱们可能会提供如下的提醒:
English: 'Cat'
French: 'Chat'
English: 'Dog'
French: 'Chien'
English: 'Bird'
French: 'Oiseau'
English: 'Elephant'
在这个例子中,模型通过前三个英法翻译对的示例,了解了咱们心愿它将 ‘Elephant’ 从英文翻译成法文。因而,它会输入 ‘Éléphant’。
3.2 思维链提醒
思维链的思维其实很简略,就是给 LLM 通提供一些思考的两头过程,能够是用户提供,也能够让模型本人来思考。
少样本思维链: 就是用户提供一些“解题步骤”,如下图所示,左侧间接让 LLM 答复问题时它给出了谬误的答案,然而右侧通过在 Prompt 中通知模型解答步骤,最终给出的答案就是精确的。
零样本思维链: 厌弃提供两头过程太麻烦?偷懒的方法来了,零样本思维链通过一句 magic prompt 实现了这一指标“Let’s think step by step”。
然而过于简化的办法必定也会存在肯定局限性,比方 LLM 可能给出的是谬误的思考过程。因而有了 自动化思维链,通过采纳不同的问题失去一些推理过程让 LLM 参考。它的核心思想分两步:
首先进行问题聚类,把给定数据集的问题分为几个类型;
采样参考案例,每个类型问题抉择一个代表性问题,而后用零样本思维链来生成推理的两头过程。
3.3 Explicit 思维链
这个工作的次要目标是让 LLM 在对话时思考用户的状态,比方用户的 personality,empathy 和 psychological,遵循的还是思维链套路,并且将思维链拆成了多个步骤(LLM 每次答复一点,不是一次性基于思维链全副答复)。这样的益处在于用户还能够批改、删除两头过程的一些答复,原始的上下文和所有两头过程都会用于最终答复的生成。
3.4 被动提醒
实质上还是思维链,因为人工设计的思维链或者自动化思维链的后果也并不一定现实(思维链的设计跟具体任务相干),因而提出了用不确定性来评估思维链的好坏,而后再让人来修改一些不确定性比拟大的思维链。
3.5 思维树
Tree of Thoughts(ToT)是思维链的进一步拓展,次要想解决 LM 推理过程存在两个问题:不会摸索不同的可能抉择分支;无奈在节点进行前后向的摸索。
ToT 将问题建模为树状搜寻过程,包含四个步骤:问题合成、想法生成、状态评估以及搜索算法的抉择。
3.6 头脑风暴提醒
次要思考的是代码生成方向,不过思维还是能够用在各种畛域的发问。核心思想分为三步:
头脑风暴: 通过多个 Prompt 喂给 LLM 失去多样化的“思路”;
抉择最佳思路: 这里用了一个神经网络模型来打分,并用最高分的思路来作为最终 Prompt;
代码生成: 基于问题和抉择进去的最佳思路进行代码生成。
3.7 多模态思维链
往年一些须要多模态 LLM 也被提出,天然也有了一些多模态提醒工程的尝试,它包含两个阶段:
理由生成: 在这个阶段,咱们将语言和视觉输出提供给模型,以生成推理的理由。这个理由能够看作是解决问题的两头步骤或思考链的一部分。这个过程能够帮忙模型了解问题的上下文,并为下一步的答案推断做好筹备。
答案推断: 在这个阶段,咱们将从第一阶段生成的理由增加到原始的语言输出中。而后,咱们将更新后的语言输出和原始的视觉输出一起提供给模型,以推断出答案。这个过程容许模型利用在理由生成阶段取得的信息来做出更精确的推断。
3.8 一致性提醒
核心思想就是多数遵从少数,多让模型答复几次(这里的发问也用到了少样本思维链),而后在 LLM 的屡次答复中抉择呈现屡次的答案。
3.9 Progressive-Hint 提醒
Progressive-Hint Prompting(PHP)相似于一致性提醒的进阶,试图模仿人类推理的过程,通过重复检查和修改答案来进步推理的准确性。具体来说,PHP 办法会对上一次的推理过程进行解决,而后将其合并到初始问题中,让模型进行再次推理。当间断两次的推理后果统一时,就认为得出的答案是精确的,并返回最终答案。
在 PHP 办法中,首次与 LLM 交互应用的 Prompt 称为根底提醒(Base Prompting)。根底提醒能够是规范提醒、CoT 提醒或者其余改良版本的提醒。在随后的交互中,将应用 PHP 提醒,直到最新的两个答案统一。
3.10 Plan-and-Solve 提醒
Plan-and-Solve 提醒的设计理念是让模型制订一个解决问题的打算,而后依照这个打算来执行子工作,以此达到明确生成推理步骤的成果。
为了进一步加强 PS 提醒的成果,作者扩大了它,造成了一种名为 PS+ 的新提醒形式。PS+ 提醒在 PS 提醒的根底上,增加了“pay attention to calculation”这样的疏导语句,要求模型在计算过程中更加准确。为了防止模型在解决问题时疏忽了要害的变量和数值,PS+ 提醒还减少了“extract relevant variables and their corresponding numerals”这样的疏导语句。此外,为了强化模型在推理过程中计算两头后果的能力,PS+ 提醒也退出了“calculate intermediate results”这样的疏导语句。通过这种形式,PS+ 提醒进一步提高了模型在解决多步推理工作时的成果。
3.11 加强(检索)提醒
加强 LLM 实质上在做的事件还是进步提醒词的信息,从而更好地疏导模型。这里次要能够有两种形式,一种是用本人的公有知识库来裁减 LLM 的常识,一种是借用 LLM 的知识库来进步 Prompt 的信息量。
3.11.1 内部知识库
- 本地知识库
这里能够联合网上的信息或者集体的本地信息,如果是联合网上的信息(比方 newbing),其实就是须要联合一些爬虫工具,捞出一些相干信息一起拼到 Prompt 当中(也会须要比方做一些相关性的比拟、摘要等)。联合本地知识库也是目前业界内比拟关注的方向,次要有以下几步:
将本地知识库转为 embedding 保留。对于用户发问转为 embedding,而后去数据库查相干的信息。检索出本地知识库相干的信息后,比方能够用如下提醒拼接上检索进去的信息。 |
---|
Use the following pieces of context
这样 LLM 在答复时就能利用上公有的常识了。
3.11.2 LLM 知识库
- 常识生成提醒
因为 LLM 自身具备大量的通用常识储备,只是你不提醒它一下可能难以在大量常识中找进去给你答复。对于一些问题,咱们能够先让 LLM 产生一些相干的常识或事实(比方 Generate some numerical facts about xxx),而后再利用这些辅助信息和原来的问题来发问,Knowledge 处放上 LLM 给出的一些事实信息。
Question:
Knowledge:
Explain and Answer:
后面提到的 Clue And Reasoning 提醒其实也属于是在借用 LLM 的知识库。
- Clue And Reasoning 提醒
Clue and Reasoning Prompting (CARP) 是一种用于文本分类的办法,它首先提醒大型语言模型(LLMs)寻找外表线索,例如关键词、语调、语义关系、援用等,而后基于这些线索疏导出一个诊断推理过程进行最终决策。
(其实也实用于其余场景,让模型帮忙提供点线索再给出最终答案)
- 常识反刍提醒
只管现有的预训练语言模型(PLMs)在许多工作上表现出色,但它们依然存在一些问题,比方在解决常识密集型工作时,它们往往不能充分利用模型中的潜在常识。
作者们提出了一种名为 ”Knowledge Rumination” 的办法,通过增加像 ”As far as I know” 这样的提醒,让模型回顾相干的潜在常识,并将其注入回模型以进行常识坚固。这种办法的灵感来自于动物的反刍过程,即动物会将食物从胃中带回口中再次咀嚼,以便更好地消化和排汇。
文章提出了三种不同类型的提醒:
Background Prompt:这种提醒旨在帮忙模型思考背景常识。提醒的模式是 ”As far as I know [MASK]”。这种提醒激励模型回顾和思考其曾经晓得的个别信息或背景常识。Mention Prompt:这种提醒用于引发模型对提及的记忆。模式是 ”About [Mention], I know [MASK]”。这种提醒激励模型回顾和思考与特定主题或实体(即 ”[Mention]”)相干的常识。Task Prompt:这种提醒旨在帮忙模型回顾工作的记忆。例如,对于情感剖析,提醒是 ”About sentiment analysis, I know [MASK]”。这种提醒激励模型回顾和思考与特定工作(例如情感剖析)相干的常识。 |
---|
04、懒人万能提醒工程
目前网上曾经有不少 Prompt 优化工具,比方 ChatGPT 的插件中就有一个不错的工具 Prompt perfect,可能基于用户给的 Prompt 进行优化,再喂给 ChatGPT 进行发问。
当然,通过后面那么多提醒工程的介绍,大家也能够思考一下,如何用一个提醒工程来帮忙本人写提醒工程,上面是笔者之前做的一个工具,提醒词的成果肉眼可见晋升。感兴趣的也能够试试用 ChatGPT 来优化本人的 Prompt。欢送转发分享~
参考文献:
Prompt Engineering Guide.
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models.
Multimodal Chain-of-Thought Reasoning in Language Models.
Automatic Chain of Thought Prompting in Large Language Models.
Self-Consistency Improves Chain of Thought Reasoning in Language Models.
Chain-of-thought prompting for responding to in-depth dialogue questions with LLM.
-End-
原创作者|陈铭豪
技术责编|wallychen
ChatGPT 等 AIGC 工具 有哪些神奇的应用形式?欢送在腾讯云开发者公众号评论区探讨。咱们将选取 1 则最有意义的分享,送出腾讯云开发者 - 手段垫 1 个(见下图)。7 月 4 日中午 12 点开奖。