SA 设备控制:Agent 设计方案 (Semantic/AI Layer)
文档目的:描述设备控制专家(IoT Specialist)如何通过多轮对话完成槽位提取、意图澄清,并结合后端实时回传的设备能力(Capabilities)实现精准控制。
1. 槽位定义与验证逻辑 (Slot Filling & Validation)
1.1 槽位定义 (Slots)
| 槽位名称 | 必填性 | 类型 | 说明 |
|---|---|---|---|
target_space | 必填 | String | 指令发生的位置(如 "305", "会议室")。若缺失,必须追问。 |
target_device | 选填 | String | 被控制的设备(如 "灯", "空调")。缺省时由后端执行“能力反查”逻辑。 |
instruction | 必填 | String | 用户的控制意图(如 "开一下", "调到26度")。若缺失,必须追问。 |
1.2 澄清追问逻辑 (Clarification)
当核心槽位缺失时,Agent 需按照以下优先级进行追问:
- Space 缺失:“请问您是指哪个房间或区域的操作?”
- Instruction 缺失:“请问您想对 [Space] 执行什么操作(如:开启、关闭或调节)?”
2. 动态能力匹配逻辑 (Dynamic Intent Binding)
为了解决“指令歧义”并确保控制精准,系统采用 “语义提取 -> 能力注入 -> 最终裁决 -> 用户确认” 的四阶段逻辑。
2.1 阶段一:初次提取 (Initial NLU)
Agent 从用户原始输入中提取三个基础槽位。提取规则:target_space 与 instruction 核心必填,target_device 可空。
2.2 阶段二:能力发现与隐式匹配 (Discovery & Matrix)
- 工具调用:Agent 调用后端工具
IoT_Locator。- Case A (有设备):传
target_space+target_device。 - Case B (无设备/隐式):仅传
target_space。
- Case A (有设备):传
- 能力反传:后端返回匹配实体的能力列表。若指定了设备则返回该设备
actions;若未指定设备(隐式)则返回该空间下所有绑定设备的能力集合。 - LLM 意图精细化 (Refinement):
- LLM 结合用户原始
instruction(如“关下”)在搜索结果中进行过滤并选出最匹配的设备与动作。
- LLM 结合用户原始
2.3 阶段三:用户确认卡片 (UI Confirmation) —— [核心交互策略]
IMPORTANT
无论 AI 判定的置信度多高(即使只有唯一选项),系统都必须弹出交互卡片。
- UI 策略:Agent 向用户发送 “确认执行卡片”。
- 内容:展示解析到的动作详情(如:“305会议室 - 空调 - 设为26℃”)。
- 交互:用户手动点击卡片上的
[确认控制]后,流程才进入物理执行。
3. Dify 工作流设计 (Dify Workflow)
- 同步成功:“好的,已经帮您执行了 [空间] [设备] 的 [动作] 操作。”
4.2 边缘场景处理 (Edge Cases)
| 异常类型 | 判定条件 | Agent 预期话术 (示例) |
|---|---|---|
| 空间歧义 | 用户输入 3楼 (对应多个房间) | "3 楼包含多个区域,请问您是指 305 会议室 还是 3 楼走廊 的灯?" |
| 设备歧义 | 空间内同类设备 >1 | "305 有两盏顶灯,是执行 全开 还是只开其中一盏?" |
| 安全/策略拦截 | 执行值超出 Min/Max | "现在的指令已达到安全上限(如: 30℃),已经帮您调到最高了哦。" |
| 物理执行失败 | IoT 平台返回 Error | "哎呀,[设备名] 好像现在不听使唤了,可能是掉线了。您可以稍后再试。" |
| 意图过宽 | 指令过于模糊 (如 "弄下这个") | "抱歉,我不太确定您想对 [设备] 怎么操作,是想 开启 吗?" |
5. 相关设计参考
- 路由分发层:意图识别与分发技术方案
- 物理映射层:SA_设备控制_物理执行逻辑
