同一句需求交给 OJO 两次,出稿风格差别明显,多数情况下不是平台在“随机发挥”,而是输入里有太多没被固定的变量:风格描述用的是“高级”“好看”这类无法执行的词,参考素材一次贴一次没贴,附加说明每次随手补两句,输出结构从没约定过。模型只能在这些留白处自行补全,补全依据又每次不同,结果自然飘。处理方向不是反复重生成碰运气,而是先把两次输入并排对齐,找出唯一变化的字段,再用固定前缀的提示词骨架把这些字段锁死,最后用三次复跑确认漂移是否收敛。边界要说清楚:模型输出本身带有一定不确定性,锁定输入只能让可比性变强,不能保证两次逐字一致;如果平台侧存在模型版本切换或参数默认值调整,需要结合调用日志和页面行为确认。
同一句需求两次出稿风格差很多,先怀疑输入而非平台:把需求句、风格描述、参考素材、附加说明逐行并排,标出唯一变化的字段,通常就能定位漂移来源。接着用“角色、目标、受众、硬约束、风格锚点、输出结构”六段固定前缀压住随机补全,把“高级”“好看”换成可观察的配色、留白、字体、图形语言。最后同一输入复跑三次,记录一致处与仍漂移处,每一轮只改一个字段。这套做法适合内容生产中的稳定出稿,不保证逐字复现,涉及模型版本或默认参数的变动仍需查日志确认。
把两次输入并排贴出来对齐差异
先判断差异来自输入还是来自生成。做法很笨但有效:把两次实际发送的完整输入复制到同一张表里,逐行比对,而不是凭记忆回忆“我好像没改什么”。比对粒度要细到标点和换行,因为附加说明里多一句“语气再轻松点”,就足以改变整篇稿子的调性。
| 字段 | 第一次输入 | 第二次输入 | 是否变化 |
|---|---|---|---|
| 需求句 | 写一篇面向新用户的产品介绍 | 写一篇面向新用户的产品介绍 | 否 |
| 风格描述 | 风格高级一点 | 风格高级一点,别太营销 | 是(唯一变化) |
| 参考素材 | 未附 | 未附 | 否 |
| 附加说明 | 无 | 无 | 否 |
| 输出结构 | 未约定 | 未约定 | 否 |
表格填完后,只允许存在一个“是”。如果出现多个变化字段,先把它们拆成多次对照实验,一次只留一个变量,否则后面复跑时无法归因。若整张表所有字段都标“否”而结果仍明显不同,再把怀疑方向转到平台侧,比如调用时间不同、模型版本不同、温度类参数默认值不同,这些需要结合接口返回字段或页面上的模型标识去确认,不要直接下结论说“平台不稳定”。
写一份固定前缀的提示词骨架
结构化的前缀作用是把每次都要重复说明的约束前置并固定,减少模型在自由文本里自行推断的空间。下面这份六段骨架是通用示例结构,不是任何平台的官方接口规范,字段名和顺序可以按你的场景调整,但建议保持六段齐全,缺一段就等于留一个漂移入口。
【角色】你是长期做 B 端产品文案的编辑,习惯先给结论再给依据。
【目标】产出一篇面向首次接触产品的新用户的介绍稿。
【受众】没有行业背景、关心“这东西能帮我干什么”的读者。
【硬约束】不使用夸张形容词;不出现价格承诺;全文不出现感叹号。
【风格锚点】主色偏冷灰蓝,段落留白偏松,标题用无衬线,图形以线条为主。
【输出结构】1 一句话定位(40-60 字) 2 使用场景(120-180 字) 3 边界说明(80-120 字)
每段的作用不同:角色限定表达习惯,目标限定内容范围,受众限定用词深度,硬约束是负面清单,风格锚点把感受类要求换成可观察特征,输出结构把篇幅和顺序固定。使用方式是把这段骨架放在需求句之前,作为固定前缀原样复用;需要变化的内容只写在需求句里。验证方式是看两次输出是否在同一维度上可比,如果出现一次分三段、一次写成一整段的情况,说明输出结构段没被稳定遵守,需要把段落顺序写得更具体。
给风格锚点找一个可复述的描述
“好看”“高级”“有质感”这类词无法执行,因为模型只能猜你想指哪一种。可行的做法是把形容词替换成能复述、能对照的观察特征,分成配色倾向、留白密度、字体气质、图形语言四类去写。下面给出替换示例,左侧是原描述,右侧是替换后可以稳定复用的锚点写法。
- 配色倾向:“高级色”改成“以冷灰、米白为主,点缀色只用一种低饱和蓝”。
- 留白密度:“排版舒服”改成“每段不超过四行,段间距明显大于行间距,页面上下留出大块空白”。
- 字体气质:“字体好看”改成“标题用无衬线粗体,正文用常规字重,不用装饰性字体”。
- 图形语言:“配图高级”改成“以线条插画和几何色块为主,不用照片,不用渐变光效”。
写完后做一次自检:把这段描述单独交给一个没看过需求的人,问他能否照着描述指出哪些做法符合、哪些不符合。如果对方只能回答“差不多”,说明描述还不够可观察,需要继续往具体特征收敛。风格锚点建议放在固定前缀里长期复用,不要每轮重写,重写就等于重新引入变量。
把输出结构也固定下来
结构不固定时,两次结果没法在同一维度上比:一次写成三段小标题,一次写成连续五段,即使语言风格接近,看上去也像两份不同的稿子。固定结构的做法是明确段落顺序和每段字数范围,例如“第一段一句话定位 40-60 字,第二段使用场景 120-180 字,第三段边界说明 80-120 字,段间不插入其他内容”。字数范围给区间而不是精确值,避免模型为了凑数写废话。
结构固定之后比对成本会明显下降:你可以直接按段落对齐两份输出,看第一段是否都在讲定位、第二段是否都在讲场景,把差异定位到具体段落而不是笼统地说“整体感觉不一样”。验证方式也很直接,把两次输出按段落切分,逐段核对是否符合约定顺序与字数区间,不合规的段落数就是你下一步要压的变量。
复跑三次验证锁定是否生效
固定前缀和输出结构就位后,用同一份输入连续复跑三次,记录可观察结果。每次只改一个字段,不要一次改三处,否则又回到无法归因的状态。记录表建议用下面这几个字段。
| 轮次 | 变更项 | 风格一致处 | 仍漂移处 | 下一步改哪一项 |
|---|---|---|---|---|
| 第 1 轮 | 基线,仅使用刚补全的固定前缀 | 段落顺序一致;配色描述被遵守 | 第三段字数超出区间;出现少量夸张词 | 把硬约束中的负面词清单写具体 |
| 第 2 轮 | 补充硬约束的具体禁用词 | 禁用词未再出现;段落顺序一致 | 第三段仍偏长 | 把第三段字数区间收窄并给出示例句 |
| 第 3 轮 | 收窄第三段区间 | 段落顺序、字数区间、配色描述均一致 | 标题措辞略有差异 | 把标题写法追加到风格锚点 |
判定“已锁定”的标准建议这样定:同一份输入连续三次复跑,输出结构(段落顺序与字数区间)全部符合约定,硬约束中的负面清单零命中,风格锚点里可观察的四类特征(配色、留白、字体、图形语言)至少三类在三次输出中表述一致,剩余差异仅集中在措辞层面而不影响整体观感。达到这个状态可以认为输入侧变量已被压住;若三次复跑后仍有整段结构不一致的情况,说明前缀里对应的那一段约束还不够具体,需要回到骨架里继续收紧,而不是继续增加重生成次数。另外要注意,这套判定只针对你自己这套输入与这套输出标准,换场景或换模型版本时需要重新跑一轮记录表。