LLM 提示工程(2)提示方法

376 阅读3分钟

prompt基本要素

提示词可以由以下要素组成

指令:想要模型执行的特定任务或指令。

上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

输入数据:用户输入的内容或问题。

输出指示:指定输出的类型或格式。

当然并不是所有的元素都是必须的。举个例子,以下的提示词

请将文本分为中性、否定或肯定 文本:我觉得食物还可以。 情绪:

image.png

在上面的例子中

  1. 将文本分类为中性、否定或肯定 是指令
  2. 我认为食物还可以 是输入数据
  3. 情绪 是输出指示。

当然,提示词所需的格式取决于你要完成的任务类型,并非所有的要素都是必须的。

prompt通用技巧

1. 从简单开始

通常来说,我们不应该一上来就设计复杂的提示词。 相反,prompt设计是一个迭代的过程,需要大量的实验来获得最佳的效果。

我们可以从简单的提示词开始,逐步添加上下文和元素,同时进行prompt版本管理,如果需要大模型完成的任务是一件多指令任务,那么我们可以拆分成多个子任务,确保每一步都是按照预想的结果输入,避免一开始就添加过多的复杂性。

2. 指令

可以使用指令来让大模型知道我们要执行哪种任务。如 分类,总结,翻译,排序 等等,同时在实际使用中,我们需要尝试使用不同的关键字、上下文和数据尝试不同的指令,看看哪种方法最适合您的特定用例和任务。 通常情况下,上下文与您要执行的任务越具体和相关,效果越好。 指令可以用###符号定义,同时放在最开头。如下

image.png

3. 明确的指令

通常来说,我们的指令越明确越细节,大模型的表现就更能像我们预料的一样表现。在提示工程中,明确的描述跟良好的格式都对效果有所帮助,同时,我们在prompt中提供示例也有助于效果的提升。 还有一点要注意,由于大模型有token限制,我们需要注意我们的prompt不宜过长,如果细节很多,那么我们就要考虑我们需要明确和细节的输出,而不是所有不大相关的细节都写进prompt中。

4. 避免不准确

上面的明确跟细节的建议,可能会让你在设计提示词时,陷入无止尽的细节描述中,这时候记住一点,避免不准确,直接的提示更加有效。举个例子

Explain the concept prompt engineering. Keep the explanation short, only a few sentences, and don't be too descriptive.

上面的提示词是个反例,don't be too desciptive,是个不准确的描述,到底多少算desciptive,我们不知道,大模型也不知道。准确的prompt应该是下面这样

Use 2-3 sentences to explain the concept of prompt engineering to a high school student.

用2-三句话,很明确的提示。

5. 提示让大模型做什么,而不是不让大模型做什么

提示词最好是聚焦于我们想让大模型做的东西,而不是不让大模型做的事。如推荐电影,我们可以这么说

以下是向客户推荐电影的代理程序。不要询问兴趣。不要询问个人信息。客户:请根据我的兴趣推荐电影。代理:

这里的提示词不让大模型询问兴趣跟个人爱好,这样并不是一个好的提示词,容易造成推荐电影本身造成失败。