Normalize OpenAI image form fields

This commit is contained in:
Mikei386
2026-09-21 11:38:28 +02:00
parent a65affe30a
commit 1aec6cd4ac
2 changed files with 21 additions and 0 deletions
+7
View File
@@ -156,6 +156,11 @@ class ImageEditMultipartTests(unittest.TestCase):
'Content-Disposition: form-data; name="prompt"\r\n\r\n'
"Nur die Farbe ändern\r\n"
).encode(),
(
f"--{boundary}\r\n"
'Content-Disposition: form-data; name="n"\r\n\r\n'
"1\r\n"
).encode(),
(
f"--{boundary}\r\n"
'Content-Disposition: form-data; name="image[]"; filename="a.png"\r\n'
@@ -174,6 +179,8 @@ class ImageEditMultipartTests(unittest.TestCase):
self.assertEqual(fields["model"], "Qwen-Image-2.1-int8")
self.assertEqual(fields["prompt"], "Nur die Farbe ändern")
normalized = handler._normalize_image_multipart_fields(fields)
self.assertEqual(normalized["n"], 1)
self.assertEqual(
files,
[("image[]", "a.png", b"PNG-A"),
+14
View File
@@ -2229,6 +2229,7 @@ class Handler(BaseHTTPRequestHandler):
try:
body = self._read_body()
files, data = self._parse_multipart_parts(body, content_type)
data = self._normalize_image_multipart_fields(data)
except ValueError as exc:
self._send_error(400, str(exc),
"invalid_request_error", "invalid_multipart")
@@ -2733,6 +2734,19 @@ class Handler(BaseHTTPRequestHandler):
return files, fields
@staticmethod
def _normalize_image_multipart_fields(fields: dict[str, str]) -> dict:
"""Konvertiert OpenAI-Formularzahlen in die JSON-API-Typen."""
normalized: dict = dict(fields)
for key in ("n", "steps"):
if key not in normalized:
continue
try:
normalized[key] = int(normalized[key])
except (TypeError, ValueError) as exc:
raise ValueError(f"'{key}' muss eine Ganzzahl sein") from exc
return normalized
def _parse_multipart(self, data: bytes, content_type: str
) -> tuple[bytes, str, dict]:
"""Kompatibler Einzeldatei-Wrapper für den STT-Pfad."""