Normalize OpenAI image form fields
This commit is contained in:
@@ -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"),
|
||||
|
||||
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user