向GPT提问也是一门学问——大语言模型提示工程入门

背景

提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。处理复杂任务场景的能力,如问答和算术推理能力。

开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。与大语言模型交互和研发的各种技能和技术。提示工程在实现和大语言模型交互、对接,以及理解大语言模型能力方面都起着重要作用。

提示工程(Prompt Engineering)是一门较新的学科,用户可以通过提示工程来提高大语言模型的安全性,也可以赋能大语言模型,比如借助专业领域知识和外部工具来增强大语言模型能力。

ChatGPT相信大家都有了解,在这种大语言模型(LLM)中,我们需要向模型提供一段文本作为指令,然后模型会输出一段内容作为响应。为了让模型响应的更为精准,更能理解我们的意图,我们就需要使用更为优秀准确的提示词(Prompts),也就是提示工程这门学科的内容

基础概念

模型设置

通过控制Temperature(输出概率分布)和Top_p(示例采样概率)两个维度的属性可以得到不同的结果,

低Temperature + 低Top_p

在这种设置下,大语言模型会倾向于选择概率最高的单词,生成的文本更符合语言规律和逻辑,生成的文本往往较为简洁,不容易出现冗长或模糊的回答。

这种模式适用于需要保障准确性的场景,或是要求逻辑性较强,不需要太多细节的回答中:

  • 确定性输出、真实质量保障:知识问答、产品技术支持
  • 简明扼要:标题生成、文章摘要生成
  • 强逻辑性:议论文生成、对话生成

低Temperature + 高Top_p

由于高Top_p的设置,模型不会选择概率最高的单词,而是从概率较高的多个选项中进行选择,从而增加了生成内容的多样性,生成的文本也会包含更多的信息和细节。同时低Temperature的设置也保障了生成内容的逻辑性。

这种模式适用于需要一定创意性,且信息相对详细的场景:

  • 创意性:故事生成、广告文案
  • 信息详细:新闻报道、产品描述
  • 逻辑与创意兼具:产品评论生成、创意型对话生成

高Temperature + 低Top_p

高Temperature会导致模型考虑更多概率较低的选项,内容丰富度也会更进一步提升,生成的结果相对而言会具有较高的创意性。

这种模式适用于需要高度创意性内容的场景,同时逻辑性较弱,不过这种表述在需要创意的场景中反而会是亮点:

  • 创意性:创意写作、艺术作品描述
  • 内容丰富:文艺评论生成
  • 弱逻辑性:抽象艺术描述、创意性问题解答

高Temperature + 高Top_p

这种模式下模型会在极大范围内的选项中进行选择,生成的文本也会具有极高创意型,但是生成的文本可能会存在难以理解的表述。

这种模式适用于需要极高创意性的场景,同时需要提供大量的细节信息:

  • 极高创意性:实验性写作
  • 大量细节:实验性对话生成
  • 逻辑性较差:抽象艺术创作、极限创意问题解答

Prompts

大语言模型输出的结果质量除了与模型设置有关,还与用户传达的指令内容有关。Prompts指提示词,即用户向模型传达的内容,包含以下任意内容:

  • 指令:需要模型执行的特定任务
  • 上下文:外部信息,提供任务背景
  • 输入数据:输入的内容或问题,用于任务执行需要
  • 输出指示:输出的类型或格式

比如:请告诉我这道题的答案,1+1等于几

通过使用更加准确的提示词,可以引导模型给出更符合需要的响应。通过使用不同的提示词,可以让模型执行不同的功能,比如以下内容:

  • 文章摘要:生成以下这段文本的摘要:xxx
  • 代码生成:用Java实现以下功能:xxx
  • 知识库问答:基于以下文本内容回答问题,如果无法从中找到答案请说“不知道”,文本内容如下:xxx

提示方式

以下的所有提问示例均来自GPT4、ChatGPT3.5、ChatGLM以及LLaMA,提问示例仅用作帮助理解提问方式,并非对比模型

有限样本提示

这种提示技术需要提供给模型一定示例,限制可用样本数以提高生成质量

少样本提示

和考试题目类似,对于一个问题,需要给出一个样例,让回答者按照这个样例来回答问题。

