Skip to content

指令的测试和调优

指令能否被 LLM 稳定识别,取决于测试是否覆盖了真实使用场景调优是否有据可依。本篇给出一套三阶验证 + 归因决策树的方法论,配合 批量测试 工具形成完整闭环。

1. 为什么需要专门做「指令测试与调优」

指令配置和一般的 Prompt 编写不同:

  • 例句稍有偏差 → LLM 直接识别到错误的操作行为;
  • 编码冲突(controlCode 与其它指令重名)→ LLM 会「乱蒙」;
  • 数据类型选错 → 参数解析失败,即使指令命中也无法执行;
  • 提示词与其它技能冲突 → 意图被别的技能截胡。

因此必须以「验证 → 归因 → 修改 → 回归」的螺旋方式推进,而非「配一次就上线」。

2. 三阶验证模型

第 1 阶:跑批测试 (Batch Test)
   目标: LLM 层识别准确率
   工具: 指令集详情页 → 批量测试
   通过标准: 整体准确率 ≥ 目标值(建议 ≥ 90%)

第 2 阶:端到端测试 (E2E)
   目标: 全链路是否走通(识别 → 下发 → 设备响应)
   工具: 智能体调试 + 真机
   通过标准: 关键 case 100% 走通

第 3 阶:边界验证 (Edge Case)
   目标: 极端场景是否稳健
   工具: 手工构造对抗集
   通过标准: 拒识 + 误识均在可接受阈值内

2.1 第 1 阶:跑批测试

批量测试页

  • 入口:指令集详情页 → 【批量测试】按钮;
  • 测试集来源:平台根据每个操作行为的例句自动泛化(默认 5 倍,可调)
  • 产出:整体准确率 + 明细列表(每条 query 的期望 vs 实际);
  • 通过阈值:建议 90% 以上;若整体 < 80%,说明配置有系统性问题,应先修配置再复测。

2.2 第 2 阶:端到端测试

跑批只验证 LLM 侧的识别,不代表设备真的动了。E2E 关注的是:

  • action 是否与设备协议一致(编码、参数格式);
  • 下发链路是否通畅(端侧 / IoT 平台);
  • 设备是否按预期执行(需真机或模拟器)。

推荐做法:每条控制项都选取 2~3 条典型 query 在应用调试中跑一遍,观察端上响应。

2.3 第 3 阶:边界验证

覆盖以下 4 类场景:

类型示例期望行为
拒识 case「今天天气怎么样」不触发任何指令,交给闲聊
模糊 query「调整一下」反问澄清 or 拒识,不擅自选择
多指令 query「打开空调调到 26 度」任务规划器开 → 拆解;关 → 择一
口语化 / 方言 / 语气词「灯儿再亮点儿呗」命中调高操作行为

3. 归因决策树

当发现某条 query 识别错误,按下列决策树逐层排查:

识别错误
├─ 命中了错的指令(跨指令误识)
│    ├─ 是否有 controlCode 重复? → 修编码
│    ├─ 是否例句在多条指令间重叠? → 拆例句
│    └─ 是否其它系统技能截胡? → 检查技能优先级

├─ 命中了正确指令但错的操作行为
│    ├─ 例句是否覆盖不足? → 补例句
│    ├─ 操作行为语义是否与例句错位? → 换 opName / 换例句
│    └─ 是否自定义操作行为名称与设备物模型不一致? → 对齐命名

├─ 命中正确指令 + 正确操作行为,但参数错
│    ├─ 数据类型选错(应 NUMERIC 却选 ENUM)? → 换类型
│    ├─ 单位 / 步长配置错? → 修参数
│    └─ 槽位提取提示词太模糊? → 补提示词 + 举例

└─ 完全拒识
     ├─ 该 query 是否本就应拒识? → 是,通过
     ├─ 例句是否覆盖该口语表达? → 补例句
     └─ 是否被上层意图路由拦截? → 检查 [多轮意图控制](../../02-技能库/01-系统技能/03-多轮意图控制.html)

4. 常见错误速查表

症状可能原因修法
相邻两条指令互相误识controlCode 太相似 / 例句重叠编码差异化 + 例句去重
「调高一点」不命中调高未勾选「调高」操作行为 or 例句只写了「调大」勾选行为 + 补例句
「调到 3 档」参数解析为 3 但设备用了别的枚举值ENUM 编码与设备协议不一致对齐 enumCode
「30 分钟后关机」不生效未开定时能力 or 定时执行指令未勾选电源开启 定时指令 相关卡片
指令识别对但设备没动action 命名与设备协议不一致与设备端对齐 <code>_<op>
拒识率过高例句过少 / 与其它技能冲突补例句 + 复查技能优先级
静默场景仍在播报「执行反馈开关」未关 / 垫句非空参见 静默指令

5. 调优 5 步流程

Step 1 · 建立基线
        · 首次配置完立即跑批,记录准确率作为基线
Step 2 · 抽错误 case
        · 从明细列表按错误类型分桶(见归因决策树)
Step 3 · 单点修改
        · 每次只改 1~2 处配置,便于归因
Step 4 · 版本化保存
        · 用指令集副本或备注记录本次修改内容
Step 5 · 回归跑批
        · 与上一版本对比:准确率是否上升?是否引入新错误?
        · 若引入新错,回退单点修改

核心纪律:一次只改一件事,回归确认后再改下一件。批量修改会导致归因困难。

6. 上线前 Checklist

  • [ ] 批量测试整体准确率 ≥ 90%
  • [ ] 所有控制项都做过至少 3 条端到端测试
  • [ ] 覆盖了 4 类边界场景(拒识 / 模糊 / 多指令 / 口语)
  • [ ] action 命名已与设备开发对齐
  • [ ] 定时 / 静默 / AIoT 设备控制技能配置已复核
  • [ ] 与 多轮意图控制 / AIoT 指令控制 的联动已验证

7. 相关链接