diff --git a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/ui_design_suggestion.rs b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/ui_design_suggestion.rs index 749c12f0f..b32c6f448 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/ui_design_suggestion.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/ui_design_suggestion.rs @@ -1,8 +1,8 @@ use crate::config::build_game_creator_llm_client_from_llm_config; use crate::config::load_game_creator_app_config; use crate::ui_editor::commands::utils::{ - read_ui_reference_image_data_url, request_ui_editor_llm, required_tool_arguments, - strict_json_schema, + parse_limited_llm_tool_arguments, read_ui_reference_image_data_url, request_ui_editor_llm, + required_tool_call_arguments, strict_json_schema, }; use crate::ui_editor::resource::ui_design_image::UIDesignImageRole; use crate::ui_editor::state::State; @@ -214,11 +214,17 @@ pub(crate) async fn suggest_ui_design_semantic_impl( !response.text.trim().is_empty(), response.tool_calls.len() ); - let arguments = - required_tool_arguments(&response, "suggest_ui_design_semantics").map_err(|error| { - app_log!("ui_design_suggestion.error stage=parse_arguments error={error}"); - format!("LLM 响应无效(详情:UI 语义建议工具参数无效:{error})") + let arguments = required_tool_call_arguments(&response, "suggest_ui_design_semantics") + .map_err(|error| { + app_log!( + "ui_design_suggestion.error stage=parse_tool_call reason=missing_tool_call error={error}" + ); + "LLM 响应无效(详情:未返回 suggest_ui_design_semantics 工具调用)".to_string() })?; + let arguments = parse_limited_llm_tool_arguments(arguments).map_err(|error| { + app_log!("ui_design_suggestion.error stage=parse_arguments error={error}"); + format!("LLM 响应无效(详情:UI 语义建议工具参数无效:{error})") + })?; validate_suggestion_response_shape(&arguments).map_err(|error| { app_log!("ui_design_suggestion.error stage=validate_arguments error={error}"); format!("LLM 响应无效(详情:{error})")