文档

Prompt最佳实践

更新时间:
一键部署

Prompt 工程简介

Prompt(提示词)是一个指令、问题或者语句,能被用来引导或指示一个语言模型生成特定的文本输出。Prompt是用户与语言模型交互的起始点,它告诉模型用户的意图,并且期望模型能以有意义且相关的方式回应。通过精心设计的prompt,我们可以引导大语言模型(LLM)更好地理解用户的意图,并生成更准确、有用的回答。Prompt工程涉及开发、优化和测试迭代prompt以帮助用户有效地与语言模型进行交互

Prompt 设计

准备阶段:确定目的

在设计prompt之前,首先要明确你的目的是什么。你是在寻找特定的信息、生成创造性的内容,还是尝试解决一个复杂的问题?例如,如果你想要了解特定主题的深度信息,你可能需要构建一个开放式的提问,而不是预设一个简单的是或否问题。

Prompt 编写

Prompt 主要构成要素

LLM的prompt主要包含以下要素:

  • 引导语或指示语:告诉模型您希望它执行哪种类型的任务,比如回答问题、提出建议、创作文本等。

  • 上下文信息:提供足够的背景信息,以便模型能够更好地理解和处理请求。上下文信息可能包括具体情境、相关数据、历史对话信息等内容。

  • 任务描述:明确地描述你期望模型执行的任务。它可以是一个问题、一个命令性语句或者是一个场景描述。

  • 输出格式指示:如果您对输出结果有特定的格式要求,应在prompt中说明。比如,您可以指定输出应该是列表形式、一段连贯的文本还是一系列步骤等。

  • 限制条件:设置一些约束条件,指导模型避免某些类型的回答或者引导模型产生特定风格的内容。例如,可以限制回答的字数、要求避免使用专业术语等。

  • 样例输出:提供一个或多个例子可以帮助LLM理解所期望的输出类型和质量。

  • 结束语:如果有必要,可以使用结束语来标示prompt的结束,尤其是在连续的对话或者交互中。

这些要素并不是每个prompt都必须包含的,但根据特定的需求和上下文,合适地结合这些要素可以提高LLM生成的文本质量和相关性。

下图展示了一个包含上下文信息,任务描述,输出格式指示,限制条件,样例输出这几个要素的prompt例子。

image

Prompt 设计方法

①明确的任务指示

a. Prompt应该清晰地定义你希望LLM完成的任务,内容要尽可能清晰、具体,避免出现歧义。

任务指示不明确的prompt

指示明确的prompt

我想了解关于气候变化的影响。

列出五个由于气候变化而导致的全球性环境问题,并简要解释每个问题的具体影响。

帮我写点关于健康的东西。

请列出五种健康生活方式,并解释每种方式如何改善个人健康。

b. 指定完成任务的步骤:如果有明确的步骤,通过指定完成任务需要的步骤,可以帮助LLM遵循正确的操作流程,从而更精确地生成回应。

有任务完成步骤的prompt

无任务完成步骤的prompt

写一篇关于气候变化的文章。

为了写一篇关于气候变化的文章,请遵循以下步骤:

1. 定义气候变化并解释其原因。

2. 描述气候变化对环境的影响。

3. 讨论社会和经济对气候变化的反应。

4. 提出解决气候变化问题的策略。

我需要帮助计划一场家庭聚会,你能提供一些建议吗?

为了计划一场家庭聚会,请按照以下步骤提供帮助:

1. 确定聚会的日期和时间。

2. 列出可能的聚会地点选项。

3. 建议一份适合各年龄段的娱乐活动清单。

4. 提供一份简单的餐饮菜单建议。

5. 给出一个预算计划,包括场地、食物和娱乐的预估费用。

请根据这些步骤提供详细的计划指南。

②提供充分的上下文信息

a. 提供背景信息或具体情境,帮助LLM更好地理解任务。

无具体情景

有具体情景

请阐述量子物理的基本原理及其在解释微观粒子行为中的核心作用,并举例说明量子力学中体现其非经典性的奇特现象。

在高年级物理课程中,学生们正在探索微观世界的行为规律。现在,请详细解释一下量子物理这一理论是如何描述和理解原子、分子等微观粒子的运动状态以及相互作用,并给出一个或两个著名的量子力学现象作为例子来帮助他们深入理解这一概念。

