写出清晰的指令
1. 把话说详细:尽量多的提供任何重要的详细信息和上下文。
2. 让模型充当某个角色:把大模型想象成一个演员,告诉他饰演的角色。
3. 使用分隔符指示输入的不同部分
三引号、XML 标签、节标题等分隔符可以帮助划分要区别对待的文本节。可以帮助大模型更好的理解文本内容。
4. 指定完成任务所需的步骤
将任务拆解为一系列步骤,明确地写出这些步骤,让模型更容易去实现它们。
5. 提供示例:few-shot
6. 指定内容输出长度
可以要求模型生成给定目标长度的输出。目标输出长度可以根据单词、句子、段落、要点等的计数来指定。但是不是精确的答案。
提供参考文本
1. 让模型使用参考信息作答
2. 让模型通过引用参考文本来回答
可以要求模型通过引用所提供文档中的段落来为其答案添加引用。可以提高正确性,增加可验证性。
将复杂的任务拆分为简单的子任务
1. 使用意图分类来识别与用户查询最相关的指令
2. 对于对话中的历史记录,总结或过滤之前的对话
3. 分段总结长文档并递归构建完整总结
给模型时间“思考”
链式思考(CoT),Chain-of-Thought Prompting,think step by step。
1. 让模型在给出结论之前找出自己的解决方案
2. 使用内心独白来隐藏模型的推理过程
3. 询问模型在之前的过程中是否遗漏了什么内容
使用外部工具
1. 使用基于嵌入的搜索实现高效的知识检索
2. 使用代码执行来进行更准确的计算或调用外部API
3. 给模型提供特定的功能
系统地测试变更
主要是帮助开发者判断更改Prompt(例如新指令或新设计)是否使系统变得更好或更差。
https://platform.openai.com/docs/guides/prompt-engineering/strategy-test-changes-systematically