Spaces:
Running
Running
Update apis/chat_api.py
Browse files- apis/chat_api.py +16 -0
apis/chat_api.py
CHANGED
|
@@ -5,6 +5,7 @@ import json
|
|
| 5 |
|
| 6 |
|
| 7 |
from fastapi import FastAPI
|
|
|
|
| 8 |
from fastapi.encoders import jsonable_encoder
|
| 9 |
from fastapi.responses import JSONResponse, StreamingResponse
|
| 10 |
import uuid
|
|
@@ -191,6 +192,12 @@ class ChatAPIApp:
|
|
| 191 |
summary="stream translated text (OpenAI-compatible SSE)",
|
| 192 |
)(self.translate_stream)
|
| 193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
self.app.post(
|
| 195 |
prefix + "/translate/chat/stream",
|
| 196 |
summary="stream translated text from OpenAI-style chat payload",
|
|
@@ -257,6 +264,15 @@ class ChatAPIApp:
|
|
| 257 |
|
| 258 |
return StreamingResponse(event_generator(), media_type="text/event-stream")
|
| 259 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 260 |
def translate_chat_stream(self, item: ChatTranslateStreamItem):
|
| 261 |
# Extract latest user content
|
| 262 |
input_text = None
|
|
|
|
| 5 |
|
| 6 |
|
| 7 |
from fastapi import FastAPI
|
| 8 |
+
from fastapi import Request
|
| 9 |
from fastapi.encoders import jsonable_encoder
|
| 10 |
from fastapi.responses import JSONResponse, StreamingResponse
|
| 11 |
import uuid
|
|
|
|
| 192 |
summary="stream translated text (OpenAI-compatible SSE)",
|
| 193 |
)(self.translate_stream)
|
| 194 |
|
| 195 |
+
# Raw-text friendly streaming endpoint to avoid JSON escaping issues
|
| 196 |
+
self.app.post(
|
| 197 |
+
prefix + "/translate/stream/raw",
|
| 198 |
+
summary="stream translated text (plain text body; set ?to_language=am)",
|
| 199 |
+
)(self.translate_stream_raw)
|
| 200 |
+
|
| 201 |
self.app.post(
|
| 202 |
prefix + "/translate/chat/stream",
|
| 203 |
summary="stream translated text from OpenAI-style chat payload",
|
|
|
|
| 264 |
|
| 265 |
return StreamingResponse(event_generator(), media_type="text/event-stream")
|
| 266 |
|
| 267 |
+
async def translate_stream_raw(self, request: Request, to_language: str = "am"):
|
| 268 |
+
body_bytes = await request.body()
|
| 269 |
+
input_text = body_bytes.decode("utf-8", errors="ignore")
|
| 270 |
+
payload = self.TranslateCompletionsPostItem(
|
| 271 |
+
to_language=to_language,
|
| 272 |
+
input_text=input_text,
|
| 273 |
+
)
|
| 274 |
+
return self.translate_stream(payload)
|
| 275 |
+
|
| 276 |
def translate_chat_stream(self, item: ChatTranslateStreamItem):
|
| 277 |
# Extract latest user content
|
| 278 |
input_text = None
|