把一段长提示发给通义千问或文心一言时,指令、资料、问题经常挤在一起,模型偶尔会把资料里的句子当成指令执行。分隔符就是解决这个问题的:用一组特殊记号,把「要执行的指令」和「要处理的材料」明确隔开。这篇讲清它的边界效应是怎么形成的。
没有边界时会发生什么
先看没有分隔符的后果。假如你写「把下面的内容总结成三句话:」,然后直接粘了一段含「请用英文回复」的网页文本,模型很可能照做。对它来说,指令和材料都是同一种输入序列,位置靠后、语气像命令的句子容易被当成新指令,这就是混淆的根源。材料越长、来源越杂,这种误读的概率越高。
另一种常见情形是多段材料挤在一起:三份文档、两条留言、一段代码全堆在提示里,模型分不清哪段对应哪个要求,总结时张冠李戴。人眼看得出段落,模型靠的是文本结构线索,线索不给足,它就自己猜。
边界是怎么被读出来的
加入分隔符后,情况变了。三个反引号、标签式记号、连续等号线这类符号,在训练语料里大量出现在引用块、代码块、文档结构的位置,模型对这些记号形成了稳定预期:记号内部是待处理的内容,记号外部才是对内容的要求。用记号把一段文本包住,等于给模型画了一个容器,容器里的文字会被默认当作数据看待。
这套机制分三步起作用:进来的提示先被记号切成区段;模型按区段分配注意力,指令区获得更高优先级;生成时以指令区为纲、以材料区为料,出去的答案就有了清晰的主从关系。边界越清晰,输出摇摆越小。
用前后对比看得更清楚。同一段资料,第一次直接粘在要求后面,模型把资料里一句「请分点列出」当成了新指令,输出凭空多了好几条与任务无关的内容;第二次把同一段资料包进容器,并在容器外写明「以下仅为待处理材料」,输出立刻只回答原来的问题。两次只差几行记号,效果却差了一大截,这就是边界效应最直观的体现。
常用分隔符怎么选
没有唯一答案,只有顺手与稳定的差别。三反引号适合包代码和长文;标签式写法适合多段材料各起一名,比如给资料、留言、附注分别起名;等号线适合人机共读的场景。原则有两条:一,记号别出现在材料本身里,否则边界会被冲破;二,一份提示里记号体系统一,别三段材料用三种写法。拿不准时,选一种用到底,比频繁换花样可靠得多。
三种记号各有适用面,选之前先对一眼。
| 记号 | 适合包什么 | 选它要注意 |
|---|---|---|
| 三反引号 | 代码和长文 | 记号别出现在材料本身里,否则边界会被冲破 |
| 标签式写法 | 多段材料各起一名,比如资料、留言、附注 | 一份提示里记号体系统一,别三段材料用三种写法 |
| 等号线 | 人机共读的场景 | 半角反引号与尖括号类记号在语料中出现频率更高,边界通常更稳 |
| 中文全角符号 | 可以用 | 边界效果通常不如半角记号 |
分隔符自查清单
- 指令区和材料区之间有明确记号吗?
- 材料内部有没有与分隔符相同的字符?
- 多段材料是否各自有名字?
- 关键指令是否紧挨着生成起点?
最后一条常被忽略:指令离问题越近,执行得越坚决。
分隔符还常和别的技巧搭档。给示例编号时,few-shot的示例也用统一记号包起来更稳;写角色设定时,用记号把设定区与任务区隔开,风格更干净。输出仍然不听话时,先排查指令冲突,再检查材料里是否混入了像指令的句子;想降低模型一本正经胡编的概率,可以配合不确定性声明一起用。
关于分隔符再多问三句
- 中文全角符号能当分隔符吗?:可以,但半角反引号与尖括号类记号在语料中出现频率更高,边界效果通常更稳。
- 分隔符太长会影响效果吗?:占用的词块会摊薄可用上下文,但几行记号的影响很小,不值得为此省略。真正要权衡的是材料本身是否值得全部放进同一次提示。
- 加了分隔符就不会混淆了吗?:它能大幅降低混淆概率,材料里刻意伪装成指令的内容仍可能被误读,重要场合要做输出检查。


