Skip to content

Commit 4971898

Browse files
fix(image-gen): chunk base64 SSE to avoid 131072 byte aiter_lines limit
1 parent d2efbf1 commit 4971898

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

backend/privacy_proxy/app/main.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,8 +716,14 @@ async def proxy(request: Request, path: str):
716716
b64 = data.get("b64_json", "")
717717
img_url = f"data:image/png;base64,{b64}" if b64 else ""
718718
content = f"![image]({img_url})"
719-
sse = f'data: {{"choices":[{{"delta":{{"role":"assistant","content":{orjson.dumps(content).decode()}}},"index":0}}]}}\n\ndata: [DONE]\n\n'
720-
return StreamingResponse(iter([sse.encode()]), media_type="text/event-stream")
719+
CHUNK = 60000
720+
parts = [content[i:i+CHUNK] for i in range(0, len(content), CHUNK)]
721+
sse_events = []
722+
for i, part in enumerate(parts):
723+
delta = {"role": "assistant", "content": part} if i == 0 else {"content": part}
724+
sse_events.append(f'data: {{"choices":[{{"delta":{orjson.dumps(delta).decode()},"index":0}}]}}\n\n'.encode())
725+
sse_events.append(b"data: [DONE]\n\n")
726+
return StreamingResponse(iter(sse_events), media_type="text/event-stream")
721727

722728
if is_chat and body and not is_openai:
723729
async with httpx.AsyncClient() as client:

0 commit comments

Comments
 (0)