介绍推理模型提示最佳实践,共8条。
如何有效给推理模型下指令
这些模型最适合简洁、直接的提示。一些提示技巧(比如让模型“逐步思考”)不一定能提升性能,有时反而会降低效果。以下是一些提示技巧的最佳实践。
1. 开发者消息(developer messages)替代系统消息(system messages)
从 `o1-2024-12-17` 版本开始,推理模型支持使用“开发者消息”来取代“系统消息”,以实模型规范中介绍的指令层级控制。
2. 保持提示简洁和明确**
这些模型擅长理解简要且清晰的指令;提示不用写得过长或复杂。
3. 避免“逐步思考”的提示
因为这些模型会在内部自主推理,不必显式告诉它们“请一步步解释你的推理过程”,这样做有时还会降低它们的表现。
4. 使用分隔符以确保结构清晰
例如使用 Markdown、XML 标签、章节标题等,让模型知道不同部分的信息和用途,这能帮助模型更准确地理解提示。
5. 先尝试零样本提示(zero-shot),再考虑少样本提示(few-shot)
在很多情况下,你完全可以不给示例,直接告诉模型你的需求就行了。如果事情比较复杂,需要更精准的输出,可以加入少量示例(few-shot)。但要注意确保示例与指令相符,否则会引发混乱。
6. 明确约束条件
如果你对结果有特别的要求(比如“请在 500 美元以内给出一个方案”),一定要在提示里写清楚。
7. 阐述清楚你的最终目标
在提示中尽量详细说明你想要的成功标准,并鼓励模型持续推敲,直到满足这些成功指标。
8. Markdown 格式
从 `o1-2024-12-17` 版本开始,推理模型的 API 默认不会输出带 Markdown 格式的内容。若你希望模型在回复中使用 Markdown,可在开发者消息(developer message)的第一行包含字符串 `Formatting re-enabled`,这样模型就知道你需要它以 Markdown 格式输出。
这些模型最适合简洁、直接的提示。一些提示技巧(比如让模型“逐步思考”)不一定能提升性能,有时反而会降低效果。以下是一些提示技巧的最佳实践。
1. 开发者消息(developer messages)替代系统消息(system messages)
从 `o1-2024-12-17` 版本开始,推理模型支持使用“开发者消息”来取代“系统消息”,以实模型规范中介绍的指令层级控制。
2. 保持提示简洁和明确**
这些模型擅长理解简要且清晰的指令;提示不用写得过长或复杂。
3. 避免“逐步思考”的提示
因为这些模型会在内部自主推理,不必显式告诉它们“请一步步解释你的推理过程”,这样做有时还会降低它们的表现。
4. 使用分隔符以确保结构清晰
例如使用 Markdown、XML 标签、章节标题等,让模型知道不同部分的信息和用途,这能帮助模型更准确地理解提示。
5. 先尝试零样本提示(zero-shot),再考虑少样本提示(few-shot)
在很多情况下,你完全可以不给示例,直接告诉模型你的需求就行了。如果事情比较复杂,需要更精准的输出,可以加入少量示例(few-shot)。但要注意确保示例与指令相符,否则会引发混乱。
6. 明确约束条件
如果你对结果有特别的要求(比如“请在 500 美元以内给出一个方案”),一定要在提示里写清楚。
7. 阐述清楚你的最终目标
在提示中尽量详细说明你想要的成功标准,并鼓励模型持续推敲,直到满足这些成功指标。
8. Markdown 格式
从 `o1-2024-12-17` 版本开始,推理模型的 API 默认不会输出带 Markdown 格式的内容。若你希望模型在回复中使用 Markdown,可在开发者消息(developer message)的第一行包含字符串 `Formatting re-enabled`,这样模型就知道你需要它以 Markdown 格式输出。