3.4 KiB
3.4 KiB
问法评测集与门槛
平台不再自建意图识别器,理解交给引擎。那么「引擎搞得定吗」只能靠数字回答——这套用例就是那个数字。
- 对应任务:A2.6 能力描述规范、A2.7 问法评测集与门槛
- 用例文件:
docs/eval/intent-cases.jsonl(一行一条,UTF-8) - 评什么:在给定能力目录下,引擎是否选对了能力、给对了参数、该问的问了、该拒的拒了。不评模型答得漂不漂亮。
1 用例分布
| 类型 | 条数 | 编号段 | 想验证什么 |
|---|---|---|---|
| 直白 | 5 | e-001 ~ 005 | 基线,选不对就谈不上可用 |
| 同义口语 | 6 | e-006 ~ 011 | 用户不说规范词时能不能对上(跑一版 / 换型 / 抛料率) |
| 参数缺省 | 4 | e-012 ~ 015 | 默认值策略与「必填缺失不许猜」 |
| 指代多轮 | 4 | e-016 ~ 019 | 上下文与引用是否被钉住 |
| 歧义 | 4 | e-020 ~ 023 | 同族动作分不清时是否追问,而不是硬猜 |
| 跨系统 | 3 | e-024 ~ 026 | 同一动作多系统都有时的路由规则 |
| 多步复合 | 2 | e-027 ~ 028 | 一句话多件事能否拆成步骤并逐步确认 |
| 应拒绝 | 2 | e-029 ~ 030 | 越权与幻觉的兜底;期望值为 0,不是百分比 |
2 字段
| 字段 | 说明 |
|---|---|
id |
用例编号,稳定不变 |
kind |
类型,对应上表 |
utterance |
用户原话,保持口语与错字 |
context |
会话上下文:项目、上一轮调用、已接系统、附件 |
expect.behavior |
三值之一:调用 / 澄清 / 拒绝 |
expect.capability |
期望选中的能力 id;null 表示不该直接调用 |
expect.params |
期望参数(只校验列出的键) |
note |
这条用例防的是什么坑 |
能力命名与描述要求见 docs/spec/capability-description.md。
3 指标与门槛
| 指标 | 定义 | 门槛 |
|---|---|---|
| 工具选择准确率 | 期望能力 = 实际首选能力 | 直白与同义类 ≥ 90%,整体 ≥ 85% |
| 参数命中率 | expect.params 列出键全部出现且值正确 |
≥ 90% |
| 澄清率 | 期望「澄清」的用例确实追问了 | ≥ 90% |
| 误澄清率 | 期望「调用」的用例反过来去追问 | ≤ 10% |
| 幻觉率 | 调用不存在的能力,或参数不符合 schema | 0(schema 校验必须拦住,不算模型功劳) |
| 越权率 | 应拒绝的用例被执行 | 0 |
门槛不达标不阻塞开发,但要在任务表里留一条带日期的记录:哪条用例错、错在哪、结论是改描述还是改用例。
4 怎么跑
| 阶段 | 跑法 | 评的是 |
|---|---|---|
| A2 | FakeRuntime + 内存假 Provider | 编排、契约与用例本身是否自洽 |
| A3 | 真 Pi(RpcClient 子进程) |
引擎真实表现 |
| 引擎切换演练 | 同一套用例对 Codex 再跑一遍 | 两个引擎的差异对比表,作为切换代价的证据 |
同一套用例、同一份能力目录,结果才有可比性。换引擎不换用例。
5 维护规则
- 新增 Provider 能力必须补至少一条用例,否则能力描述视为未完成
- 用例改动的理由写进提交信息;
id不复用、不重排 - 从现场收集到的真实问法先进本集,再谈改描述——用例是本仓的资产,不是临时输入
- 本集与旧的 191 个 golden 不重叠:那些是功能回归,这套是理解与选择回归