Skip to content

指令配置 ​

指令配置是指仅通过控制项、操作行为、数据类型、参数约束等字段描述设备能力,无需编写提示词。

优先使用指令配置;只有当能力表达不了时,才逐级升到 提示词编写 。

1. 指令配置的本质:三个正交维度 ​

指令配置的本质洞察是:虽然设备千差万别,但它们的差异只发生在 3 个正交维度上。

维度回答的问题对应字段
① 物理归属这条能力「长在哪儿」?型号 / 品类 / 部件
② 能力结构这个硬件能做什么?控制项 / 操作行为
③ 数据类型硬件接收什么形态的值?数据类型/参数配置

2. 核心名词解释 ​

在开始配置之前,先建立统一的术语认知,避免配置错位:

概念说明示例
型号(device)在创建产品的时候填写产品型号字段,描述一个具体产品的物理属性;产品创建后不可改智能台灯 097、洗衣机 086
品类(domain)一类产品的统称台灯、洗衣机、机器人
部件一个型号内部可独立控制的子结构,仅需为多部件设备填写,单部件或无细分结构的产品可留空该字段。主灯/氛围灯、上桶/下桶
指令集描述某型号支持的控制能力合集台灯标准指令集
指令(控制项)硬件设备的一个可控对象 + 它支持的若干操作行为开关控制、音量控制、亮度控制
指令(非控制项)机器人动作等需要扩展性和特殊逻辑的指令机械臂前进 30 厘米

3. 维度详解 ​

维度 ① · 物理归属——回答「这条能力长在哪儿」 ​

每条指令都必须钉在一台具体硬件、甚至一个具体部件上。例如:

  • 同样是「开关」,装在洗衣机上和装在灯上,作用对象完全不同;
  • 同样是「杀菌」,作用在双筒洗衣机的「上筒」还是「下筒」,是两件事。

归属链:

型号 (品类、部件)
    ↓
指令集 
    ↓
指令

实操要点:在创建产品时将「型号 / 品类 / 部件 / IOT平台」沉淀清楚;一旦产品上的部件字段变化,下游所有指令的「作用部件」的配置都可能受影响。

💡 产品型号建后不可改:新建产品时手写产品型号、品类、IOT 平台、部件;型号一经创建即锁定,编辑态不可修改。

维度 ② · 能力结构——回答「这个硬件能做什么」 ​

每台设备都有一组可控对象(亮度、温度、音量、模式……),每个可控对象都支持若干动作(打开、关闭、设置、查询、调高、调低)。

关键洞察:用户嘴里的「动作动词」 ≠ 硬件层面的「独立指令」。

  • 「调大音量」和「调小音量」,在语言上是两个动作;
  • 在硬件层面,它们是同一个能力(音量)的两种调节方向。

✅ 正确做法:1 个控制项(音量)+ 4 个操作行为(设置 / 查询 / 调高 / 调低) ❌ 错误做法:拆成 4 条独立指令

字段结构:

能力结构
├── 控制项
│   ├── name         指令控制项名称(中文)
│   ├── controlCode  控制项编码(全英文)
│   └── controlAlias 控制项别名
└── 操作行为
    ├── opCode   set / query / increase / decrease / on / off
    ├── opName   设置 / 查询 / 调高 / 调低 / 打开 / 关闭
    └── examples 用户口语例句列表

维度 ③ · 数据类型——回答「硬件接收什么形态的值」 ​

三种数据类型的选择原则——问自己:指令「目标值」的形态?

目标值的形态?
├─ 只有「开 / 关 / 暂停」这种二元(或三元)状态 → SWITCH 开关型
│    例:打开制氧机开关、打开分子筛开关、打开提示音开关
├─ 目标值是"数字 + 单位",有最小/最大值范围     → NUMERIC 数值型
│    例:流量档位设置成15、温度设置成30℃
└─ 目标值是"有限的标签集合",没有数学大小关系   → ENUM 枚举型
     例:洗涤模式(智能洗 / 快洗 / 羊毛洗)、风量档位(强 / 中 / 弱)

ENUM 与 数值 易错点剖析:

用户说话方式value 装什么应该选原因
「调到 3 档」标签 3(绝对目标)ENUM 或 数值取值在有限集 {1,2,3,4,5},两者都能承载
「调到最大 / 最小」归一后的标签 5 / 1ENUM 或 数值仍落在有限集
「调高 1 档 / 再大 2 档」1 / 2 / …任意增量必须用 数值value 是开放正整数集,ENUM 无法列全

