update:iot设备多指令适配

This commit is contained in:
CGD
2025-06-24 14:55:34 +08:00
parent bc2fc35cc9
commit 896b318c49
3 changed files with 19 additions and 1 deletions
@@ -61,6 +61,16 @@ class FunctionHandler:
return self.function_registry.get_function(name)
def handle_llm_function_call(self, conn, function_call_data):
# 多函数调用处理
if "function_calls" in function_call_data:
responses = []
for call in function_call_data["function_calls"]:
func = self.get_function(call["name"])
if func:
# 执行函数并收集响应
response = func(conn, **call.get("arguments", {}))
responses.append(response)
return self._combine_responses(responses) # 合并响应
try:
function_name = function_call_data["name"]
funcItem = self.get_function(function_name)
+5 -1
View File
@@ -82,7 +82,11 @@ def create_iot_function(device_name, method_name, method_info):
response = response.replace("{value}", str(param_value))
break
return ActionResponse(Action.RESPONSE, result, response)
return ActionResponse(
Action.REQLLM,
result=f"{device_name}操作执行成功,请继续处理剩余指令",
response=response_success # 保留成功提示
)
except Exception as e:
conn.logger.bind(tag=TAG).error(
f"执行{device_name}{method_name}操作失败: {e}"
@@ -95,6 +95,10 @@ class IntentProvider(IntentProviderBase):
"1. 只返回JSON格式,不要包含任何其他文字\n"
'2. 如果没有找到匹配的函数,返回{"function_call": {"name": "continue_chat"}}\n'
"3. 确保返回的JSON格式正确,包含所有必要的字段\n"
"特殊说明:\n"
"- 当用户单次输入包含多个指令时(如'打开灯并且调高音量'\n"
"- 请返回多个function_call组成的JSON数组\n"
"- 示例:{'function_calls': [{name:'light_on'}, {name:'volume_up'}]}"
)
return prompt