发出前要校验什么
回答发给用户之前应过一遍自动校验:引用编号是否越界、事实句是否有片段支撑、是否出现未授权内容(内部代号、密钥样式文本)、格式是否符合渠道要求。任一项不通过就走降级路径(返回简短版、加免责声明或转人工),而不是把有问题的回答直接发出去。高风险领域建议默认降级动作设为转人工。
基本信息
| 校验项 | 引用合法性、事实支撑、敏感内容、输出结构 |
|---|---|
| 失败处理 | 降级为简要回答或转人工,并记录原因 |
| 触发时机 | 生成完成与发送之间,属于同步链路 |
| 记录要求 | 校验结果落日志,便于统计各项拦截率 |
典型使用场景
- 引用合规:拦截指向不存在片段的引用编号
- 敏感信息:拦截疑似密钥、内网地址、内部代号等模式
- 结构校验:要求 JSON 时校验字段完整性,失败则重试或降级
- 事实抽检:对高风险问题抽样做忠实度检查
- 多渠道路由:不同渠道的输出格式要求不同,发送前分别校验
校验钩子
校验钩子
checks = [
citations_within_range, # 引用编号合法,无越界
no_secret_patterns, # 不含密钥样式文本与内部标识
matches_output_schema, # 结构合法,字段齐全
faithfulness_spot_check, # 抽样做忠实度检查
]
if not all(c(answer, chunks) for c in checks):
answer = degrade(answer) # 降级为简短版或转人工
# 每次拦截都记录原因,用于统计与规则迭代
校验项与失败动作
| 校验项 | 检查内容 | 失败后的动作 |
|---|---|---|
| 引用合法性 | 编号是否在给定片段范围内 | 去除引用并重新生成或降级 |
| 敏感内容 | 密钥样式、内部标识、内网地址 | 拦截并转人工复核 |
| 输出结构 | 字段是否齐全、类型是否正确 | 重试一次,仍失败则降级 |
| 事实支撑 | 抽样比对上下文 | 标注存疑或转人工 |
高风险领域(医疗、金融、法务)把校验失败的默认动作设为转人工,而不是继续生成或让模型自我修正。
规则要留可观测性:统计每个校验项每天的拦截次数与典型样例,规则过松或过严都能从这些数字里看出来。