diff --git a/server-rs/crates/api-server/src/openai_image_generation.rs b/server-rs/crates/api-server/src/openai_image_generation.rs index a297eb560..03adbc863 100644 --- a/server-rs/crates/api-server/src/openai_image_generation.rs +++ b/server-rs/crates/api-server/src/openai_image_generation.rs @@ -2,8 +2,7 @@ use axum::http::StatusCode; use platform_image::{ DownloadedImage, GeneratedImages, ImageProvider, ImageProviderClient, ImageProviderSettings, NANOBANANA_2_MODEL, PlatformImageError, PlatformImageStatusHint, ReferenceImage, - VECTOR_ENGINE_PROVIDER, build_image_http_client, create_image_edit, - create_image_edit_with_references, create_image_edit_with_references_and_model, + VECTOR_ENGINE_PROVIDER, build_image_http_client, create_image_edit_with_references_and_model, create_image_generation_with_model, create_nanobanana_generate_content, missing_reference_images_error, resolve_image_provider, }; @@ -221,102 +220,6 @@ pub(crate) async fn create_openai_nanobanana_generate_content( .await } -pub(crate) async fn create_openai_image_edit( - _http_client: &reqwest::Client, - settings: &OpenAiImageSettings, - prompt: &str, - negative_prompt: Option<&str>, - size: &str, - reference_image: &OpenAiReferenceImage, - failure_context: &str, -) -> Result { - let started_at_micros = current_utc_micros(); - let request_payload = json!({ - "size": size, - "promptChars": prompt.chars().count(), - "negativePromptChars": negative_prompt.map(str::chars).map(Iterator::count), - "referenceImageCount": 1, - }); - let provider_client = settings.client_for_model(GPT_IMAGE_2_5_EDIT_MODEL); - let provider_settings = settings.provider_settings_for_model(GPT_IMAGE_2_5_EDIT_MODEL); - let result = create_image_edit( - provider_client.http_client(), - &provider_settings, - prompt, - negative_prompt, - size, - reference_image, - failure_context, - ) - .await; - map_platform_image_result( - settings, - result, - "image_edit", - failure_context, - request_payload, - started_at_micros, - ) - .await -} - -pub(crate) async fn create_openai_image_edit_with_references( - _http_client: &reqwest::Client, - settings: &OpenAiImageSettings, - prompt: &str, - negative_prompt: Option<&str>, - size: &str, - candidate_count: u32, - reference_images: &[OpenAiReferenceImage], - failure_context: &str, -) -> Result { - let started_at_micros = current_utc_micros(); - let request_payload = json!({ - "size": size, - "candidateCount": candidate_count, - "promptChars": prompt.chars().count(), - "negativePromptChars": negative_prompt.map(str::chars).map(Iterator::count), - "referenceImageCount": reference_images.len(), - }); - // 中文注释:先做本地参考图校验,避免 provider 客户端缺失时在校验前 panic。 - if reference_images.is_empty() { - return map_platform_image_result( - settings, - Err(missing_reference_images_error( - ImageProvider::Tiantoken, - failure_context, - )), - "image_edit_with_references", - failure_context, - request_payload, - started_at_micros, - ) - .await; - } - let provider_client = settings.client_for_model(GPT_IMAGE_2_5_EDIT_MODEL); - let provider_settings = settings.provider_settings_for_model(GPT_IMAGE_2_5_EDIT_MODEL); - let result = create_image_edit_with_references( - provider_client.http_client(), - &provider_settings, - prompt, - negative_prompt, - size, - candidate_count, - reference_images, - failure_context, - ) - .await; - map_platform_image_result( - settings, - result, - "image_edit_with_references", - failure_context, - request_payload, - started_at_micros, - ) - .await -} - #[allow(clippy::too_many_arguments)] pub(crate) async fn create_openai_image_edit_with_references_and_model( _http_client: &reqwest::Client, @@ -758,9 +661,10 @@ mod tests { }; let http_client = reqwest::Client::new(); - let result = create_openai_image_edit_with_references( + let result = create_openai_image_edit_with_references_and_model( &http_client, &settings, + GPT_IMAGE_2_5_EDIT_MODEL, "提示词", None, "1:1",