提示:

xxx是一种喜悦的心情,一个用xxx造句的样例是:“我今天看了电影,我很xxx”。yyy是一种难过的心情,请你仿照这样的格式进行造句

输出:

“我听到了一个坏消息,我感到很yyy。”

我们可以看到,模型可以完美地按照我们给出的样例进行输出,假设我们不给出样例,那么模型一定会天马行空地发挥

零样本提问

大语言模型经过了大量数据训练和优化,对于部分问题可以不需要我们给定样例就可以给出合理的响应,如:

提示:

下面这句话是消极的还是积极的:“今天的午餐很美味”

输出:

这句话是积极的。

在模型的不断调整中(来自人类反馈的强化学习),零样本提问的准确性会不断适应人类偏好(比如文本情感倾向),准确性也会越来越高

方向性刺激提示

通过为模型提供一些明确的指示或者引导性的信息,来帮助模型更有效地生成用户期待的答案。在处理模糊或者复杂问题时会更为有效。

如果我们想了解一些光合作用的内容,如果直接提问可能得出的结果不尽如人意,比如下面这样:

提示:

光合作用是什么

输出:

光合作用是一种生物化学反应,是绿色植物和某些细菌利用叶绿素,在光的催化作用下,将二氧化碳和水转化为葡萄糖同时放出氧气的生化过程。这个过程是地球上所有生命能量来源之一,也让地球成为了一个适宜生命生存的行星。

但是如果我们采用方向性刺激提问,比如下面这样,我们就可以得到更丰富,更符合我们期待的回答:

提示:

请详细解释光合作用的过程,包括其发生的地点、参与的主要反应和产物。

输出:

光合作用的过程如下:
参与的主要反应:
在光合作用中,光敏剂吸收光子后,电子被传递到叶绿素分子上。叶绿素分子中的镁离子被激发成为镁离子共振态,进而将电子传递到葡萄糖分子中,生成葡萄糖。同时,水分子也被分解成氧气和二氧化碳。
光合作用的地点:
光合作用的地点包括植物、藻类和一些细菌,它们都可以利用叶绿素进行光合作用。
产物:
光合作用的主要产物是葡萄糖和氧气。葡萄糖是光合作用产生的最终产物,它是生物体内的重要营养物质。氧气则是光合作用的副产物,它被释放到大气中,供呼吸作用使用。
总之,光合作用是绿色植物和某些细菌利用叶绿素,在光的催化作用下,将二氧化碳和水转化为葡萄糖同时放出氧气的生化过程。这个过程是地球上所有生命能量来源之一,也让地球成为了一个适宜生命生存的行星。

多步骤生成提示

当模型足够大时,会涌现推理能力

多步骤生成提示的技术,通常会引导模型沿着一系列逻辑步骤进行推理,其中可能涉及多种提示方式,比如文本、图像、声音等。

链式思考(CoT)提示

先来看这个示例

提示:

提问:这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。请回答对还是错

输出:

回答:这组数中的奇数加起来是偶数,答案为对。

如果我们增加一些提问与回答的样例,如下:

提示:

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

输出:

回答:这组数中的奇数加起来不是偶数,答案为错。奇数的和为 (15 + 5 + 13 + 7 + 1) = 41,而41是一个奇数,不是偶数。

少样本提示不同的是,我们给出的并不仅仅是一个输出模板,而是一系列供参考和推理的模板,让模型根据这些模板自行推理,从而给出我们想要的回答

多模态思维链提示方法(多模态CoT提示)

模态我们可以理解为一种输入维度,传统模态的思维链通常侧重于语言模型,而多模态思维链融合了文本和视觉,利用多模态的思维链进行推理,从而生成更符合人类预期的信息。

多模态思维链提示方法通常遵循以下步骤:

  1. 确定问题或任务的核心概念,并将其拆分成若干子概念
  2. 为每个子概念选择合适的模态,如文字描述、示意图像、音频片段等。
  3. 将这些多模态信息按照逻辑顺序组织起来,形成一个“思维链”,以引导大型语言模型生成所需的答案或解决方案。

