# smolagents 最终答案检查：没有证据字段就退回 Agent，停止把草稿当完成

已用真实smolagents CodeAgent的最终答案校验器直接验证作者输出，空证据触发AgentError、有效证据通过；未运行Agent循环、工具补证据或真实模型。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 给材料固定可回读坐标

两份文档分别标manual-A第3行和manual-B第8行；最终证据必须引用真实id和line，而不只是写“依据资料”。

## 2. 先拒绝没有证据的回答

audit.py检查author_valid_answer与negative.json。负例虽然有answer文本，但evidence为空，应该失败；作者检查函数不验证所有自然语言事实。

## 3. 实现final_answer_checks函数

当前smolagents 1.26.0会以(final_answer,memory,agent=self)调用检查函数，回调要接受agent或额外关键字参数，并返回真值。包内直接实测真实校验器，不能照抄漏agent参数的旧示例。

## 4. 挂到CodeAgent完成检查

创建CodeAgent时传入final_answer_checks列表，并在隔离材料目录运行。检查函数属于本地执行门槛，不意味着模型天然会给正确引用。

## 5. 保留被拒绝的第一次草稿

记录第一次final_answer及检查异常。运行器应让Agent继续补证据；只有实际触发回调才可说完成门槛生效。

## 6. 核对补充工具读取过程

Agent补证据后应有真实读取manual-B的工具事件，再返回新的answer/evidence。不能把作者真值文件偷偷注入成第二轮模型结果。

## 7. 同时验收引用和完成状态

最终引用需能回读，失败日志不能被丢弃。包内实测的是作者证据合同，尚未运行Agent循环或模型；真实回调执行另需目标环境。

## 官方依据

- smolagents 官方文档或源码：https://huggingface.co/docs/smolagents/reference/agents
