Prompt 结构:能提升效果的组织方式
好的 prompt 都有清晰可辨的结构:明确的任务、分开的上下文段落、示例,以及规定好的输出格式。
清楚直接
Anthropic prompt 文档里最重要的一条规则:精确说清楚你想要什么。检验方法:把你的 prompt 拿给一个完全不了解背景的同事看。如果他会看糊涂,模型也一样会。当顺序或完整性很重要时,用编号步骤会有帮助。
用 XML 标签分开各个段落
一旦一个 prompt 混合了多种内容(指令、上下文、示例、输入数据),Anthropic 建议使用 XML 标签:<instructions>、<context>、<example>。每种内容类型都有自己的标签——这样模型就能明确区分什么是指令、什么只是示例。关键是标签名要一致、有描述性。
赋予一个角色
哪怕只在 system prompt 里加一句话(“你是一名经验丰富的 Python 开发者”),也能明显聚焦模型的行为和语气。
展示示例(few-shot)
文档指出,示例是控制格式和风格最可靠的手段之一。建议给出 3 到 5 个示例,要和你真实的应用场景相关、彼此之间也要有足够差异,每个示例都放进 <example> 标签里。
规定输出格式
要说模型应该做什么——而不是不该做什么:“用连贯的正文回答”比“不要用 Markdown”效果更好。对于固定结构,一个格式示例或一个专门给答案用的标签会有帮助。
示例
<instructions> 把这段文字总结成 3 条要点。请用中文回答。 </instructions> <context> 目标读者:没有相关背景知识的新手。 </context> <text> [这里放文本] </text>
🛠️ 练习——自己动手试试
找一个你自己写的、没有结构的 prompt,把它重新组织成结构化版本。
- 找一个你最近用过、把指令、上下文和数据混在一起的 prompt。
- 用标签把它拆成几个段落:<instructions>、<context>,再加一个给输入数据用的标签。最后说明你想要的输出格式。
- 把两个版本都发给你的模型,比较回答在准确性和格式遵循度上的差异。
✅ 自查清单
- ☐ 你的 prompt 里能不能清楚看出指令在哪里结束、数据从哪里开始?
- ☐ 你有没有用正面表述来规定输出格式(“做 X”),而不是负面表述(“不要 Y”)?
- ☐ 一个完全不了解背景的同事第一次看到你的 prompt,能看懂吗?
小测验
Anthropic 为什么建议在 prompt 里使用像 <instructions> 和 <context> 这样的 XML 标签?
来源
- Anthropic 文档:Prompting Best Practices ↗ platform.claude.com
- Anthropic 文档:Prompt Engineering 概览 ↗ platform.claude.com