Skip to content

工具配置 ​

「工具」是执行层提示词可以主动调用的外部能力——当模型仅靠对话无法完成任务(如查询设备实时状态、下发结构化指令)时,就需要调用对应的工具来「做事」。

本页说明:什么是工具、什么时候需要调用工具、如何在页面右上角管理工具、以及如何在 执行层提示词 中告诉模型「何时调用哪个工具」。

1. 什么是工具 ​

模型本身只能「理解语言、生成文本」。要让它真正操作设备、读取实时数据,就必须借助工具:

  • 有了工具,模型可以在对话过程中「跳出文本」,去执行一个真实动作(如下发一条 AIOT 控制指令、查询当前亮度);
  • 没有工具,模型只能「说」,不能「做」——它可以回答「我帮你关灯」,但灯不会真的灭。

因此,执行层提示词中每一个「要落地为动作」的意图,背后都对应着一个已配置的工具。

⚠️ 重要:只有执行层提示词可以调用工具。 意图层(接不接)、规划层(怎么做)只做判断与拆解,不直接调用工具;真正「出参数、下发动作、读取现状」的落地环节,统一由执行层提示词调用工具完成。

2. 什么时候需要调用工具 ​

判断依据是:这一步是否需要产生「文本之外」的真实效果。

场景是否需要工具说明
用户闲聊、追问、澄清❌ 不需要纯对话,模型直接文本回复即可
控制设备(开关、调节参数)✅ 需要需调用「AIOT 控制指令」类工具下发协议
查询设备实时状态✅ 需要需调用「状态查询」类工具读取当前值
时间差计算、复杂校验(如剩余时长、参数合法性、数值换算)✅ 需要光靠模型自行推算容易出错,应交由专门工具精确计算与校验

💡 一个经验法则:凡是「出参数、下发动作、读取现状、精确计算/校验」的步骤,都需要调用工具;凡是「解释、安抚、追问」的步骤,都不需要。 尤其涉及时间差、数值换算、参数合法性等模型不擅长、易算错的环节,建议交给工具处理。

3. 各平台 / 端侧设备可用的工具及能力边界 ​

不同 IoT 平台与端侧设备,可用的工具范围不同。下表梳理各类工具的适用范围、能力与边界,供在「添加工具」和编写执行层提示词时对照选择。

3.1 通用工具(任何 IoT 平台与端侧设备皆可用) ​

工具能力关键边界
local_command_control本地指令控制,支持多指令批量下发同一轮多条指令必须合并进一个 instructions 数组,严禁拆成多次调用;action 只能用 PE 清单声明的 command_code/intentCode 或派生 action,严禁自造;含时间触发词须改用派生 action(_add/_query/_delete)
device_status_from_jimdb通过 JIMDB 查询端侧设备状态查询类指令配置请查看:查询指令
duration_parse_tool时长解析:自然语言时长 → 小时/分钟(如「两个半小时」→ 2.5h/150min)支持 秒/分/刻/小时/天/周;不支持 月/季度/年(长度不固定,避免近似误差)
time_diff_tool时间差计算(起止时间差,可返回 秒/分/时/天)入参为 YYYY-MM-DD HH:MM:SS 格式

3.2 小家 IoT 可用工具 ​

工具能力关键边界
iot_do_batch_domain_intent设备控制指令下发(支持批量 intent)顶层必填 intents(List[Dict]);单条也须写成 {"intents":[{...}]};严禁把 intent/domain/value 等平铺到顶层;定时类 intent 的 domain 固定为「设备定时」,真实品类写进 deviceTimerBody
iot_get_device_shadow获取小家iot设备影子状态需传 request_id/vendor_id/bot_id/did/device_token

3.3 集贤IoT可用工具 ​

工具能力关键边界
jxcloud_send_device_commands发送设备控制命令(支持一个或多个)commands 必传,每条含 name/value
jxcloud_get_device_detail获取设备最新状态详情需传 device_id/product_id
jxcloud_save_timer保存或更新定时任务(有 id 则更新,无则创建)timeConfig 必填,timerType 为 repeat/once;hour/minute/zoneOffset 必填
jxcloud_get_timers查询设备所有定时任务需传 device_id
jxcloud_cancel_next_timer取消定时任务的下次执行(不影响后续)需传 task_id
jxcloud_delete_timer删除指定定时任务需传 task_id

💡 如何选择:先确认当前设备接入的平台(通用 / 小家 IoT / 集贤云),再从对应表中选取工具。通用工具在所有平台都可用;平台专属工具只能用于对应平台的设备。

4. 在页面中管理工具 ​

在提示词编辑页面的右上角,可以查看和管理当前智能体在用的工具。

4.1 查看当前已用工具(请勿随意删除) ​

点击右上角的 「工具配置」,展示的是当前产品已经在用的工具列表。

📌 列表如何初始化:创建产品时选择了端侧或 IoT 平台之后,进入产品详情并打开 AIoT 指令,「工具配置」列表会自动初始化出当前 IoT 平台或端侧设备控制所必须的工具。这些工具是 IoT 设备控制的强依赖,其使用逻辑已在系统提示词中写明、无需手动编写,也不能删除。

4.2 添加新工具 ​

如果在已初始化工具之外,还需要让模型具备新的能力:

  1. 点击右上角的 「添加工具」;
  2. 在弹出的工具列表中选择要添加的工具(可对照 第 3 节 确认平台可用范围);
  3. 确认后,该工具即被加入「工具配置」列表;
  4. 在执行层提示词中写明:什么时候用这个工具、怎么用(详见第 5 节)。

💡 区别:系统初始化的工具——逻辑已在系统提示词内,只需保留不删;手动添加的新工具——必须自己在执行层提示词中补写调用逻辑。

5. 在执行层提示词中指定调用时机 ​

基本写法:先声明触发条件,再说明入参怎么填。例如:

text
当用户表达「控制设备」意图(如开关、调节参数)时,调用【AIOT 控制指令】工具下发协议;
当用户询问「设备当前状态」时,先调用【状态查询】工具读取现状,再作答;
其余闲聊、追问场景,直接文本回复,不调用任何工具。

一段真实示例——为「按摩 X 分钟后自动关闭」这类需求新增 duration_parse_tool(时长解析)与 time_diff_tool(时间差计算)后,在执行层提示词中写明:

text
# 新增工具调用逻辑
当用户说「按摩两个半小时」「再按一刻钟」等自然语言时长时:
1. 先调用 duration_parse_tool,把时长描述转成分钟数
   (如「两个半小时」→ {"hour":2.5,"minutes":150});
2. 用解析出的分钟数作为定时时长,再调用 AIOT 控制指令工具下发。

当需要计算「距离下一次定时还剩多久」时:
调用 time_diff_tool,传入 start_time=当前时间、end_time=定时时间、
unit="minute",用返回结果作答,严禁自行心算。

⚠️ 前提:提示词中引用的工具必须已经被添加到「工具配置」列表中。如果提示词让模型调用一个未配置的工具,该调用不会生效。二者必须一一对应:

  • 提示词里要用的工具 → 先在右上角「添加工具」加入列表;
  • 列表里已有的工具 → 才能在提示词里被安全引用。

6. 相关链接 ​