跳转至

附录 C:质量控制与复现清单(Prompt 版)

如果你把“优化 Prompt”理解为“改几个词然后看这一次输出挺顺眼”,那你不是在做工程,你是在玩老虎机。没有门禁与回归,任何改动都可能把系统从“偶尔能用”推到“稳定出错”。

这份清单的目标是把 Prompt 的质量控制变成可执行流程:先验收、再改动、跑回归、过门禁、能回滚。序章先读:00-prologue.md

0) 先骂后改:Prompt 质量控制最常见的假动作

  • 把“写得更像人”当目标:更像人不等于更可用,越像人越爱插话。改法:先锁输出协议,再谈措辞。
  • 把“多试几次”当回归:多试几次只能让你更熟悉运气。改法:把失败样本入库,改动前后同口径跑一遍再裁决。
  • 把“模型版本升级”当优化:升级只是换了一个随机数发生器,旧问题可能换皮继续。改法:先固化判定规则与回滚策略,再考虑换模型。
  • 把图片当装饰:插图有文字、水印、风格漂移,结果读者学不到、你也维护不了。改法:无文字底图 + 风格底座 + 留白叠字。

1) 发布门禁(Release Gate)

在把任何 Prompt 当作“可复用交付物”之前,必须通过以下检查。做不到就别上线。

文本 Prompt 门禁

  • [ ] 载体明确:输出是 Markdown/JSON/表格之一;禁止“随便写写”。
  • [ ] 协议固定:模板/Schema/列名固定;字段名与顺序不可变。
  • [ ] 纯净度:明确禁止寒暄语、解释性前言、无关总结;禁止 Markdown 代码块包裹 JSON。
  • [ ] 未知出口:材料不足时允许拒答并输出缺口字段清单;禁止编造补全。
  • [ ] 失败判定:命中即失败的规则可检测(解析失败/缺字段/禁用短语/证据缺失)。
  • [ ] 回滚/降级:失败后动作写清楚(重试一次/降级简版/返回固定错误结构/切回旧版本)。

图片 Prompt 门禁(无文字底图)

  • [ ] 禁止文字:negative prompt 必含 text/letters/numbers/watermark/signature;正文也明确 no text。
  • [ ] 风格底座:全书统一 style_base;每张图只改主体变量(见 B-image-prompts.md)。
  • [ ] 留白充足:预留叠字区域;禁止背景纹理过密导致文字不可读。
  • [ ] 一致性回归:固定锚点主体做对比(服务器/盾牌/云);改风格先跑锚点验证(见 06-feedback.md)。

2) 回归集结构(建议)

Prompt 不做回归,只会出现两种结局:要么你不敢改,要么你改一次坏一次。回归集建议参考 06-feedback.md 的目录树,并补齐“验收真值”。

最小结构(示例):

prompts/
├── production/
│   └── prompt_x.v1.txt
└── regression/
    ├── case_chatty_json/
    │   ├── input.txt
    │   ├── prompt_base.txt
    │   ├── prompt_candidate.txt
    │   └── expected_rules.md
    ├── case_missing_fields/
    │   ├── input.txt
    │   ├── prompt_base.txt
    │   ├── prompt_candidate.txt
    │   └── expected_rules.md
    ├── run_batch.sh
    └── check_results.py

验收真值不要追求“完美答案”,要追求“可判定门禁”。你需要的是可预测失败,而不是漂亮文案。

3) 文本 Prompt 的三道门(建议顺序)

门一:格式门(Format)

  • JSON:必须可解析;字段必须齐全;禁止新增字段。
  • 表格:列名固定;行顺序可解释;空值统一写 N/A。
  • Markdown:标题层级固定;清单每条一行;禁止长段散文。

门二:纯净度门(Purity)

  • 禁用短语门禁:把“好的,这是”“希望对你有帮助”等写进断言。
  • 包裹门禁:禁止 Markdown 代码块包裹 JSON;禁止在 JSON 前后加解释文本。

门三:事实门(Fact)

  • 未知出口:材料不足必须拒答 + 缺口字段清单。
  • 证据绑定:关键结论必须能定位到来源标识(证据矩阵与冲突并列见 02-facts.md)。

4) 图片 Prompt 的三道门(建议顺序)

门一:无文字门(No Text)

  • negative prompt 必须包含 text/letters/numbers/watermark/signature。
  • image_prompt 必须明确 no text;关键文字后期叠加。

门二:风格一致门(Style)

  • style_base 与 negative_prompt_base 统一继承,禁止每张图临时换风格词(如 photorealistic/3d render)。
  • 构图统一:同系列尽量统一视角与留白策略。

门三:可维护门(Maintainability)

  • 叠字区域固定:留白区稳定,避免每次换标题就改构图。
  • 资产命名与归档:按章节与主题归档,避免散落一地。

5) 最小命令集(可复现闭环)

单次试跑(工具无关)

把 Prompt 文件化后,单次试跑的最小方式是:把 Prompt 与输入拼成一个 query 再执行。

LLM_CMD="<LLM_CLI>"
PROMPT_FILE="prompts/production/prompt_x.v1.txt"
INPUT_FILE="prompts/regression/case_chatty_json/input.txt"

mkdir -p out
{ cat "$PROMPT_FILE"; printf '\n\n输入:\n'; cat "$INPUT_FILE"; } | $LLM_CMD > out/result.out

文档构建门禁(MkDocs)

python3 -m mkdocs build --strict

本仓库也提供一键门禁脚本:bash skills/check_docs.sh

引用检查(避免误触 citation 规则)

python3 tools/check_citations.py

这三条命令跑不通,你就别谈“可复现”。跑通了再谈“优化”。