在写 Prompt 的过程中,我慢慢发现一个很常见的问题:
当 Prompt 稍微复杂一点时,信息很容易全部混在一起。
人类 vs 模型:理解差异有多大?
比如一个非常常见的写法:
帮我写一条咖啡文案, 适合小红书风格, 不要太官方, 字数80字以内。
人类阅读这种 Prompt 完全没有问题,但对模型来说,事情其实没那么简单。
| |
|---|
| 自动语义拆分 我们会自动理解: ✅ 这是任务 ✅ 这是风格要求 ✅ 这是字数限制 | 需要自行判断 模型需要猜测: ❓ 哪一句是任务? ❓ 哪一句是规则? ❓ 哪一句是背景? |
当 Prompt 再复杂一点,比如包含角色设定、产品信息、写作风格、输出格式时,所有信息混在一起,模型理解的难度就会明显增加。
结构化Prompt:把信息拆开写
于是很多 Prompt 工程师开始做一件事:把 Prompt 拆开写。
实测对比:普通Prompt vs 结构化Prompt
为了验证这种写法是否真的有区别,我做了一个简单的小实验。
| |
|---|
| 信息混在一起 帮我写一条咖啡文案, 要年轻一点, 不要太官方。 输出(偏传统广告): 冷萃咖啡全新上市,口感醇厚,带来不一样的咖啡体验。 | 信息分块清晰 任务:写咖啡文案 产品:冷萃咖啡 要求: 语气轻松 80字以内 输出(贴合社交平台): 早八人续命水来了 冷萃咖啡一冲就好 冰一点更清醒 |
为什么结构化 Prompt 有效?
其实逻辑很简单:结构化 Prompt 减少了模型理解任务的成本。
当信息被拆开后,任务更明确、规则更清晰、输入更容易识别,模型不需要再去猜测哪一句是重点。
结构化Prompt的三个核心优势
| | |
|---|
| 1️⃣ | 信息更清晰 | |
| 2️⃣ | 规则更容易被遵守 | |
| 3️⃣ | 复杂任务更稳定 | |
这种差异在简单任务中可能并不明显,但在写长文章、生成代码、数据分析、Agent任务等复杂场景中,结构化 Prompt 几乎是标配。
XML只是其中一种方式
需要注意的是:结构化 Prompt 不一定非要使用 XML。
很多时候,只要做到“信息分块”就够了,例如:
任务: 规则: 输入: 示例:
这种简单结构其实就已经足够清晰。XML只是因为层级更明显,所以在 Prompt 工程里比较常见。
不过在继续测试 Prompt 的过程中,我又发现了一件更有意思的事情。
即使规则写得非常清楚,模型有时候还是不会完全照做。
但如果给模型一个 示例,情况往往会完全不同。
很多时候:
一个示例,胜过十条规则。
下一篇我会记录这个实验,敬请期待!