MCPcopy Create free account
hub / github.com/TheSmallHanCat/flow2api / _normalize_openai_request

Function _normalize_openai_request

src/api/routes.py:423–454  ·  view source on GitHub ↗
(
    request: ChatCompletionRequest,
)

Source from the content-addressed store, hash-verified

421
422
423async def _normalize_openai_request(
424 request: ChatCompletionRequest,
425) -> NormalizedGenerationRequest:
426 if request.messages:
427 prompt, images, video_media_id = await _extract_prompt_and_images_from_openai_messages(
428 request.messages
429 )
430 if request.image and not images:
431 images.append(await _load_image_bytes_from_uri(request.image))
432 model = _resolve_request_model(request.model, request, images=images)
433 initial_image_count = len(images)
434 images = await _append_openai_reference_images(model, request.messages, images)
435 if len(images) != initial_image_count:
436 model = _resolve_request_model(request.model, request, images=images)
437 return NormalizedGenerationRequest(
438 model=model,
439 prompt=prompt,
440 images=images,
441 messages=request.messages,
442 video_media_id=video_media_id,
443 )
444
445 if request.contents:
446 gemini_request = GeminiGenerateContentRequest(
447 contents=_coerce_gemini_contents(request.contents),
448 generationConfig=request.generationConfig,
449 )
450 normalized = await _normalize_gemini_request(request.model, gemini_request)
451 normalized.messages = request.messages
452 return normalized
453
454 raise HTTPException(status_code=400, detail="Messages or contents cannot be empty")
455
456
457async def _normalize_gemini_request(