假设我们要向一个大型语言模型请教如何制作一个简单的太阳能发电系统。使用多模态思维链提示方法,我们可以这样组织输入:

文本:太阳能发电系统的基本组成部分包括:

图像1:展示太阳能电池板

文本:太阳能电池板用于收集太阳能并将其转化为电能;

图像2:展示电池

文本:电池用于储存从太阳能电池板收集到的电能;

图像3:展示逆变器

文本:逆变器用于将直流电转换为交流电,以便在家庭电器中使用。

问题:如何将这些部件连接起来以搭建一个简单的太阳能发电系统?

通过这样的多模态输入,我们可以激活模型中与太阳能发电系统相关的知识和技能,从而获得详细且相关的输出,如系统安装和组件连接的详细步骤。

目前GPT4.0就是一种支持多模态的大语言模型,不过图像输入暂时并没有向外界放开

动态提示

这些技术根据生成过程中的能够动态自我调整,要求模型在多个层面保持一致或者通过模型自身来生成新的提示。

自我一致性

其想法是通过少样本CoT(链式推理)采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高CoT提示在涉及算术和常识推理的任务中的性能。

自我一致性是一种提高大语言模型输出质量的方法,它要求模型在回答问题或生成输出时保持一致性,避免出现逻辑矛盾或者信息不一致。核心是通过在输入中明确要求模型保持一致性,可以提高输出的准确性和可靠性。

假设我们向一个大型语言模型请教关于地球大气层的问题。为了保持自我一致性,我们可以将问题分为几个子问题,并要求模型在回答这些子问题时保持一致性。例如:

**提示:
**请简要介绍地球大气层的结构。在回答上述问题时,请确保以下信息一致:哪些层位于其他层之上?哪些层与地球表面相邻?每个层的主要特点和功能是什么?

自动提示工程师(APE)

自动提示工程师是一种使用算法或程序,自动生成针对大语言模型的有效提示的方法。通过使用自动提示工程师,可以减少人工设计和优化提示的时间和成本,同时根据特定任务和需求生成更高质量的输出。

一个比较容易理解的方式是这样的,假如我们想针对一篇论文进行分析,但是不知道该怎么提问才能得到最为精确的答案,于是我们直接问模型,

我该问你什么问题才能得到最准确详细地回答?

。然后我们再拿着模型告诉我们的回答去问模型,这样就完美解决了提示词不准确的问题

假设我们要创建一个自动提示工程师来回答关于动物的问题。我们可以通过以下方式生成自动生成的提示:

提示:

收集一组关于动物的问题-答案对(例如,从问答网站、教科书等);

使用自然语言处理技术(如分词、词性标注等)对收集的问题-答案对进行预处理;

通过分析预处理后的数据,为不同类型的问题生成通用问题模板,如“哺乳动物有哪些共同特征?”、“{动物名称}的生命周期是多长?”等;

根据需求,自动填充模板中的空白部分,生成具体的提示

交互式提问(Active-Prompt)

Active-Prompt这种提示技术通过设计一组代表性的提示,使模型能够根据这些提示解决特定任务。在这种方法中,我们不仅提供问题,还预先设计与任务相关的提示模板。

核心思想是通过训练一个简单的模型,这个模型学会根据语言模型的输出和预先设计的提示来作出预测。在训练过程中,Active-Prompt会自动优化这些提示,以使预测更加准确。

以情感分析任务为例。假设我们需要判断一段文本是正面情感还是负面情感。我们可以设计一个Active-Prompt 模板,如:

“这段文本中的情感是 {sentiment},因为 {reason}。”我们会用不同的情感(如“正面”和“负面”)填充 {sentiment},并让模型生成 {reason} 部分。然后,我们使用一个简单的模型来判断哪个提示产生的原因最有说服力,从而推断出文本的情感。

这种方法的优点是,它可以在不对庞大的语言模型进行微调的情况下,实现对特定任务的适应性。这使其成为一种高效、节省计算资源的解决方案。

总之,Active-Prompt是一种通过设计提示模板和训练一个简单模型来引导大型语言模型解决特定任务的方法。这种方法在不需要修改庞大的语言模型的情况下,提高了任务的解决效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值