23 lines
881 B
Python
23 lines
881 B
Python
import json
|
|
from .models import Message
|
|
from django.http import StreamingHttpResponse
|
|
|
|
def stream_generator(stream_response: bytes, conversation_id: str):
|
|
full_content = ''
|
|
for chunk in stream_response.iter_content(chunk_size=1024):
|
|
if chunk:
|
|
full_content += chunk.decode('utf-8')
|
|
try:
|
|
data = json.loads(full_content)
|
|
content = data.get("choices", [{}])[0].get("delta", {}).get("content", "")
|
|
Message.objects.create(
|
|
conversation_id=conversation_id,
|
|
content=content
|
|
)
|
|
yield f" data:{content}\n\n"
|
|
full_content = ''
|
|
except json.JSONDecodeError:
|
|
continue
|
|
return StreamingHttpResponse(stream_generator(stream_response, conversation_id), content_type='text/event-stream')
|
|
|