From 2d30fd808d83d528cabfdc054f934c96737ad2f1 Mon Sep 17 00:00:00 2001 From: Linghong Date: Tue, 9 Jun 2026 19:01:41 +0800 Subject: [PATCH] replace all apimart call with vectorengine counterpart --- server-rs/crates/api-server/src/config.rs | 47 ++++++++++++----------- server-rs/crates/api-server/src/state.rs | 19 ++++++--- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/server-rs/crates/api-server/src/config.rs b/server-rs/crates/api-server/src/config.rs index e9f6ec68..46a5f9f0 100644 --- a/server-rs/crates/api-server/src/config.rs +++ b/server-rs/crates/api-server/src/config.rs @@ -133,9 +133,10 @@ pub struct AppConfig { pub dashscope_reference_image_model: String, pub dashscope_cover_image_model: String, pub dashscope_image_request_timeout_ms: u64, - pub apimart_base_url: String, - pub apimart_api_key: Option, - pub apimart_image_request_timeout_ms: u64, + // 中文注释:Apimart 已于 2026-06 弃用,LLM 文本调用统一迁移到 VectorEngine(同时支持 Chat Completions / Responses 协议)。 + // pub apimart_base_url: String, + // pub apimart_api_key: Option, + // pub apimart_image_request_timeout_ms: u64, pub vector_engine_base_url: String, pub vector_engine_api_key: Option, pub vector_engine_image_request_timeout_ms: u64, @@ -293,9 +294,9 @@ impl Default for AppConfig { dashscope_reference_image_model: String::new(), dashscope_cover_image_model: String::new(), dashscope_image_request_timeout_ms: 150_000, - apimart_base_url: String::new(), - apimart_api_key: None, - apimart_image_request_timeout_ms: 180_000, + // apimart_base_url: String::new(), + // apimart_api_key: None, + // apimart_image_request_timeout_ms: 180_000, vector_engine_base_url: String::new(), vector_engine_api_key: None, vector_engine_image_request_timeout_ms: DEFAULT_VECTOR_ENGINE_IMAGE_REQUEST_TIMEOUT_MS, @@ -791,17 +792,17 @@ impl AppConfig { config.dashscope_image_request_timeout_ms = dashscope_image_request_timeout_ms; } - if let Some(apimart_base_url) = read_first_non_empty_env(&["APIMART_BASE_URL"]) { - config.apimart_base_url = apimart_base_url; - } - - config.apimart_api_key = read_first_non_empty_env(&["APIMART_API_KEY"]); - - if let Some(apimart_image_request_timeout_ms) = - read_first_positive_u64_env(&["APIMART_IMAGE_REQUEST_TIMEOUT_MS"]) - { - config.apimart_image_request_timeout_ms = apimart_image_request_timeout_ms; - } + // 中文注释:Apimart 已于 2026-06 弃用,LLM 文本调用统一迁移到 VectorEngine。 + // 保留以下历史加载代码,后续删除: + // if let Some(apimart_base_url) = read_first_non_empty_env(&["APIMART_BASE_URL"]) { + // config.apimart_base_url = apimart_base_url; + // } + // config.apimart_api_key = read_first_non_empty_env(&["APIMART_API_KEY"]); + // if let Some(apimart_image_request_timeout_ms) = + // read_first_positive_u64_env(&["APIMART_IMAGE_REQUEST_TIMEOUT_MS"]) + // { + // config.apimart_image_request_timeout_ms = apimart_image_request_timeout_ms; + // } if let Some(vector_engine_base_url) = read_first_non_empty_env(&["VECTOR_ENGINE_BASE_URL"]) { @@ -1189,7 +1190,7 @@ mod tests { assert!(config.llm_model.is_empty()); assert!(config.llm_base_url.is_empty()); - assert!(config.apimart_base_url.is_empty()); + // assert!(config.apimart_base_url.is_empty()); assert!(config.vector_engine_base_url.is_empty()); assert!(config.ark_character_video_base_url.is_empty()); assert_eq!(config.hyper3d_base_url, "https://api.hyper3d.com/api/v2"); @@ -1285,11 +1286,11 @@ mod tests { assert_eq!(config.llm_provider, LlmProvider::OpenAiCompatible); assert_eq!(config.llm_base_url, "https://llm.internal.example/v1"); assert_eq!(config.llm_model, "internal-text-model"); - assert_eq!( - config.apimart_base_url, - "https://responses.internal.example/v1" - ); - assert_eq!(config.apimart_image_request_timeout_ms, 190_000); + // assert_eq!( + // config.apimart_base_url, + // "https://responses.internal.example/v1" + // ); + // assert_eq!(config.apimart_image_request_timeout_ms, 190_000); assert_eq!( config.vector_engine_base_url, "https://vector.internal.example" diff --git a/server-rs/crates/api-server/src/state.rs b/server-rs/crates/api-server/src/state.rs index 68aa3805..49d0e381 100644 --- a/server-rs/crates/api-server/src/state.rs +++ b/server-rs/crates/api-server/src/state.rs @@ -1378,8 +1378,9 @@ fn build_llm_client(config: &AppConfig) -> Result, AppStateIni fn build_creative_agent_gpt5_client( config: &AppConfig, ) -> Result, AppStateInitError> { + // 中文注释:Apimart 已于 2026-06 弃用,LLM 文本调用统一迁移到 VectorEngine。 let Some(api_key) = config - .apimart_api_key + .vector_engine_api_key .as_ref() .map(|value| value.trim()) .filter(|value| !value.is_empty()) @@ -1387,9 +1388,15 @@ fn build_creative_agent_gpt5_client( return Ok(None); }; + let base_url = if config.vector_engine_base_url.ends_with("/v1") { + config.vector_engine_base_url.clone() + } else { + format!("{}/v1", config.vector_engine_base_url.trim_end_matches('/')) + }; + let llm_config = LlmConfig::new( LlmProvider::OpenAiCompatible, - config.apimart_base_url.clone(), + base_url, api_key.to_string(), platform_agent::CREATIVE_AGENT_GPT5_MODEL.to_string(), config.llm_request_timeout_ms, @@ -1512,11 +1519,11 @@ mod tests { } #[test] - fn app_state_builds_creative_agent_gpt5_client_from_apimart_settings() { + fn app_state_builds_creative_agent_gpt5_client_from_vector_engine_settings() { let mut config = AppConfig::default(); config.llm_api_key = None; - config.apimart_base_url = "https://api.apimart.test/v1".to_string(); - config.apimart_api_key = Some("apimart-key".to_string()); + config.vector_engine_base_url = "https://api.vectorengine.test".to_string(); + config.vector_engine_api_key = Some("ve-key".to_string()); let state = AppState::new(config).expect("state should build"); let client = state @@ -1529,7 +1536,7 @@ mod tests { ); assert_eq!( client.config().responses_url(), - "https://api.apimart.test/v1/responses" + "https://api.vectorengine.test/v1/responses" ); assert!(client.config().official_fallback()); }