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

Function _iterate_gemini_stream

src/api/routes.py:743–788  ·  view source on GitHub ↗
(
    normalized: NormalizedGenerationRequest,
    response_model: str,
    base_url_override: Optional[str] = None,
)

Source from the content-addressed store, hash-verified

741
742
743async def _iterate_gemini_stream(
744 normalized: NormalizedGenerationRequest,
745 response_model: str,
746 base_url_override: Optional[str] = None,
747):
748 handler = _ensure_generation_handler()
749 async for chunk in handler.handle_generation(
750 model=normalized.model,
751 prompt=normalized.prompt,
752 images=normalized.images if normalized.images else None,
753 stream=True,
754 base_url_override=base_url_override,
755 video_media_id=normalized.video_media_id,
756 ):
757 if chunk.startswith("data: "):
758 payload_text = chunk[6:].strip()
759 if payload_text == "[DONE]":
760 continue
761 payload = _parse_handler_result(payload_text)
762 if "error" in payload:
763 yield (
764 f"data: {json.dumps(_build_gemini_error_payload(_get_error_status_code(payload), payload['error'].get('message', 'Generation failed')), ensure_ascii=False)}\n\n"
765 )
766 return
767
768 event = await _convert_openai_stream_chunk_to_gemini_event(
769 payload,
770 response_model,
771 )
772 if event:
773 yield event
774 continue
775
776 payload = _parse_handler_result(chunk)
777 if "error" in payload:
778 yield (
779 f"data: {json.dumps(_build_gemini_error_payload(_get_error_status_code(payload), payload['error'].get('message', 'Generation failed')), ensure_ascii=False)}\n\n"
780 )
781 return
782
783 event = await _convert_openai_stream_chunk_to_gemini_event(
784 payload,
785 response_model,
786 )
787 if event:
788 yield event
789
790
791@router.get("/v1/models")

Callers 1

stream_generate_contentFunction · 0.85

Tested by

no test coverage detected