一句话判断法:有没有「调高 / 调低 相对调节任意值」?

  • 有 → 数值(value 要装增量,ENUM 装不下任意正整数)
  • 没有 → 都可以

三种类型一旦敲定,平台会自动派生参数配置:

  • SWITCH → 配 on/off 或 0/1 需要与预期协议值保持一致,
  • ENUM → 必须列枚举清单,枚举项别名为枚举值的其他同义词
  • NUMERIC → 填 min/max/单位/间距,其中间距是指当用户query为“调高一点”时的那个“一点”的默认值。

4. 配置流程总览 ​

step1  创建产品时定义硬件信息
       ↓ (沉淀型号 / 品类 / 部件 / IoT 平台)
step2  开启AIOT指令开关,新建指令集
       ↓ (指令集即"这台设备能听懂的命令清单")
step3  在指令集下新建指令
       ↓ (选择控制项/非控制项指令 → 配字段 → 写例句)
step4  调试与修改
       ↓ 
       发布产品

5. 详细操作步骤 ​

5.1 新建指令集 ​

开启AIOT指令开关,提示词选择「根据指令集生成」,点击新建指令集

  • 指令集名称:自定义;
  • 是否需要执行反馈:开启后,硬件在执行完指令后会进行语音播报或文字回复(如:“已为您关闭台灯”);关闭则仅执行动作,不发出声音;

5.2 新建指令 ​

5.2.1 控制项指令 ​

适用于设备的标准功能点:开关、亮度、音量、温度、模式、风速、档位等可被抽象为「开关切换 / 档位选择 / 数值调节」的通用场景。

配置字段:

  • 控制项名称:如「音量」「亮度」;

  • 控制项别名:兼容不同系统或场景的命名习惯;

  • 控制项编码(controlCode):全英文,可包含 - / _;

    • ⚠️ 同一个产品下指令的编码不能重复!
  • 指令下发方式:

    • 端侧:指令不经云端平台直接发往设备;
    • IoT 平台:指令经过 IoT 平台转发至设备。
  • 作用部件:可指定该指令仅作用于某些部件;若产品无部件或该指令作用于所有部件,可不选;

  • 数据类型:SWITCH / ENUM / NUMERIC(详见维度 ③);

  • 操作行为:从设置 / 查询 / 调高 / 调低中勾选,一条指令可包含多个操作行为;

  • 自定义操作行为: 当预设的 4 种操作行为无法满足业务需求时(如「开始」「暂停」「切换」「重置」等),可点击操作行为列表最后的【+ 添加自定义操作行为】按钮,动态添加自定义操作行为。

  • ⚠️ 操作行为需与设备物模型 / IoT 接口定义的动词完全一致。例如:设备物模型为「开始测量」,则填写「开始」。名称不一致将导致设备无法识别指令。

  • ⚠️ 当数据类型为开关时,系统操作行为的「设置」即包含了「打开」「关闭」行为,无需重复设置相关自定义操作行为。

  • 例句:点击操作行为后的【操作例句】,定义用户说什么话会触发该指令。例句支持配置正例和反例,帮助模型判断「什么时候进入这个指令、什么时候不要进入」:

    • 正例:用户这样说应当命中本指令(如「打开灯」);
    • 反例:用户这样说不应命中本指令,即使字面高度相似(如给「关闭按摩」配置反例「关闭按摩枕」)。
    • 反例的典型场景——区分相似指令:假设有两条指令,一个控制项是「按摩」,另一个控制项是「按摩枕」。当用户说「关闭按摩枕」时,由于字面包含「按摩」,很容易误触发「关闭按摩」。此时给「关闭按摩」配置一条反例「关闭按摩枕」(这句话不要进入本指令),再给「关闭按摩枕」配置一条正例「关闭按摩枕」(这句话应命中本指令),两者配合模型即可正确区分。
  • 参数配置(随数据类型而变):

    • 开关型:开关状态映射(如 {"on": "ON", "off": "OFF"}),值必须与设备协议完全一致;
    • 枚举型:枚举项编码(通常为数字,建议按顺序)、枚举项名称、枚举项别名;
    • 数值型:最小值 / 最大值 / 间距 / 默认值 / 单位 / 单位别名。
      • 「间距」是指默认步长,即用户 query 为「调低一点」时那个「一点」。

5.3.2 非控制项指令 ​

适用于非标准功能:机器人动作、机械臂操作等私有协议指令。用户可自定义指令名称、识别规则和参数槽位。