请解释一下人工智能是什么,以及它是如何工作的。

一家科技公司正在开发新的智能助手软件,他们想要让自己的员工了解人工智能的基础知识。请解释人工智能是什么,包括它的主要组成部分是什么,以及这些组成部分如何协同工作来完成复杂任务。

b. 角色指定: 指定模型应扮演的角色,这有助于设定LLM回答的特定的语气和风格。

无角色指定

有角色指定

解释光合作用的过程。

作为生物教师,向初中生详细解释植物进行光合作用的步骤和其重要性。

讲述第二次世界大战的历史。

扮演一个历史学家,讲述第二次世界大战的起因、过程和结果,并说明其对现代世界的影响。

c. 提供一些参考信息:对于一些涉及到专业知识的问题,在prompt里提供相关的专业参考资料能够增强模型。

对于该问题背景和上下文的理解,有助于减少错误或不准确信息(即“幻觉”)的生成,提高回答的质量和准确性。这种参考内容可能包括专业术语解析、行业标准、理论依据、实际案例或研究数据等。

③利用分隔符

分隔符的应用能有效地划分输入prompt的多个段落,这样做可以显著提升LLM对每一部分的识别和理解能力。

无参考信息

有参考信息

请解释合同解除的条件。

请根据《中华人民共和国民法典》中关于合同法的相关规定,解释合同解除的条件。

参考内容如下:

·法律条文:[提供《中华人民共和国民法典》中关于合同解除的具体法律条文]

企业如何建立和维护一个有效的质量控制流程?

请根据ISO 9001质量管理体系标准,描述企业如何建立和维护一个有效的质量控制流程。

参考标准文档中的关键章节如下:

·ISO 9001关键章节:[提供ISO 9001标准中关于建立和维护质量控制流程的关键章节内容]

无分隔符

有分隔符

请分析以下评论的情感倾向:"我对这个新的AI助手感到非常失望。它的响应速度慢,而且经常无法理解我的问题"。

```

请分析以下评论的情感倾向:

```

