套模板经常出这种事:把主体词全换了一遍,输出还是不对,回头一看是模板里同一个位置有两种写法的占位符,替换只命中了其中一半;或者占位符和正文文字粘在一起,替换完读起来是断的。这篇只聊一件事——替代词怎么写、替换按什么顺序走、出问题从哪查起。
套模板经常出这种事:把主体词全换了一遍,输出还是不对,回头一看是模板里同一个位置有两种写法的占位符,替换只命中了其中一半;或者占位符和正文文字粘在一起,替换完读起来是断的。这篇只聊一件事——替代词怎么写、替换按什么顺序走、出问题从哪查起。
下面这套写法不绑定某个工具,你用文本编辑器、脚本还是某个平台自带的模板功能都适用。区别只在于有些平台会自动帮你处理大小写和空格,有些不会;不确定的话,就按「它不会」来写,兼容性更好。
替代词长什么样:先定一套写法
替代词的常见形态就三类:花括号包变量、方括号包变量、整段自然语言指令式。同一套模板里只用一种,混用是替换失败的头号原因,因为很多替换逻辑只认自己那种括号,另一种会被当成正文原样留着。
- 花括号变量
- 像 {subject} 这种,最常见,脚本处理起来最省事
- 方括号变量
- 像 [subject] 这种,和英文写作里的编辑标记容易混,中文模板里较少用
- 自然语言指令式
- 模板开头写一句「把下面的 X 换成你要的主体」,让人来改,不适合批量替换
- 变量名用小写英文加下划线,别用中文括号、别用全角符号,别在变量名里放空格。
- 相邻文字要留边界:变量紧贴中文时,替换后可能出现「你要的主体风格」这种粘连读法,写法上用空格或标点隔开。
- 同一变量名在整份模板里保持完全一致,大小写、全半角都要统一。
- 括号成对检查一遍,特别是一段里套了多个变量的地方。
命名与默认值:让模板换个人也能用
变量名的好坏,直接决定这份模板能不能交给别人。写「作用 + 位置」比写缩写强,因为读的人不用问你就知道该填什么。比如 subject(主体)、scene(场景)、tone(语气),而不是 a、b、v1。
| 写法 | 读起来怎样 | 什么时候不适用 |
|---|---|---|
| subject | 一眼知道填主体 | 只有一个主体变量时够用 |
| subject_detail | 明确是主体的细化描述 | 和 subject 同时存在必须定替换顺序 |
| x | 得回去翻说明 | 只在自己临时用的小模板里凑合 |
| v1 / v2 | 不知道差异在哪 | 做对照实验时可以用来标记版本 |
能给默认值就给:变量没填时用默认值兜底,比让模型收到一个空占位符强。空占位符经常被模型当成「随便发挥」,输出会飘。默认值写在变量旁边,用等号或注释标出来,别只放在你脑子里。
- 把「必填」和「选填」在模板里标出来,交付给同事时不用再口头交代一遍。
- 默认值尽量写成完整可用的短语,不要写成「无」「待定」这种占位性质的词。
- 如果某个变量大多数场景都用不上,考虑删掉它,而不是给它留一个空默认值。
替换顺序与冲突:先长后短,先精确后模糊
多个替代词有包含关系时,顺序错了就会出问题。典型是 subject 和 subject_detail:如果先替换短的 subject,长变量名会被切掉一截,剩下半截留在正文里,看起来像乱码。
- 排一遍变量长度把所有变量名按从长到短列出来,先替换最长的,再替换短的。
- 统一格式再动手大小写和全半角先统一,中文模板里混进英文变量最容易在这一步翻车。
- 替换完通读一遍占位符没了不等于句子通了,替换后语义是否连得上要人眼过一遍。
- 拿一个反例验证故意把两个有包含关系的变量填成不同内容,看替换结果是不是两条都进去了。
判断标准很简单:替换后全文搜一遍变量名本身,一个都搜不到才算干净。如果还能搜到半截变量名,说明顺序或者写法有问题,回去改模板而不是改内容。
替换出问题的排查顺序
排查看的是顺序,不是灵感。从最容易验证的地方开始,一步步缩小范围,别一上来就怀疑模型。
| 排查顺序 | 查什么 | 典型现象 |
|---|---|---|
| 第一步 | 搜残留变量名起始符号 | 正文里还有没替换到的占位符 |
| 第二步 | 查同一变量是否出现两次 | 只替换了一处,另一处写法不同 |
| 第三步 | 看替换后上下文是否连贯 | 占位符都替换成功但读起来断 |
| 第四步 | 检查模板指令部分 | 替换全对但输出跑偏 |
- 先搜残留:用变量名的起始符号(比如左花括号)全文搜一遍,看有没有没替换到的漏网变量。
- 再查重复:同一变量名在模板里出现两次但只替换了一次,多半是其中一处的写法不一样。
- 最后看上下文:输出不对但占位符都替换成功了,问题通常不在替代词,而在模板本身的指令部分写得含糊。
- 改完模板存个版本,别在原文件上反复覆盖,下次出错好回溯。
如果走到第四步才发现问题,那这篇讲的替代词写法就不是你的瓶颈了,该去看模板指令本身怎么写。判断依据是:占位符替换结果完全符合预期,但输出仍然偏,这时候改替代词没有意义。
顺带说一句,不同模型对同一个模板的响应差别不小,同一条模板换模型可能就得调。想对照的话,到 /models 看当时的模型资料,别凭印象换。
下一步把上面这套写法拿去改你手头最常用的那份模板;改完想看看别人踩过的坑和现成工具,到 /tools 逛一圈,也可以去 /guides 找模板相关的拆解。→常见问题
替代词用中文名还是英文名好?
看你自己,但要全篇统一。英文名输入方便、不容易和正文中文粘连;中文名可读性好。真正出问题的不是选哪种,而是同一套模板里两种混着写,替换脚本只认其中一种。
变量没填内容时会发生什么?
取决于你怎么写。多数情况下会留一个空占位符或原始变量名,模型照收,输出容易跑偏。稳妥做法是给每个变量配默认值,或者在替换前做一次必填校验,缺了就提示而不是硬发。
为什么替换完读起来还是别扭?
多半是边界没留。变量前后紧贴中文时,替换后的词和相邻字会粘成一个奇怪的词。写法上给变量两边加空格、逗号或换行,替换完再通读一遍,这一步不能省。