学习参考网站:
需要给 AI 下发命令, 让 AI 去完成, 只有剔除了具体的要求, AI 才知道如何去完成。
好的 Prompt 需要不断调优 - 好的提示词是一次次优化出来的:
- 说清楚自己要什么, 要具体!
- 不要让机器猜测太多。 为了不让机器去猜测, 我们需要给出细节。
- 提示工程存在技巧, 灵活掌握, 事半功倍。
- 指示(Instruction): 描述要让他做什么?
- 上下文(Context): 给出与任务相关的背景
- 例子(Examples): 给出一些例子, 例子可以提供有效信息
- 输入(Input): 任务的输入信息
- 输出(Output Formate): 输出的格式, 想要什么形式的输出?
示例提示词中,要求答案简短准确,要求不确定答案的时候请回答不确定答案。
将上面的 prompt 进行拆分, 按照 prompt 的构成进行拆分并使用 ### 进行分割, 有利于进行变化并且对最终结果是有帮助的。
可以要求输出格式, 例如:
大模型的默认行为和预期的行为可能存在差异,因此需要使用 Few-Shot 进行指引。 例如, 原始大模型输出如下:
使用 Few-Shot 引导如下:
可以看到, 输出后模型从原来的大写改为了小写。
如果与大模型本身的行为区别越大, 那就需要更多的例子, 例如, 将单词 neutral 改为 neut, 可能需要举多个样例。 但是要注意大模型本身的上下文长度。
总结: 当模型输出的标准与自己的预期输出存在差异, 单纯 prompt 无法解决的时候可以使用 Few-Shot 来指引。
关于如何区分几个 learning:
- One Shot learning - 给一个例子
- Few Shot learning - 给少数几个例子
- Zero Shot learning - 完全不给例子
Q: 一个问题要提供多少个例子? 如果很多个例子都不 work 该怎么办? A: 一般5-10个例子, 需要注意上下文长度。 十个例子都不太行就考虑 fine-tune。
Few-Shot-Learning 的局限性:
- 大模型本身存在局限的地方: 推理、数学解答等
- 仅仅给出例子和答案, 但是没有中间的推理关系, 对大模型是没有帮助的
- 可以给出推理的过程, 对大模型有帮助, 可能产生帮助
Few-Shot 进阶: 思维链, Self-consitency
首先需要构造 instruction:
尽管上面可以构造短视频脚本, 但是存在身份不够清晰、输入输出格式不够清晰等问题, 并且很可能不会根据用户的输入来产生输出, 会直接产出随机的脚本。因此需要增加更多的身份信息, 同时提出更加细致的要求:
基础版instruction:
与案例3.1 相同, 可以随机的产生一定的输出。而小红书文章会喜欢使用很多小表情来点缀文字, 所以再添加更多身份信息时候也要把特点加进去。示例:
For prompt engineering, one should 对于快速工程,应该
- Write clear instructions 写清楚的说明
- Split complex tasks into simpler subtasks 将复杂的任务拆分为更简单的子任务
- Give GPT-3.5/GPT-4 time to “think” 给 GPT-3.5/GPT-4 时间“思考”
- Test changes systematically 系统地测试更改
After going through the above steps, they can be extended to 完成上述步骤后,可以扩展到
- Providing Reference Text 提供参考文本
- Using external Tools 使用外部工具
Prompt engineering is good for 提示工程适用于
- Testing and learning early 尽早测试和学习
- When paired with evaluation it provides the baseline 当与评估配对时,它提供了基线
Not good for 不适合
- Introducing new information 介绍新信息
- Reliability replicating a complex style or method (for ex, a new programming language) 复制复杂样式或方法(例如,一种新的编程语言)的可靠性
- Minimizing token usage 最小化令牌使用