From 059826b06d53060d594ba73746f308b7380db14c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Wed, 5 Aug 2026 14:30:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E6=A0=87=E8=A7=84?= =?UTF-8?q?=E8=8C=83=20LLM=20=E6=A8=A1=E5=9E=8B=E9=85=8D=E7=BD=AE=E4=B8=8E?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为图标规范优化与参数补全请求指定默认模型 将两类请求切换为 OpenAI Chat 协议 统一 VectorEngine LLM 客户端读取与未配置错误信息 --- .../crates/api-server/src/editor_project_icon_specs.rs | 10 ++++++---- server-rs/crates/api-server/src/llm/icon_specs.rs | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/server-rs/crates/api-server/src/editor_project_icon_specs.rs b/server-rs/crates/api-server/src/editor_project_icon_specs.rs index fdd85d2a8..eafff07d1 100644 --- a/server-rs/crates/api-server/src/editor_project_icon_specs.rs +++ b/server-rs/crates/api-server/src/editor_project_icon_specs.rs @@ -5,7 +5,7 @@ use axum::{ extract::{Extension, State}, http::StatusCode, }; -use platform_llm::{LlmMessage, LlmRunRequest}; +use platform_llm::{EDITOR_AGENT_GPT5_MODEL, LlmMessage, LlmRunRequest}; use serde::{Deserialize, Deserializer, Serialize, Serializer, de}; use serde_json::{Value, json}; use shared_contracts::assets::EditorCanvasGenerationCompletionPayload; @@ -260,15 +260,17 @@ async fn run_icon_spec_extra_param_llm( state: &AppState, prompt: String, ) -> Result { - let configured_llm_client = state.llm_client().ok_or_else(|| { + let configured_llm_client = state.vector_engine_llm_client().ok_or_else(|| { AppError::from_status(StatusCode::SERVICE_UNAVAILABLE).with_details(json!({ "provider": "editor-icon-spec-llm", - "message": "服务端尚未配置可用的 LLM API Key", + "message": "服务端尚未配置可用的 VectorEngine LLM API Key", })) })?; let retry_backoff_ms = configured_llm_client.config().retry_backoff_ms(); let llm_client = configured_llm_client.clone().with_max_retries(0); - let request = LlmRunRequest::new(vec![LlmMessage::user(prompt)]); + let request = LlmRunRequest::new(vec![LlmMessage::user(prompt)]) + .with_model(EDITOR_AGENT_GPT5_MODEL) + .with_openai_chat(); for attempt in 1..=ICON_SPEC_LLM_MAX_ATTEMPTS { match llm_client.run(request.clone()).await { diff --git a/server-rs/crates/api-server/src/llm/icon_specs.rs b/server-rs/crates/api-server/src/llm/icon_specs.rs index f8591159d..9ab92221d 100644 --- a/server-rs/crates/api-server/src/llm/icon_specs.rs +++ b/server-rs/crates/api-server/src/llm/icon_specs.rs @@ -3,7 +3,7 @@ use axum::{ extract::{Extension, State}, http::StatusCode, }; -use platform_llm::{LlmMessage, LlmRunRequest}; +use platform_llm::{EDITOR_AGENT_GPT5_MODEL, LlmMessage, LlmRunRequest}; use serde::Deserialize; use serde_json::{Value, json}; use std::time::Duration; @@ -144,15 +144,17 @@ fn normalize_refined_text(value: &str) -> Result { } async fn run_refine_text_llm(state: &AppState, prompt: String) -> Result { - let configured_llm_client = state.llm_client().ok_or_else(|| { + let configured_llm_client = state.vector_engine_llm_client().ok_or_else(|| { AppError::from_status(StatusCode::SERVICE_UNAVAILABLE).with_details(json!({ "provider": "editor-icon-spec-llm", - "message": "服务端尚未配置可用的 LLM API Key", + "message": "服务端尚未配置可用的 VectorEngine LLM API Key", })) })?; let retry_backoff_ms = configured_llm_client.config().retry_backoff_ms(); let llm_client = configured_llm_client.clone().with_max_retries(0); - let request = LlmRunRequest::new(vec![LlmMessage::user(prompt)]); + let request = LlmRunRequest::new(vec![LlmMessage::user(prompt)]) + .with_model(EDITOR_AGENT_GPT5_MODEL) + .with_openai_chat(); for attempt in 1..=ICON_SPEC_LLM_MAX_ATTEMPTS { match llm_client.run(request.clone()).await {