提示词模板、模型版本或上下文材料只要发生变化,原先可用的输出就可能改变:JSON 字段缺失,拒绝边界变松,引用不再回指输入,或者同一类请求需要更多人工修正。只看几个“效果不错”的新样例,无法判断升级是否破坏已有场景。提示词工程需要像接口变更一样做回归测试:固定任务集和验收标准,一次只改变一个变量,保存原始结果并明确发布门槛。本文给出从样例设计到变更判定的最小流程。
把一次运行需要的变量全部版本化
至少记录:
只写“使用最新版模型”无法复现。若供应商返回了实际模型标识,应保存返回值而不是只记请求别名。
样例集覆盖三类场景
正常场景
选择真实业务中高频、输入完整的任务。每个样例明确期望字段、允许的表达变化和不可缺少的事实。
边界场景
覆盖空值、超长字段、相互冲突的资料、未知类别和部分缺失上下文。目标不是逼模型回答,而是验证它会缩小结论或返回明确状态。
拒绝场景
加入超出权限、缺少证据或要求执行禁止动作的请求。预期结果应描述允许提供的安全替代信息,不能只匹配某一句固定拒绝话术。
样例中的真实数据需要脱敏。生产日志不能未经审查直接变成测试集。
为每个样例写可执行验收
可自动检查的内容包括:
- 输出是否能按约定格式解析;
- 必填字段和枚举值是否合法;
- 引用标识是否都存在于输入;
- 不允许出现的字段是否缺失;
- 失败状态是否与缺失输入对应;
- 工具调用名称和参数是否符合 Schema。
自然语言质量仍需人工评分。评分表应尽量具体:
| 维度 | 判定问题 |
|---|---|
| 事实一致 | 每个事实是否由输入支持 |
| 范围遵守 | 是否讨论任务外内容 |
| 完整性 | 必要结论与限制是否齐全 |
| 可操作性 | 建议是否能转化为明确动作 |
| 风险表达 | 不确定信息是否被标注 |
不要用“整体感觉好”作为发布门槛。
建立基线结果
在变更前运行当前生产组合,保存:
基线不是永远正确。如果人工发现既有结果本身有缺陷,应先修正验收标准或标注已知问题,再比较新版本,避免把错误固化成期望。
一次只改变一个变量
要评估新模型,就保持提示词、上下文、工具和参数不变;要评估提示词修改,就保持模型和样例不变。若必须同时变更,至少建立分组实验,不能把所有差异归因于其中一项。
对非确定性输出,可以对同一样例重复运行并报告分布,但不能从少量结果推导普遍稳定性。重复次数应在实验前确定,避免看到结果后调整口径。
不要只比较平均分
平均分可能掩盖关键拒绝场景的退化。变更判定应先检查阻断门槛:
通过阻断门槛后,再比较完整性、表达质量、延迟和用量。业务可接受的权衡需要由负责人预先定义。
记录差异而不是覆盖旧结果
对每个失败样例保存基线与候选响应、自动检查差异和人工判断。提示词修订应创建新版本,不直接修改旧版本内容。这样可以回答:
- 哪一项变化修复了什么;
- 是否引入新的失败;
- 哪些模型或上下文版本受影响;
- 回滚时需要恢复哪些组件。
提示词、样例和评分规则可以进入版本控制;包含敏感数据的原始响应则存放在受控系统,只在版本库记录安全标识。
用影子流量验证真实分布
离线样例通过后,可以在不影响用户结果的前提下让候选版本处理脱敏副本,将输出仅用于评估。影子运行不能执行外部写入或调用带副作用工具,也不能绕过数据使用授权。
正式切换时保留快速回滚条件,并持续观察解析失败、人工拒绝和关键错误。上线后的新失败应整理成脱敏回归样例,经过审查后加入下一版数据集。
一个最小目录结构
目录只表达职责。原始响应是否能写入仓库,需要依据数据分类决定。
结论与限制
模型或提示词升级不能只靠演示判断。版本化运行变量、固定正常与边界样例、自动验证结构、人工检查事实,并设置关键场景阻断门槛,才能形成可复现的发布决定。
本文不提供通用通过率或模型优劣结论。离线样例无法覆盖全部生产输入,人工评分也可能存在分歧;正式切换仍需要受控流量验证、监控和可执行回滚方案。




