Spaces:
Sleeping
Sleeping
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
|