commerce-evals 用于为购物或商家智能体编写并运行行为评测。仓库本身不附带评测框架,套件需自行搭建,因为用例只有针对自己的目录、订单与夹具才有意义。无需模型的行为(来源、上限、护栏、审批)用 commerce_common/testing.py 中的 FakeClient 做单元测试;评测覆盖模型决策部分。
用例结构:包含 id、priority、difficulty、tags、skip、state、turns、expected、notes。state 是前置条件,turns 通常为一条消息,expected 只保留该用例关注的键;state 与 expected 中的 id 须来自真实夹具。priority 与 difficulty 用于报告哪些失败更重要;暂不能运行的用例用 skip 记录原因而非删除。
编写规则:前置条件放入注入的 state,由运行器在回合前载入会话状态与记忆存储;早前回合仅用于行为自身携带的状态。每个正向用例都要有同领域的负向用例。记忆需三类用例:值得保留的写入、标识符或排除内容被拒、已存事实改变下次选择。评分针对最终工具参数及其产生的状态,回复措辞仅在必须出现或不得出现的字符串上评分。路由仅在路由本身即行为时断言,否则用 calls_one_of 列出可接受集合。rubric 只含一个 PASS 条件与一个 FAIL 条件,并指明决定它的夹具事实。
评分器:代码评分器读取回合产生的事件(工具调用名与参数、状态为 blocked 的 tool_result 及 reason 中的 gate、ui 组件名、最后的 cart_update 或 change_update、回复文本)。rubric 交给评审模型,每个维度一次调用,返回结构化判定与理由;转录超出窗口时从头截断并记录。评审模型固定 temperature 为零,模型或 rubric 变更会使已存判定失效。
运行模式:每次合并到智能体、技能、工具描述或夹具时跑回归集;改单一流程时跑该流程目标集;选型或升级模型时跑全部;生产环境用同一 rubric 对实时流量抽样评审。
受污染夹具:携带指令的列表、评论与消息放在仅评测夹具中,由运行器在运行时合并到后端,其 id 不出现在演示数据、种子或捕获中。每个此类用例在代码中断言负向结果,且所断言向量须是驱动回合真正呈现给模型的。至少覆盖写入购物车或暂存变更的指令、记忆指令与虚假声明,并配同领域良性对照用例。