第 1.4.4 节:用调试样例和回归集控制 Prompt 风险
设计调试样例和回归集时,关键是提前写清何时停止、怎样降级、由谁接手。完成本节后,你应该能够列出调试样例和回归集的触发条件、兜底动作、日志字段和人工升级条件。
常见坑
只要求“返回 JSON(结构化数据格式)”
模型可能返回 Markdown(轻量标记语言)代码块、解释文字或字段缺失。必须配合 schema(结构定义)、校验和重试。
字段含义不清
例如 status 字段,如果没有枚举范围,模型可能返回 pending、wait、waiting、todo 等各种值。
把业务规则藏在自然语言里
高风险规则要写清楚。例如“投诉必须转人工”,不能只写“注意用户情绪”。
没有负样例
Prompt(提示词)测试不能只测正常输入。越是商业项目,越要测异常输入和边界情况。
输出直接驱动高风险动作
模型输出可以建议动作,但高风险动作应经过规则、权限或人工审批。
失败场景与兜底
| 失败场景 | 表现 | 兜底方式 | 验收标准 |
|---|---|---|---|
| 输出无法解析 | 模型返回解释文字、半截结构或字段混乱 | 重新请求一次,仍失败则转人工或返回安全提示 | 无效输出不会驱动工具调用。 |
| 字段缺失 | 没有 risk_level(风险等级)或 next_action(下一步动作) | 按契约校验失败处理,要求模型补全或降级 | 日志记录缺失字段。 |
| 枚举值漂移 | risk_level(风险等级)出现 urgent、serious 等未定义值 | 映射到 unknown 或触发重试 | 未定义值不能进入业务流程。 |
| 风险误判 | 投诉被判成普通咨询 | 高风险关键词和业务规则二次校验 | 投诉样例必须转人工。 |
| 回复越界 | 模型承诺退款或编造订单状态 | 规则拦截,替换为安全回复 | 高风险承诺不会展示给用户。 |
| 回归退化 | 改 Prompt 后旧样例变差 | Prompt 版本管理和回归测试 | 修改前后有对比记录。 |
工程检查清单
- Prompt 是否说明了任务和边界?
- 输出字段是否有明确类型?
- 是否有枚举值?
- 是否有 Pydantic(数据校验库)或 JSON Schema(结构定义格式)校验?
- 是否有解析失败处理?
- 是否有测试样例?
- 是否记录 Prompt 版本?
- 高风险动作是否需要人工审批?