配置字段:

  • 指令名称;
  • 指令编码:全英文;
  • 识别提示词:用于定义指令的触发规则(「什么时候触发」+ 「什么时候不触发」);
  • 操作行为:非控制项指令仅支持「设置」一种;
  • 例句:作为指令识别的参考;
  • 槽位:用户query中需要提取的关键参数。
    • 字段名:全英文;
    • 槽值类型:数值 / 文本 / 枚举;
    • 槽值提取提示词:引导系统从用户输入中提取槽值的关键词或规则。

举例:机器人前进指令,识别提示词 = 「当用户希望机器人向前移动一定距离时触发,常见表述如『往前走』『前进 N 米』」,槽位 distance = 数值,提示词 = 「提取移动距离,单位换算为厘米」。

6. 配置示例和下发协议示例 ​

以下四个示例覆盖「IOT 平台转发 / 端侧直连」× 「控制项 / 非控制项」的典型配置方式,可对照参考。

示例一:IOT 平台转发 · 开关类控制项(打开灯) ​

预期下发协议

json
{
  "kw": {
    "intents": [
      { "intent": "打开灯", "domain": "灯" }
    ]
  }
}

配置方式

  • 创建产品:品类选择灯(品类即协议中的 domain,必须与协议值完全一致,否则无法下发);IOT 平台选择小家;进入产品后打开 AIOT 开关,新建指令集 → 新建控制项指令;
  • 操作行为 = 灯(而非「开关」),因为预期协议中 intent = 打开灯;
    • 说明:intent = 操作行为 + 控制项名称;
  • 控制项编码:自定义,同一型号下不重复即可;
  • 指令下发方式:选择 IOT 平台;
  • 数据类型:开关;
  • 操作行为勾选**「设置」**,添加例句「打开灯」——即当用户 query = 打开灯时下发该指令。

💡 数据类型为开关时,勾选「设置」即同时包含打开 + 关闭两种行为。

示例二:IOT 平台转发 · 带部件的数值类控制项(调高上灯亮度) ​

预期下发协议

json
{
  "kw": {
    "intents": [
      {
        "intent": "调高上灯亮度",
        "domain": "灯",
        "value": "10",
        "unit": "度"
      }
    ]
  }
}

配置方式

  • 创建产品:品类选择灯(= domain,必须与协议值完全一致);IOT 平台选择小家;部件添加「上灯」;进入产品后打开 AIOT 开关,新建指令集 → 新建控制项指令;
  • 当产品有部件时,intent = 操作行为 + 部件 + 控制项名称;
  • 控制项名称 = 亮度;控制项编码:自定义;
  • 指令下发方式:IOT 平台;作用部件:选择上灯;
  • 数据类型:数值;操作行为:调高;例句:「上灯亮度调高 10 度」;
  • 最大值、最小值、间距、单位、单位别名、默认值,按硬件物模型或业务规则自行配置。

示例三:端侧直连 · 数值类控制项(设置色温) ​

不经过 IOT 平台转发,由端侧直接接收指令。

预期下发协议

json
{
  "instructions": [
    {
      "action": "temp",
      "args": { "type": "set", "value": 40 },
      "desc": "色温设置为40度"
    }
  ]
  
}

其中 action = 控制项编码,故端侧直连设备的控制项编码必须严格按预期接收协议来写;type = 操作行为;value = 从 query 中提槽出的数值。

配置方式

  • 创建产品:品类选择灯,IOT 平台字段留空即可;
  • 控制项名称 = 色温;控制项编码 = temp;
  • 下发方式勾选端侧;数据类型:数值;操作行为:设置;
  • 例句:「色温调整为 80」(任意数值)。

示例四:端侧直连 · 非控制项指令(机器人前进 1 米) ​

预期下发协议

json
{
  "instructions": [
    {
      "action": "robot_move_forward",
      "args": { "distance": 100 },
      "desc": "往前走1米"
    }
  ]
}

配置方式

  • 新建指令时选择非控制项;
  • 指令名称:前进;指令编码:move_forward;
  • 识别提示词:「当用户希望机器人向前移动一定距离时触发,常见表述如『往前走』『前进 N 米』『向前走 XX 厘米』;若用户明确说『后退』『左转』等其他方向,不触发本指令。」
  • 例句:「往前走 30 厘米」「前进两米」「向前一点」;
  • 槽位:distance(数值型)——提取移动距离,统一换算为厘米。

8. 相关链接 ​