# verl 自定义奖励：正确等价答案得分，格式投机与缺失最终答案不得误奖

已实际执行原创Fraction奖励函数及等价/多答案/缺标签/零分母反例；未运行verl训练、采样或真实模型。

## 运行

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

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

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

## 1. 定义可验证的最终答案协议

要求整段只含一个answer标签，数值按Fraction比较。2/4与1/2等价，不能因为字符串不同给错分。

## 2. 执行真实作者奖励函数

audit.py实际计算五例，只有eq得1，其余0。它是可运行奖励逻辑，不是模型训练或verl采样结果。

## 3. 审计格式投机反例

spoof同时出现0和1/2，missing无标签；简单contains会误奖。零分母也应返回0，不能异常中断整个批次。

## 4. 按verl签名包装compute_score

目标版本需要data_source、solution_str、ground_truth、extra_info等参数时显式适配；不丢弃来源字段或把缺失真值默认为正确。

## 5. 在训练前离线运行样本集

用同一函数跑JSONL并检查确定性、异常、耗时和边界。不要让奖励函数访问网络或对任意输出直接eval。

## 6. 在目标训练中保留原始completion

真实RL运行后保存response、ground_truth和reward，检查模型是否利用协议漏洞。固定五例通过不能证明奖励不可投机。

## 7. 交付函数、真值和负例

包内提供可直接调用的compute_score及独立断言，没有模型权重或verl训练回执。新增等价数值类型要先扩展测试再上线。

## 官方依据

- verl 官方文档或源码：https://verl.readthedocs.io/en/latest/preparation/reward_function.html
