diff --git a/server-rs/crates/platform-image/src/image_provider/runtime/mod.rs b/server-rs/crates/platform-image/src/image_provider/runtime/mod.rs index 63bf83afb..b78e51476 100644 --- a/server-rs/crates/platform-image/src/image_provider/runtime/mod.rs +++ b/server-rs/crates/platform-image/src/image_provider/runtime/mod.rs @@ -12,6 +12,7 @@ pub use audit::PlatformImageFailureAudit; pub(crate) use audit::build_failure_audit; pub(crate) use budget::{effective_request_timeout_ms, request_budget_exhausted_error}; pub use error::{PlatformImageError, PlatformImageStatusHint, missing_reference_images_error}; +pub(crate) use executor::ensure_provider_matches_model; pub use executor::{ create_image_edit, create_image_edit_with_references, create_image_edit_with_references_and_model, create_image_generation, diff --git a/server-rs/crates/platform-image/src/raw_image_edit/mod.rs b/server-rs/crates/platform-image/src/raw_image_edit/mod.rs index ab7a93c3b..96928bf8d 100644 --- a/server-rs/crates/platform-image/src/raw_image_edit/mod.rs +++ b/server-rs/crates/platform-image/src/raw_image_edit/mod.rs @@ -12,7 +12,8 @@ use crate::image_provider::{ images_edit_url, runtime::{ ImageProvider, ImageProviderSettings, PlatformImageError, build_failure_audit, - effective_request_timeout_ms, request_budget_exhausted_error, truncate_raw, + effective_request_timeout_ms, ensure_provider_matches_model, + request_budget_exhausted_error, truncate_raw, }, }; @@ -125,6 +126,9 @@ pub async fn create_raw_image_edit( failure_context: &str, ) -> Result { let provider_label = settings.provider.as_str(); + // 中文注释:raw edit 只发送 GPT Image 2.5 编辑 concrete model,先按共享白名单校验 + // provider,避免把 Tiantoken 的模型发到 VectorEngine 端点(或反之)。 + ensure_provider_matches_model(settings, GPT_IMAGE_2_5_EDIT_MODEL, failure_context)?; validate_raw_image_edit_dimensions(options.width, options.height) .map_err(|error| invalid_input(settings.provider, failure_context, error.to_string()))?; let url = images_edit_url(settings);