Skip to content

失败归因与证据保真 ​

学习目标与因果链 ​

评估记录不能只保存最终答案。将失败拆成 retrieval、citation、tool、generation 四类,并保存每类所需证据,才能知道下一次改动应该作用在哪一层。 先运行确定性夹具,再替换为真实存储、远程服务或评估数据;夹具通过只说明控制流成立。

首次可运行实验 ​

python
def classify(case):
    if not case["retrieved"]: return "retrieval"
    if not case["cited"]: return "citation"
    if not case["tool_ok"]: return "tool"
    if not case["answer_ok"]: return "generation"
    return "pass"
cases = [
 {"retrieved":False,"cited":False,"tool_ok":True,"answer_ok":False},
 {"retrieved":True,"cited":False,"tool_ok":True,"answer_ok":False},
 {"retrieved":True,"cited":True,"tool_ok":False,"answer_ok":False},
]
assert [classify(c) for c in cases] == ["retrieval","citation","tool"]
print([classify(c) for c in cases])

观察输出中的状态、版本或失败原因。把失败当作一等结果记录,不能用“模型说完成”替代状态证据。

失败变体与边界 ​

答案应为每个样本补齐 query、候选文档、引用跨度、工具事件和最终输出;若缺任一证据,标记为不可归因,而不是猜测模型失败。

独立练习 ​

扩展实验,至少加入一次进程重启、重复事件或权限变化,并写出输入、预期状态、实际输出和未覆盖边界。答案见本章答案。

章节总结 ​

本章把一个容易被概念掩盖的生产边界变成可重复实验;下一章继续使用本章的状态和证据字段。

用心记录每一步成长