一、Prompt的基本构成
一个标准的prompt由以下几个部分组成,即:
- 说明 Instructions
- 语境 Context
- 输入数据 Input data
- 输出指标 Output indicator
说明:
二、一些写好 prompt 的建议
1、openai
发布了写好prompt的六项策略:
1、写下清晰的指示
2、提供参考文字
3、将复杂的任务拆分为更简单的子任务
4、给模型时间“思考”
5、使用外部工具
6、系统地测试变更
来源:https://platform.openai.com/docs/guides/prompt-engineering/six-strategies-for-getting-better-results
2、微软
微软在微信公众号发表了9条玩转AI的prompt tips
1、提供细节 2、明确目标 3、要求风格
4、设置角色 5、寻求过程 6、指定参考
7、坚持迭代 8、保持礼节 9、询问建议
来源:微软科技,公众号:微软科技 想让你的AI更强?先给他一个角色带入!
3、吴恩达
吴恩达在prompt engineering课程中提到撰写prompt的两个关键原则:
1 - 给出清晰和明确的指令
(1)使用分隔符清晰地将Prompt输入的不同部分分开
(2)要求结构化的输出,如输出为json、html、xml等格式
(3)检查内容是否满足任务所需的条件,拒绝无效或非法的内容
(4)给出几个任务的示例(Few-shot)
2 - 给模型一些思考的时间
(1)告知模型完成任务所需的步骤
(2)指导模型在得出结论之前先自行解决问题
来源:https://zhuanlan.zhihu.com/p/626720581
4、小结
在以上3个官方教程中,都明确了上述prompt的基本结构。
openai在prompt教程的第一条就开宗明义表示要“写下清晰的指令”,而且交代了prompt的结构:给出上下文、扮演的角色、分割输入的每部分内容、提供示例、规定输出要求,以及告诉大模型完成任务需要的步骤。
微软在第二条“明确目标”中明确了prompt的基本结构:
我们的研究显示,一个成功的问题通常包含以下四个要素(如下图):
① 清晰地阐述你的目标:解释你希望 Copilot 完成什么任务
② 提供充足的背景和细节信息:为 Copilot 描绘出完整的任务场景
③ 明确任务参数:例如 Copilot 需要关注的特定日期、文件或电子邮件
④ 确定答案的交付方式:说明你希望 Copilot 以何种方式呈现它的回答
微软科技,公众号:微软科技想让你的AI更强?先给他一个角色带入!
从我的经验来看,只要严格遵守prompt的基本结构,能避开80%以上的问题。
还有一个细节需要重点考虑到,就是prompt各部分的分割符是如何写的?
Prompt通常包含一些指令和待处理的内容,可以用分隔符将指令和内容明确分开。这里的分隔符可以是三个引号("""
)、三个反引号(```)、三条短线(---
)、尖括号(<>
)或xml tag(<tab></tag>
)等。
https://zhuanlan.zhihu.com/p/626720581
三、写prompt有哪些坑?
一些新手常见的错误各式各样,但归结起来就是以下几条:
1、没有说明具体的输出目标。
2、在一次对话中混合多个主题。
3、让语言模型做数学题。比如我40岁,女儿4岁,什么时候她的年龄是我的一半。
4、没有给出想要什么的示例样本。
5、反向提示。也就是一些反面例子。
6、没有要求他减少输出。可以要求他减少、删除或重写。
7、要求他一次只做一件事。可以将步骤捆绑在一起,不要拆的太碎。比如我们上面这个例子,你可以把很多步骤一次说清。
8、不重复 Prompt 来获得更好的结果。尝试多调整试验几次以获得更好效果。
来源:https://yam.gift/2023/01/25/NLP/2023-01-25-ChatGPT-Prompt-Engineering/
2024-05-19(日)