Fork me on GitHub

提示工程最佳实践

提示工程最佳实践

翻译自:https://mphr.notion.site/Prompt-Engineering-Best-Practices-0839585d4bce4c6abb0b551b2107a92a

改善LLM输出的提示技巧。

目录:

Tip#1:清晰且具体的指令

Tip#2:给模型思考的时间

Tip#3:多次提示

Tip#4:引导模型

Tip#5:分解任务或提示

Tip#6:使用外部工具

 

Tip#1清晰且具体的指令 (Clear and Specific Instructions)
1.提供详细背景:为问题提供详细的上下文,减少歧义,从而降低无关或错误输出的可能性。
2.使用分隔符:通过使用如章节标题、三重引号、三重反引号、三重破折号、尖括号等分隔符来清晰地指示输入的不同部分。
3.指定所需的输出格式或输出长度:例如,让模型扮演特定角色,或指定输出的长度。

例子:
假定你是一个有创意的作家

大致用两句话回答

给我一个这篇文本的摘要。以下是我喜欢的摘要的例子_______”

提供例子:

1) 第一个例子:给出一个提示和相应输出/响应的例子。

2) 第二个例子:给出提示和输出的第二个例子。

3) 你的提示:给出你的实际提示。现在,您的模型可以遵循前两个示例所建立的模式。


Tip#2给模型思考的时间 (Give the Model Time to Think)

当模型立即做出反应时,它们会犯更多的推理错误。
1.链式推理:通过要求模型逐步思考,可以减少推理错误 (例如可以添加「Think step by step」的提示)这促使模型逐步地、更周到地进行思考。

例子:

例如,如果你要求模型给一个学生的解决方案打分,你可以提示模型:

第一步:找出你自己解决问题的方法。

第二步:将你的解决方案与学生的解决方案进行比较。

第三步:在评估学生的解决方案之前完成自己的解决方案的计算。

Tip#3多次提示 (Prompt Multiple Times)

要求模型多次回答一个问题并确定最佳答案。当最重要的是准确性(而不是延迟或成本)时,使用不同的提示生成多个响应。
1.调整参数:通过改变温度 (Temperature) 、示例数量 (Shots) 和提示的直接性 (Prompt) 来生成多个响应,并确定最佳答案。
温度(Temperature)调节LLM反应的随机性或创造性。温度越高,反应就越多样,越有创意。较低的温度会产生更保守、更可预测的反应。

示例数量(Shots)指提示中给出的例子的数量。Zero-shot是指不提供例子,one-shot是指提供一个例子。

直接性(Prompt)或多或少地直接,要求解释,进行比较等。


Tip#4引导模型 (Guide the Model)
1.处理长文档:如果文档过长,模型可能会提前停止读取。可以引导模型分段地处理长文档,并递归地构造完整的摘要。
2.帮助模型自我纠正:如果模型开始回答错误,模型很难自我纠正。引导模型自我纠正。例子:我收到了你关于量子物理的解释,你确定你的答案吗?你能从量子力学的基础开始审查并给出一个正确的解释吗?
3.避免引导性问题模型急于取悦,所以引导但留下提示开放式。(确保问题开放性,不要引导模型给出特定答案。)

例子:
不当提问:电子游戏会导致暴力吗?

恰当提问:我希望对电子游戏和行为之间关系的研究结果有一个公正的概述。


Tip#5分解任务或提示 (Break Down the Task or Prompt)
1.将复杂任务分解为简单任务把复杂的任务分解成多个简单的任务。这很有帮助,因为复杂的任务比简单的任务有更高的错误率。(通过分解任务,语言模型可以一次专注于一个方面,减少复杂任务中常发生的误差,还可以解决成本)

您可以使用意图分类来识别最相关的指令,然后组合响应以创建一个内聚的输出。


例子:

查询:

我要去巴黎三天,我需要知道该带什么东西,去哪里吃饭最好,还有怎么使用公共交通工具。

分解:

意图1去巴黎旅行该带些什么。

意图2推荐巴黎最好的吃饭地点。

意图3巴黎公共交通使用指南。

LLM回答:

人工智能将分别处理每个意图,为旅行带些什么、用餐和通勤提供量身定制的建议,然后将这些建议整合成一个全面的响应。

或者,如果子任务是连接的:

步骤1:将任务分解为查询。

步骤2:将第一个查询的输出提供给下一个查询。

 

上面的例子是用户需要巴黎旅行的建议,可以将任务分解为单独的意图 (如打包建议、餐饮推荐和公共交通指导),然后 LLM 可以针对每个意图分别提供定制的建议。

Tip#6使用外部工具 (Use External Tools)

根据经验,如果一个任务可以通过工具而不是语言模型更可靠或更有效地完成,那么将语言模型与外部工具的专业功能结合起来,从而提高整体的工作效率和准确性。


下面是一些工具例子
1. Calculator (计算器)LLM不擅长数学的计算,使用计算器可以显著提高模型在数学问题上的表现。
2, RAG (信息检索):通过连接LLM到一个智能的信息检索系统,可以更有效地增强检索能力。
3. Code Execution (代码执行) 使用代码执行或调用外部api来执行和测试由模型创建的代码。

4. External Functions (外部函数) :为 LLM 定义外部函数,如send_email()get_current_weather()get_customers(),这些函数可以在用户的端执行,并将结果返回给模型。

posted @ 2024-01-11 18:43  石头木  阅读(15)  评论(0编辑  收藏  举报