什么是提示工程?
提示工程(Prompt Engineering)是“设计、优化输入给大语言模型的提示词,使其生成准确、有用且符合预期的输出”的技术与方法集合。它不改变模型本身,只通过调整“问法”来引导 AI 的表现。
定义看起来非常简单,但是该如何理解呢?
- 首先,它是一系列的技术和方法,既然是技术和方法,自然是可以通过学习来获得的;
- 其次,它的目的是使大模型生成的内容更加准确、更加符合预期,换句话说,就是为了让我们能够更好的使用大模型,驯服大模型。
- 最后,它不改变大模型本身,因此不用担心把大模型问“坏了”,更不会涉及复杂的模型训练,如果持续提问仍然得不到想要的结果,那么新开一个对话框,继续提问!
模型配置
大多数 LLM 都带有各种配置选项,用于控制其输出。有效的提示工程会针对不同的任务来优化和选择这些参数。我们介绍几个最常用的选项:
- 模型(Model),尽可能的选择更先进的模型来完成工作。
- Temperature(温度),用来控制输出内容的随机性的。数值越低,回答的越准确;数值越高,回答的越随即。
- Top-K和Top-P,也叫做核采样(nucleus sampling),跟温度类似,也是用来控制生成内容的多样性和随机性的。通常和温度参数二选一。
- Max Length(最大长度),直接限制回答的长度,这个参数是强制截断,它本身不会让LLM输出更简洁的内容。如果需要更简洁的内容,可以在prompt里面加上具体指令,例如“请用一句话概括”。
需要注意的是,这些参数不是孤立存在的,在实际的使用过程中,我们经常要把它们放在一起,反复验证直到获得满意的内容。
Google给出了几个不错的实践:
- 温度 0.2、Top-P 为 0.95、Top-K 为 30 将给出相对连贯的结果,可以具有创造性但不过度;
- 温度 0.9、Top-P 为0.99 和Top-K 为 40 开始,可以得到更有创造性的结果;
- 温度 0.1、Top-P 0.9 和 Top-K 20开始,可以得到更准确的结果。
需要注意,自由度越高(温度、Top-K/Top-P 和Max Length高),LLM 可能生成相关性较低的文
本
提示词的要素
提示词由一些关键要素组成:
- 指令:想要模型执行的特定任务或指令。
- 上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。
- 输入数据:用户输入的内容或问题。
- 输出指示:指定输出的类型或格式。
提示词技巧
- 使用最新最先进的模型,这一点在现阶段非常重要!
- 从简单开始,不断迭代,在指令里逐渐添加上下文、示例样本、输出风格等,直到得到满意的结果
- 将指令放在开头,并使用分割符与上下文、示例样本等分开
- 指令要明确,要告诉LLM做什么,而不是不做什么
- 可以通过添加示例样本来说明输出的风格