mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-11 11:49:50 +08:00
fix(gateway): support OpenAI image edit requests
This commit is contained in:
@@ -1577,6 +1577,47 @@ mod tests {
|
||||
assert!(provider_request_body.get("tools").is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn build_image_api_provider_edit_request_body_keeps_images_edit_shape() {
|
||||
let parts = request_parts("/v1/images/edits", Some("application/json"));
|
||||
let request = normalize_openai_image_request(
|
||||
&parts,
|
||||
&json!({
|
||||
"model": "gpt-image-2",
|
||||
"prompt": "replace the background",
|
||||
"image": "data:image/png;base64,aW1hZ2U=",
|
||||
"mask": "data:image/png;base64,bWFzaw==",
|
||||
"input_fidelity": "high",
|
||||
"output_format": "png",
|
||||
"response_format": "url",
|
||||
"user": "user-123"
|
||||
}),
|
||||
None,
|
||||
)
|
||||
.expect("edit request should normalize");
|
||||
|
||||
let provider_request_body =
|
||||
build_openai_image_api_provider_request_body(&request, Some("mapped-edit-model"));
|
||||
|
||||
assert_eq!(provider_request_body["model"], "mapped-edit-model");
|
||||
assert_eq!(provider_request_body["prompt"], "replace the background");
|
||||
assert_eq!(provider_request_body["input_fidelity"], "high");
|
||||
assert_eq!(provider_request_body["output_format"], "png");
|
||||
assert_eq!(provider_request_body["response_format"], "url");
|
||||
assert_eq!(provider_request_body["user"], "user-123");
|
||||
assert_eq!(
|
||||
provider_request_body["image"]["image_url"],
|
||||
"data:image/png;base64,aW1hZ2U="
|
||||
);
|
||||
assert_eq!(
|
||||
provider_request_body["mask"]["image_url"],
|
||||
"data:image/png;base64,bWFzaw=="
|
||||
);
|
||||
assert!(provider_request_body.get("input").is_none());
|
||||
assert!(provider_request_body.get("tools").is_none());
|
||||
assert!(provider_request_body.get("action").is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn chatgpt_web_accepts_1k_tier_and_1024_size() {
|
||||
let parts = request_parts("/v1/images/generations", Some("application/json"));
|
||||
@@ -1630,6 +1671,40 @@ mod tests {
|
||||
assert_eq!(body["output_format"], "png");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn chatgpt_web_accepts_openai_image_edit_requests() {
|
||||
let parts = request_parts("/v1/images/edits", Some("application/json"));
|
||||
let body = build_chatgpt_web_image_request_body(
|
||||
&parts,
|
||||
&json!({
|
||||
"model": "gpt-image-2",
|
||||
"prompt": "make the sky brighter",
|
||||
"image": {
|
||||
"b64_json": "aW1hZ2U=",
|
||||
"mime_type": "image/png"
|
||||
},
|
||||
"size": "1024x1024",
|
||||
"quality": "high",
|
||||
"response_format": "b64_json",
|
||||
"output_format": "png",
|
||||
"user": "user-123"
|
||||
}),
|
||||
None,
|
||||
)
|
||||
.expect("ChatGPT-Web edit request should pass");
|
||||
|
||||
assert_eq!(body["operation"], "edit");
|
||||
assert_eq!(body["model"], "gpt-image-2");
|
||||
assert_eq!(body["prompt"], "make the sky brighter");
|
||||
assert_eq!(body["size"], "1024x1024");
|
||||
assert_eq!(body["quality"], "high");
|
||||
assert_eq!(body["response_format"], "b64_json");
|
||||
assert_eq!(body["output_format"], "png");
|
||||
assert_eq!(body["user"], "user-123");
|
||||
assert_eq!(body["count"], 1);
|
||||
assert_eq!(body["images"], json!(["data:image/png;base64,aW1hZ2U="]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn chatgpt_web_rejects_oversized_resolution_or_size() {
|
||||
let parts = request_parts("/v1/images/generations", Some("application/json"));
|
||||
|
||||
Reference in New Issue
Block a user