Update chat.py
Browse files
chat.py
CHANGED
@@ -7,7 +7,7 @@ from sentence_transformers import SentenceTransformer
|
|
7 |
from sklearn.metrics.pairwise import cosine_similarity
|
8 |
import re
|
9 |
import json
|
10 |
-
|
11 |
from auth import get_current_user
|
12 |
from database import get_db
|
13 |
from config import HF_TOKEN, MAX_TOKENS, EMBEDDING_MODEL
|
@@ -343,16 +343,12 @@ async def chat(request: Request):
|
|
343 |
if chunk.choices and chunk.choices[0].delta.content:
|
344 |
content = chunk.choices[0].delta.content
|
345 |
collected_response += content
|
346 |
-
chunk_buffer += content
|
347 |
-
chunk_count += 1
|
348 |
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
if chunk_buffer:
|
355 |
-
yield f"data: {json.dumps({'content': chunk_buffer})}\n\n"
|
356 |
|
357 |
if collected_response.endswith((".", "!", "?")) == False and len(collected_response) > 500:
|
358 |
suffix = "\n\n(Note: Ma réponse a été limitée par des contraintes de taille. N'hésitez pas à me demander de poursuivre si vous souhaitez plus d'informations.)"
|
@@ -401,5 +397,9 @@ async def chat(request: Request):
|
|
401 |
|
402 |
return StreamingResponse(
|
403 |
generate_stream(),
|
404 |
-
media_type="text/event-stream"
|
405 |
-
|
|
|
|
|
|
|
|
|
|
7 |
from sklearn.metrics.pairwise import cosine_similarity
|
8 |
import re
|
9 |
import json
|
10 |
+
import asyncio
|
11 |
from auth import get_current_user
|
12 |
from database import get_db
|
13 |
from config import HF_TOKEN, MAX_TOKENS, EMBEDDING_MODEL
|
|
|
343 |
if chunk.choices and chunk.choices[0].delta.content:
|
344 |
content = chunk.choices[0].delta.content
|
345 |
collected_response += content
|
|
|
|
|
346 |
|
347 |
+
# Envoyer chaque token individuellement sans buffering
|
348 |
+
yield f"data: {json.dumps({'content': content})}\n\n"
|
349 |
+
|
350 |
+
# Petit sleep pour éviter le buffering par le serveur ASGI
|
351 |
+
await asyncio.sleep(0)
|
|
|
|
|
352 |
|
353 |
if collected_response.endswith((".", "!", "?")) == False and len(collected_response) > 500:
|
354 |
suffix = "\n\n(Note: Ma réponse a été limitée par des contraintes de taille. N'hésitez pas à me demander de poursuivre si vous souhaitez plus d'informations.)"
|
|
|
397 |
|
398 |
return StreamingResponse(
|
399 |
generate_stream(),
|
400 |
+
media_type="text/event-stream",
|
401 |
+
headers={
|
402 |
+
"Cache-Control": "no-cache, no-transform",
|
403 |
+
"X-Accel-Buffering": "no" # Important pour Nginx
|
404 |
+
}
|
405 |
+
)
|