Prompt Engineering Guide
很好的学习网站:Prompt Engineering Guide | Prompt Engineering Guide
随着大语言模型如 ChatGPT 等的兴起,人们看到了其在自动生成各种文本方面的超强能力和广泛应用。然而,由于模型可能生成不准确或不当的文本,提示工程(Prompt engineering)应运而生。提示工程通过设计和构建输入提示来控制大语言模型的输出,从而提高生成文本的准确性和可靠性,为各种应用场景提供更好的效果和体验。因此,提示工程的背景和意义在于优化输入提示,引导大语言模型生成更加准确、可靠、符合预期的输出文本,从而更好地发挥其优势和价值。
随着大语言模型如 ChatGPT 等的兴起,人们看到了其在自动生成各种文本方面的超强能力和广泛应用。然而,由于模型可能生成不准确或不当的文本,提示工程(Prompt engineering)应运而生。提示工程通过设计和构建输入提示来控制大语言模型的输出,从而提高生成文本的准确性和可靠性,为各种应用场景提供更好的效果和体验。因此,提示工程的背景和意义在于优化输入提示,引导大语言模型生成更加准确、可靠、符合预期的输出文本,从而更好地发挥其优势和价值。
提示简介
提示工程(Prompt engineering)是一门相对较新的学科,旨在为各种应用和研究主题开发和优化提示,以有效地利用语言模型(LMs:language models )。提示工程技能有助于更好地了解大型语言模型(LLMs:large language models )的能力和局限性。研究人员使用提示工程来提高 LLMs 在各种常见和复杂任务(如问答和算术推理)上的能力。开发人员使用提示工程来设计稳健且有效的提示技术,与 LLMs 和其他工具进行交互。
基本提示(Basic Prompts)
可以通过提示实现很多功能,但结果的质量取决于您提供的信息量。提示(Prompt)可以包含指令(instruction )或问题(question),以及其他详细信息,例如背景信息输入(input)或示例(examples)。
例如:为了让模型生成描述今天上海天空的语句,我们可以通过逐步优化输入提示信息来帮助模型完成任务。
Prompt:
完成这个句子:
天空是
Output:
天空是指大气层上方的空间,通常是指人们在地面上所看到的天空,它的颜色和形态会随着时间、地点、季节和气象条件的不同而变化。
正如上面这个例子,语言模型输出了一系列与“天空是”这个上下文相关(只有指令和问题,没有背景信息)的字符串。输出结果是通用的知识,与我们想要实现的任务相差甚远。
这个简单的例子也突显了我们需要提供更多上下文或指令来明确我们想要实现的具体目标。
让我们试着稍微改进一下:
Prompt:
根据今天天气情况,完成描述今天天气的句子:
天空是
Output:
天空是阴沉的,乌云密布,目前正在下雨。
进一步细化地点(没有今天天气信息):
Prompt:
根据上海今天天气情况,完成描述今天天气的句子:
天空是
Output:
天空是阴沉的,目前有雨,气温较为寒冷。
告诉 LLMs 模型今天是晴天:
Prompt:
根据上海今天晴天,完成描述今天天气的句子:
天空是
Output:
天空是湛蓝色的,阳光明媚,没有云彩。
我们告诉模型去完成这个句子的上下文背景信息,所以结果看起来更好,因为它严格按照我们告诉它要做什么(“完成句子”)来进行。这种通过设计最佳提示语来指导模型执行任务的方法被称为提示工程。
现在的ChatGPT(也称为LLM,即大型语言模型)已经成为了执行各种先进任务的重要工具。无论是对于文本摘要、问答系统、对话机器人,还是数学推理、代码生成等领域,ChatGPT都展现出了其强大的能力和潜力。
参数调整(LLM Settings)
在使用提示语(Prompt )可以通过 API 或直接与 LLM 进行交互。可以配置一些参数来调整输出不同的结果。
-
Temperature:
Temperature是一个用于控制文本生成随机性的参数;
Temperature值越低,生成的文本就越接近于模型已有的知识和样本,可能会更加保守和可预测,当Temperature值接近于0时,生成的文本就会越来越接近于模型最有可能的输出;
而当Temperature值较高时,生成的文本就会更加多样化、新颖和出人意料。
这是因为高温下,生成过程更加随机,模型更容易从多个可能的单词和短语中进行选择和组合,从而创造出更加多样化的文本。
在应用方面,对于基于事实的问答,我们可能希望使用较低的温度,以鼓励更具事实性和简洁的回答。
对于诗歌生成或其他创意任务,增加温度可能会更有益。
-
Top_p:
用于控制生成文本多样性的参数,它可以理解为一个概率阈值。在生成文本时,模型首先计算出所有可能的词的概率分布,然后根据Top-p的设定值,只保留概率累加值最高的一部分词汇。具体来说,模型会将所有词的概率按照从大到小的顺序排列,然后不断累加这些词的概率值,直到累加概率值超过了Top-p设定的概率阈值。此时,模型只保留累加概率值最高的词汇,其他的词汇被丢弃。这样可以有效控制生成文本的多样性,防止生成文本重复和过于生硬。Top-p值越大,生成的文本就越多样化,但同时也可能导致生成文本的准确性降低,因为模型在选择词汇时可能会考虑一些低概率的词汇。
标准的提示(Standard Prompts)
标准提示具有以下格式:
<Question>?
也可以格式化为 QA 格式,这是许多 QA 数据集的标准格式,如下所示:
Q: <Question>?
A:
鉴于上述标准格式,一种广受欢迎且有效的提示技术被称为“few-shot prompting”,其中我们提供样本。Few-shot 提示可以按以下方式格式化:
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
💡 并不一定需要使用 QA 格式。格式灵活,不拘泥具体格式,完全取决于手头的任务。例如,您可以执行简单的分类任务,并给出演示任务的示例,如下所示:
prompt:
这太好了!// 积极的
这电影很精彩 //积极的
表演太差了 // 消极的
这部喜剧不好笑 //
output:
这太好了!// 积极的
这部电影很精彩!// 积极的
表演太差了!// 消极的
这部喜剧不好笑。// 消极的
提示的组成部分(Elements of a Prompt)
提示可能包含以下任何组件:
-
Instruction 指令 : 您想让模型执行的特定任务或指令
-
Context 上下文 : 可以涉及外部信息或附加上下文,可以引导模型产生更好的响应
-
Input Data 输入数据 : 我们有兴趣为其找到响应的输入或问题
-
Output Indicator 输出指示符 : 指示输出的类型或格式。
并非所有组件都需要在提示中,并且格式取决于手头的任务。

