replace all apimart call with vectorengine counterpart

This commit is contained in:
2026-06-09 19:01:41 +08:00
parent 585a5638db
commit 2d30fd808d
2 changed files with 37 additions and 29 deletions

View File

@@ -133,9 +133,10 @@ pub struct AppConfig {
pub dashscope_reference_image_model: String, pub dashscope_reference_image_model: String,
pub dashscope_cover_image_model: String, pub dashscope_cover_image_model: String,
pub dashscope_image_request_timeout_ms: u64, pub dashscope_image_request_timeout_ms: u64,
pub apimart_base_url: String, // 中文注释Apimart 已于 2026-06 弃用LLM 文本调用统一迁移到 VectorEngine同时支持 Chat Completions / Responses 协议)。
pub apimart_api_key: Option<String>, // pub apimart_base_url: String,
pub apimart_image_request_timeout_ms: u64, // pub apimart_api_key: Option<String>,
// pub apimart_image_request_timeout_ms: u64,
pub vector_engine_base_url: String, pub vector_engine_base_url: String,
pub vector_engine_api_key: Option<String>, pub vector_engine_api_key: Option<String>,
pub vector_engine_image_request_timeout_ms: u64, pub vector_engine_image_request_timeout_ms: u64,
@@ -293,9 +294,9 @@ impl Default for AppConfig {
dashscope_reference_image_model: String::new(), dashscope_reference_image_model: String::new(),
dashscope_cover_image_model: String::new(), dashscope_cover_image_model: String::new(),
dashscope_image_request_timeout_ms: 150_000, dashscope_image_request_timeout_ms: 150_000,
apimart_base_url: String::new(), // apimart_base_url: String::new(),
apimart_api_key: None, // apimart_api_key: None,
apimart_image_request_timeout_ms: 180_000, // apimart_image_request_timeout_ms: 180_000,
vector_engine_base_url: String::new(), vector_engine_base_url: String::new(),
vector_engine_api_key: None, vector_engine_api_key: None,
vector_engine_image_request_timeout_ms: DEFAULT_VECTOR_ENGINE_IMAGE_REQUEST_TIMEOUT_MS, 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; 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"]) { // 中文注释Apimart 已于 2026-06 弃用LLM 文本调用统一迁移到 VectorEngine。
config.apimart_base_url = apimart_base_url; // 保留以下历史加载代码,后续删除:
} // 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"]); // }
// config.apimart_api_key = read_first_non_empty_env(&["APIMART_API_KEY"]);
if let Some(apimart_image_request_timeout_ms) = // if let Some(apimart_image_request_timeout_ms) =
read_first_positive_u64_env(&["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; // 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"]) 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_model.is_empty());
assert!(config.llm_base_url.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.vector_engine_base_url.is_empty());
assert!(config.ark_character_video_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"); 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_provider, LlmProvider::OpenAiCompatible);
assert_eq!(config.llm_base_url, "https://llm.internal.example/v1"); assert_eq!(config.llm_base_url, "https://llm.internal.example/v1");
assert_eq!(config.llm_model, "internal-text-model"); assert_eq!(config.llm_model, "internal-text-model");
assert_eq!( // assert_eq!(
config.apimart_base_url, // config.apimart_base_url,
"https://responses.internal.example/v1" // "https://responses.internal.example/v1"
); // );
assert_eq!(config.apimart_image_request_timeout_ms, 190_000); // assert_eq!(config.apimart_image_request_timeout_ms, 190_000);
assert_eq!( assert_eq!(
config.vector_engine_base_url, config.vector_engine_base_url,
"https://vector.internal.example" "https://vector.internal.example"

View File

@@ -1378,8 +1378,9 @@ fn build_llm_client(config: &AppConfig) -> Result<Option<LlmClient>, AppStateIni
fn build_creative_agent_gpt5_client( fn build_creative_agent_gpt5_client(
config: &AppConfig, config: &AppConfig,
) -> Result<Option<LlmClient>, AppStateInitError> { ) -> Result<Option<LlmClient>, AppStateInitError> {
// 中文注释Apimart 已于 2026-06 弃用LLM 文本调用统一迁移到 VectorEngine。
let Some(api_key) = config let Some(api_key) = config
.apimart_api_key .vector_engine_api_key
.as_ref() .as_ref()
.map(|value| value.trim()) .map(|value| value.trim())
.filter(|value| !value.is_empty()) .filter(|value| !value.is_empty())
@@ -1387,9 +1388,15 @@ fn build_creative_agent_gpt5_client(
return Ok(None); 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( let llm_config = LlmConfig::new(
LlmProvider::OpenAiCompatible, LlmProvider::OpenAiCompatible,
config.apimart_base_url.clone(), base_url,
api_key.to_string(), api_key.to_string(),
platform_agent::CREATIVE_AGENT_GPT5_MODEL.to_string(), platform_agent::CREATIVE_AGENT_GPT5_MODEL.to_string(),
config.llm_request_timeout_ms, config.llm_request_timeout_ms,
@@ -1512,11 +1519,11 @@ mod tests {
} }
#[test] #[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(); let mut config = AppConfig::default();
config.llm_api_key = None; config.llm_api_key = None;
config.apimart_base_url = "https://api.apimart.test/v1".to_string(); config.vector_engine_base_url = "https://api.vectorengine.test".to_string();
config.apimart_api_key = Some("apimart-key".to_string()); config.vector_engine_api_key = Some("ve-key".to_string());
let state = AppState::new(config).expect("state should build"); let state = AppState::new(config).expect("state should build");
let client = state let client = state
@@ -1529,7 +1536,7 @@ mod tests {
); );
assert_eq!( assert_eq!(
client.config().responses_url(), client.config().responses_url(),
"https://api.apimart.test/v1/responses" "https://api.vectorengine.test/v1/responses"
); );
assert!(client.config().official_fallback()); assert!(client.config().official_fallback());
} }