内容流水线防灌水:选题池、字数校验与查重硬规则
先看一段被拦下来的输出
上周流水线里有个任务,模型返回了 1200 字,标题叫《云原生时代的可观测性思考》。看起来挺像样,但正文里没有一条命令、没有一个报错文案、没有一个具体的产品名。人工复核花了 3 分钟,结论是:删。这类输出每天会稳定产生十几条,靠人一条条看,成本比手写还高。
所以问题不是“怎么让模型写得更好”,而是怎么让不合格的输出根本进不了人工队列。下面是我在实际流水线里落下来的四道闸。
闸一:选题池绑定到真实工程问题
泛泛的选题是灌水的源头。“容器化最佳实践”这种题目,模型能给你写出十篇不重样的废话。改成从一个具体问题出发:“Pod 一直 ImagePullBackOff,且私有镜像仓库返回 401 Unauthorized 时怎么排查”,输出质量立刻不一样。
我的做法是选题池不手工维护,直接从真实信号里抽:
- 工单/群聊里被反复问到的问题,按出现频次排序
- 线上告警的 TopN,比如某接口 P99 突然翻倍
- 代码仓库里被 revert 的提交,以及 commit message 里带
fix:的紧急修复 - 自己踩过并且留下了报错截图的坑
每条选题必须带三个字段才能入池:problem(一句话说清现象)、evidence(报错原文或指标截图路径)、owner(谁验证过)。缺一个就不允许进入生成队列。这一条最土,但砍掉的灌水最多——没有 evidence 的选题,本来就是想象出来的。
闸二:结构校验挡住空转输出
光靠提示词约束没用,得在生成后做机器校验。我写了一个校验函数,跑在生成和人工复核之间:
- 字数:正文汉字数不少于 800,不多于 1500,超出直接打回
- 结构:至少 3 个
<h2>,每个二级标题下至少 2 段 - 代码含量:至少包含 2 个
<code>片段或 1 个可执行命令块 - 黑名单词:出现“赋能”“抓手”“闭环”“生态”“在当今”等词计入扣分,命中 3 次直接打回
- 段落重复率:任意两段的最长公共子串占比超过 60% 视为复读
实现上不复杂,用 Python 的 re 统计标签数量,用 difflib.SequenceMatcher 算段落相似度就够了。关键是把标准写成代码而不是口头要求,这样阈值可以调、可以回放、可以统计每天的拦截率。我现在这条闸的拦截率稳定在 35% 左右,意味着三分之一的输出在进人工之前就被淘汰了。
另外一个细节:字数校验要分开统计汉字和代码。如果代码块占了 600 字,正文只有 200 字,那是拿代码凑篇幅,一样要打回。
闸三:生成后必须做真实性检查
结构合格的输出仍然可能是编的。最常见的是虚构接口名和参数名——模型会给你一个看起来完全合理的 API,实际上不存在。这一关必须是规则加人,不能只靠模型自检。
规则侧的三个检查我可以直接抄给你思路:
- 命令白名单:从输出里抽出所有命令,比对本地预置的命令字典。不在字典里的命令标记为待验证。
- 标识符反查:抽出形如驼峰或带下划线的 API 名,去官方文档索引文件里 grep。搜不到的一律标记。
- 数字溯源:正文里的性能数字(延迟、QPS、压缩比)必须能在素材里找到出处,找不到就是编的。
人这一侧只做一件事:确认所有被标记的项。因为标记项通常只有 2 到 5 个,复核时间从十几分钟降到两分钟以内。真实性的判断标准我定得很死——凡是写不清楚来源的技术细节,一律删掉,不允许“大概是这个意思”。
闸四:查重,别把同一份内容投第二遍
自动化最大的诱惑是复用。同一篇内容换个标题发到第二个渠道,短期看产量翻倍,长期看是自毁。平台侧的重复内容识别不只看全文哈希,标题和段落结构变了也能识别出来,被判定重复内容后账号权重下降的代价远大于多发几篇的收益。
所以流水线里要有一个发布前的查重环节:
- 把已发布内容的正文去掉标点和空白后取 SHA256,入库
- 新内容生成后先算哈希比对,命中直接拒绝
- 再用段落级相似度兜底,任意段落与历史库相似度超过 80% 就要求重写该段
这里有个容易忽略的点:同一批生成里也可能互相重复。模型在同一个 prompt 下生成的多个候选,经常共享同一套例子。所以查重库要在批内也生效,不能只跟历史比。
宁缺毋滥怎么变成硬规则
“宁缺毋滥”如果只是态度,排期一紧第一个被牺牲的就是它。我的做法是把它写成几条不可绕过的判断:
- 单日发布上限设死,比如 2 篇。当天的候选不够格就发 1 篇,甚至 0 篇,不用低质量的补位。
- 人工复核的驳回率超过 50% 时,暂停当天流水线,回头修选题池而不是硬跑。
- 任何一条输出,如果连“现象、证据、验证过的结论”三样都凑不齐,直接归档不发布。
- 发布记录里保留每篇的选题 ID 和 evidence 路径,事后能回溯它到底来自哪个真实问题。
这几条规则的价值在于,它们把质量决策从“今天有没有空认真看”变成了“流程允许不允许通过”。跑了两个月,产量比最初乱跑时降了四成,但被平台判定重复、被人指出错误的次数降到了零。对我这种一个人维护流水线的人来说,后者才是真正省时间的部分。
- 点赞
- 收藏
- 关注作者
评论(0)