提示的通用设计技巧(General Tips for Designing Prompts)
以下是设计提示时一些技巧:
从简单处开始(Start Simple)
设计提示语是一个迭代的过程,需要进行大量的实验来获得最佳结果。使用像 chatGPT 试验环境(a simple playground )是一个很好的起点。
您可以从简单的提示开始,随着您的目标越来越明确,逐渐添加更多的元素和上下文。在此过程中,版本控制非常重要。接下来将看到许多例子,其中明确性、简洁性通常会给您带来更好的结果。
当您有一个涉及许多不同子任务的大任务时,您可以尝试将任务拆分为更简单的子任务,并随着结果的改善不断构建。避免在提示设计开始阶段添加过多的复杂性。
指令(The Instruction)
您可以使用指令为各种简单任务设计有效的提示,以指示模型要实现的目标,例如“编写”、“分类”、“汇总”、“翻译”、“排序”等。
注意,您还需要进行大量实验,因此请看看哪种效果最好。使用不同的关键字、上下文和数据尝试不同的指令,看看哪种指令最适合您的特定用例和任务。通常,上下文与您尝试执行的任务越具体和相关越好。我们将在即将发布的指南中介绍采样和添加更多上下文的重要性。
prompt:
将王新义年龄的值加一:
[{"name":"wangxinyi","age":30},{"name":"lufeiyang","age":28}] >
output:
请

最低0.47元/天 解锁文章
2523

被折叠的 条评论
为什么被折叠?



