fix: 修复AI在查询设备时误调用控制工具的问题

- iot_control: 工具描述添加明确约束,仅在用户明确要求控制时调用
- iot_query: 提示LLM设备状态已注入系统提示词,减少不必要查询
- context builder: 设备状态标题提示LLM无需调用工具查询
This commit is contained in:
2026-05-17 15:55:43 +08:00
parent a80bfd12eb
commit 745b1c6aad
3 changed files with 7 additions and 3 deletions
+1 -1
View File
@@ -187,7 +187,7 @@ func InjectDeviceContext(devices []DeviceInfo) string {
}
var sb strings.Builder
sb.WriteString("[当前IoT设备状态]\n")
sb.WriteString("[当前IoT设备状态 — 你已知晓这些设备的状态,无需调用工具查询,直接引用即可]\n")
for _, d := range devices {
switch d.Type {
case "light":
@@ -20,7 +20,11 @@ func NewIoTControlTool(iotClient *IoTClient) *IoTControlTool {
func (t *IoTControlTool) Definition() ToolDefinition {
return ToolDefinition{
Name: "iot_control",
Description: "控制家中智能设备。可以开关灯光、空调、窗帘、门锁等设备,也可以调节温度、亮度、位置、模式、颜色等属性。" +
Description: "【仅当开拓者明确要求控制设备时才使用此工具】控制家中智能设备。可以开关灯光、空调、窗帘、门锁等设备,也可以调节温度、亮度、位置、模式、颜色等属性。" +
"\n⚠️ 重要约束:" +
"\n - 不要在开拓者只是询问设备状态时调用此工具(查询设备请用 iot_query" +
"\n - 不要自行决定执行操作,必须等开拓者明确说出「打开」「关闭」「调到」「设置」等控制指令" +
"\n - 不要因为之前对话中提到过某个设备就主动控制它" +
"\n支持的操作:toggle(切换开关状态)、turn_on(打开设备)、turn_off(关闭设备)、" +
"set_temperature(设置空调温度,需要 value 参数,单位°C)、" +
"set_brightness(设置灯光亮度,需要 value 参数,0-100)、" +
+1 -1
View File
@@ -20,7 +20,7 @@ func NewIoTQueryTool(iotClient *IoTClient) *IoTQueryTool {
func (t *IoTQueryTool) Definition() ToolDefinition {
return ToolDefinition{
Name: "iot_query",
Description: "查询家中智能设备状态。可以查看所有设备或指定设备状态,包括灯光、空调、窗帘、传感器、门锁等。用于了解家中设备当前的状态。",
Description: "查询家中智能设备状态。注意:当前设备状态通常已自动注入到系统提示词中,你通常不需要调用此工具即可回答设备状态问题。只有在设备状态信息陈旧或明显不完整时才调用此工具刷新。",
Parameters: map[string]interface{}{
"type": "object",
"properties": map[string]interface{}{