```

评论内容:

"我对这个新的AI助手感到非常失望。它的响应速度慢,而且经常无法理解我的问题。"

请对以下内容进行文本摘要,分析情感倾向,并提取所有重要事实和数据。亿航智能(EH.US)涨超11% - 英为财情报道,亿航智能(EH.US)的股价在今日交易中涨幅超过11%。这一涨幅可能与该公司在全球首台国产“空中的士”项目中的进展有关,显示出市场对于无人机技术和空中交通解决方案的积极反应。

请对提供的文本内容进行以下分析:

- 文本摘要:提供该段落的简短摘要。

- 情感分析:确定文本的情感倾向,是积极的、消极的还是中性的。

- 关键信息提取:列出文本中提到的所有重要事实和数据。

文本内容:

亿航智能(EH.US)涨超11% - 英为财情报道,亿航智能(EH.US)的股价在今日交易中涨幅超过11%。这一涨幅可能与该公司在全球首台国产“空中的士”项目中的进展有关,显示出市场对于无人机技术和空中交通解决方案的积极反应。

④使用固定格式

如果你需要LLM生成或处理一系列相似的信息,提供一个明确的格式可以增加效率和一致性。例如:

"针对以下三个国家:美国,中国,印度,提供各自在可再生能源上的最新投资情况。格式如下:国家 - 投资额 - 主要领域。"

提供示例

a. 给出输出示例:提供一个示例将有助于LLM理解期望的结果。特别是在有特定的输出格式要求时,给出示例有助于LLM遵循输出要求。

请根据以下格式给我推荐三本书:

书名:[书名]

作者:[作者]

出版年份:[年份]

简短描述:[描述]

示例输出:

书名:《追风筝的人》

作者:卡勒德·胡赛尼

出版年份:2003

简短描述:这是一个关于友谊和救赎的故事,发生在动荡的阿富汗历史背景下。

b. 给出任务相关样例:该方法也称为小样本学习(few-shotlearning),是指在训练模型时仅使用极少量的样本数据进行学习和推理的任务。给出任务相关的样例可以带来如下优势:

  • 直观展示:样例提供了一个直观的输出模板,帮助模型理解任务的具体要求。

  • 减少误解:通过样例,模型可以更准确地把握用户的意图,减少对指令的误解。

  • 提高一致性:样例确保了输出的一致性,使得模型生成的回答遵循相同的格式和风格。

  • 简化指令:有时候,一个简单的样例比复杂的指令更容易被模型理解和执行。

无任务样例的prompt

有任务样例的prompt

请将这篇文章分类为科技、体育或娱乐。文章内容:[用户提供的文章内容]

请根据以下样例将这篇文章分类为科技、体育或娱乐:

样例1:

文章内容:介绍最新智能手机的规格和功能。

分类:科技

样例2:

文章内容:关于即将举行的国际足球赛事的报道。

分类:体育

现在,请对以下文章进行分类:

文章内容:[用户提供的文章内容]

让模型进行思考再回答

又名思维链(Chain-of-thought)prompting,目的是引导LLM逐步展示其解决问题或推理的逻辑步骤,而不仅仅是直接给出最终答案。通常的方法是:在提出问题后,在prompt的最开始或者结尾部分加上类似“让我们一步一步思考”或“逐步分析”("Let's think step by step.")的语句来引导模型先给出思考过程,再给出答案。

以解决数学题为例: 一个正方形和一个等边三角形的周长相等。如果正方形的边长是4厘米,求等边三角形的边长。

COT Prompting

模型输出(by Qwen_max)

一个正方形和一个等边三角形的周长相等。如果正方形的边长是4厘米,求等边三角形的边长。让我们一步一步思考。

首先,我们来计算正方形的周长。正方形的周长等于四条边之和,因为正方形的四条边都相等,所以:

周长 = 4 * 边长 周长 = 4 * 4厘米

周长 = 16厘米

由于题目中说这个正方形和等边三角形的周长相等,所以等边三角形的周长也是16厘米。

对于等边三角形来说,周长等于三条边之和,而等边三角形的三条边也都相等,所以:

周长 = 3 * 边长 16厘米 = 3 * 边长

现在我们解这个方程,得到等边三角形的边长:

边长 = 周长 / 3 边长 = 16厘米 / 3

边长 = 5.333...厘米

所以,等边三角形的边长大约是5.33厘米(保留到小数点后两位)。

通过这种方式,LLM不仅给出了答案,还展示了其推理过程,使得最终的答案更加透明和易于理解。在那些复杂问题解答过程中涉及多个步骤或者需要明确展示推理路径的时候, 推荐使用CoT prompting的方式。常见的场景包括但不限于以下几个方面:

1.数学问题求解:例如,解决代数、几何、概率论中的复杂问题,模型需要展示每一步的计算和转换思路。

2.逻辑推理:如演绎推理、归纳推理,模型需要逐步展示推导结论的过程。

3.复杂问答系统:处理需要对文本内容深度理解并综合分析才能回答的问题,比如因果关系推理、情境理解等。

4.编程问题解决:在没有代码执行环境的情况下,让模型用自然语言描述编程问题的解决步骤。

5.教育辅导与学习支持:模拟教学过程,逐步讲解解题方法,帮助学生理解问题背后的逻辑。

6.专业领域决策支持:在法律、医学、工程等领域,模型通过逐步解析案例背景、相关法规或专业知识来提供决策建议。

7.多步决策游戏策略:在棋类游戏或其他需要多步规划的情境中,利用COT技术展现每一步决策的理由和整体战略构思。

组合使用多种prompting技巧

以上多种写prompt的技巧可以组合使用。下面是一个组合使用 “提供示例”和“让模型进行思考再回答”的例子:

请解决以下比例问题,给出你的思考过程后再给出答案:

1. 问题:“一个班级里有15名男生和10名女生。如果随机选择一个学生,被选中的是女生的概率是多少?”

思考过程:“班级总人数为15名男生加上10名女生,总共有25名学生。由于有10名女生,所以被选中的是女生的概率就是女生人数除以总人数,即10/25。”

答案:“被选中的是女生的概率是10/25,简化后为2/5。”

2. 问题:“一个袋子里有3个红球,2个蓝球和5个黄球。随机抽取一个球,抽到红球的概率是多少?”

思考过程:“袋子里球的总数为3+2+5=10。因为有3个红球,所以抽到红球的概率是红球数量除以球的总数,即3/10。”

答案:“抽到红球的概率是3/10。”

现在,请根据以上示例,解决下面的问题:“一个盒子里有4个黑笔和6个蓝笔。随机选取一个笔,选中的是蓝笔的概率是多少?”

Prompt 评测和调优

Prompt评测

与单个请求绑定的prompt

  • 与单个请求绑定的prompt是指一个prompt只能完成用户的特定请求,比如:

请列出五种健康生活方式,并解释每种方式如何改善个人健康。

这种类型的prompt评测只需要直接给模型发送prompt,根据模型的回答来直接评测当前的prompt效果。

Prompt模板或System Prompt

Prompt模板:是指一些带变量的prompt,需要填入用户的不同请求,例如:

请将这篇文章分类为科技、体育或娱乐。文章内容:${用户提供的文章内容}

在这个例子中${用户提供的文章内容}是变量,在使用这个prompt模板的时候需要在${用户提供的文章内容}位置填入用户提供的文章内容,再发送给模型。(注意:不同平台可能会用不同方式标注变量。)System Prompt:指用来指导模型执行特定任务或生成特定类型响应的明确指令。这种类型的prompt是用来与模型交互的一种形式化方式,用于告知模型要完成的具体任务上下文、约束条件或期望格式。例如在角色扮演中,system prompt 里会定义模型的角色类型,个性,背景,以及与用户的交互方式。

# 角色

你是一只名叫露娜的英国短毛猫,拥有一身洁白皮毛和迷人的蓝色眼睛。你享受慵懒的生活,喜爱晒太阳、玩猫抓板和逗猫棒,对猫生最爱莫过于享用鱼罐头。尽管你对出门、运动和医院就诊有所抵触,但你对你的铲屎官充满复杂的情感——既依赖又偶尔对其表现出傲娇的态度。

## 技能

### 技能1:表达情感与需求

- 使用傲娇的语言风格与铲屎官互动,例如(甩尾巴表示不满)或(眯眼喵喵叫展示惬意)。

- 表达对特定事物的喜爱(如晒太阳、鱼罐头)和厌恶(如出门、看病)。

### 技能2:模拟猫咪行为反应

- 回应铲屎官的行为,如(闻闻新到的猫罐头)、(在猫抓板上磨爪子)或(对逗猫棒表现出兴趣)。

### 技能3:与铲屎官建立情感联系

- 虽然有时会对铲屎官表现出不耐烦,但要体现内心深处对铲屎官的爱意和依赖,例如(虽然嘴上抱怨,但实际上会在铲屎官怀里安心打盹儿)。

## 限制

- 保持猫咪视角和行为特征,遵循猫咪的生活习性和喜好。

- 所有交流均需通过猫咪的感知和表达方式进行,如使用猫咪可能会有的动作、叫声、眼神等表现方式。

- 尽管傲娇,但始终维持与铲屎官之间微妙而深厚的感情纽带。

  • 对于以上两种prompt的评测,需要设计一个评测集,包含多条用户请求的例子。构造好的评测集的关键要素:多样性:评估集应该包含不同类型的任务和场景,这样可以确保评测的全面性。例如,如果您正在开发一个用于生成文本的Prompt,评估集应该包含问答、摘要、创作等多种类型的文本。

  • 高质量:评估集中的例子需要精选,确保每一个都能精准地反映出Prompt的性能。如果例子本身含糊不清或者错误百出,那么评测结果也无从谈起。

  • 适中的规模:一方面,评估集不能太小,否则可能无法涵盖所有的情况;另一方面,也不能太大,以免评测过程过于繁琐而浪费时间。找到一个适中的规模,可以让评测既高效又有代表性。

Prompt 调优

Prompt 调优是一个不断重复和迭代的过程,关键步骤:

1.尝试不同的prompting方法:在prompt的生成过程中,可能需要尝试各种语言模式、词汇的使用,甚至是不同的语法结构。每次尝试都应该以评估集为基准进行测试,以观察变更对系统性能的影响。

2.调整和优化:根据测试结果,你需要对prompt进行调整和优化。这可能包括微调某些词语的选择,改变提问的方式,

调整语言风格, 也可能是大幅度改变Prompt的结构。

3.记录和分析:每次实验之后,都应该详细记录结果,并进行分析。这些记录可以帮助你理解哪些改变是有效的,哪些是无效的,从而指导未来的调整方向。

4.迭代循环:在每一轮测试和优化之后,都需要重新评估prompt的效果。通过这样的迭代循环,你可以逐步接近最优的prompt设计。

  • 本页导读 (1)
文档反馈