OpenAI API 提示词工程最佳实践
OpenAI API 提示词工程最佳实践
如何向GPT-3和Codex提供清晰有效的指令
翻译自OpenAI官方文档,原文链接
提示词工程的工作原理
由于指令跟随模型的训练方式或训练数据的原因,存在一些特定的提示词格式,这些格式在任务中表现出色且更好地与任务相匹配。以下是一些我们发现可靠有效的提示词格式,但你也可以自由探索不同的格式,以找到最适合你任务的方式。
经验法则和示例
注意:{在此输入文本}是实际文本/上下文的占位符。
1. 使用最新模型
为了获得最佳结果,我们通常建议使用最新、功能最强大的模型。截至2022年11月,文本生成的最佳选择是“text-davinci-003”模型,代码生成的最佳选择是“code-davinci-002”模型。
2. 将指令放在提示词的开头,并使用###或”””来分隔指令和上下文
效果较差 ❌:
1 | |
更好 ✅:
1 | |
3. 在所需的上下文、结果、长度、格式、风格等方面要具体、描述详细
对于上下文、结果、长度、格式、风格等要具体说明
效果较差 ❌:
1 | |
更好 ✅:
1 | |
4. 通过示例来明确所需的输出格式(示例1,示例2)
效果较差 ❌:
1 | |
展示和说明 - 当显示特定的格式要求时,模型的响应更好。这也使得以可靠的方式程序化地解析多个输出更加容易。
更好 ✅:
1 | |
5. 首先尝试零样本提示(zero-shot),然后进行少样本提示(few-shot)(示例),如果两者都不起作用,再进行微调。
✅ 零样本提示
1 | |
✅ 少样本提示 - 提供一些示例
1 | |
✅ 微调 - 参见微调的最佳实践,请点击此处。
6.减少“琐碎”和不精确的描述
效果较差 ❌:
1 | |
更好 ✅:
1 | |
7.不要仅仅说不要做什么,而是说明应该做什么。
效果较差 ❌:
1 | |
更好 ✅:
1 | |
8.特定于代码生成 - 使用“引导词”(leading words)来引导模型朝特定模式的方向发展
效果较差 ❌:
1 | |
在下面的代码示例中,添加“import”提示可以让模型知道它应该以Python语言开始编写。(同样,“SELECT”是一个良好的提示,表示开始一个SQL语句。)
更好 ✅:
1 | |
参数
通常,我们发现模型(model)和温度(temperature)是最常用的用于修改模型输出的参数。
- model - 性能更高的模型更昂贵且延迟更高。
- temperature - 衡量模型输出较低可能性标记(token)的频率。temperature越高,输出越随机(通常更具创造力)。然而,这与“真实性”不同。对于大多数事实类用例,例如数据提取和真实问答,temperature为0最合适。
- max_tokens(最大标记长度)- 不控制输出的长度,而是限制生成的token数量。理想情况下,您不会经常达到此限制,因为模型会在它认为已完成时停止,或者当它遇到您定义的停止序列时停止。
- stop(停止序列)- 一组字符(标记),生成这些字符时,文本生成将停止。
有关其他参数说明,请参阅API参考。
OpenAI API 提示词工程最佳实践
https://blog.caozeal.cn/2023/06/22/OpenAI API 提示词工程最佳实践/