|
|
|
@@ -259,7 +259,7 @@ def chat_completion_openai_like(tenant_id, chat_id): |
|
|
|
# The choices field on the last chunk will always be an empty array []. |
|
|
|
def streamed_response_generator(chat_id, dia, msg): |
|
|
|
token_used = 0 |
|
|
|
should_split_index = 0 |
|
|
|
answer_cache = "" |
|
|
|
response = { |
|
|
|
"id": f"chatcmpl-{chat_id}", |
|
|
|
"choices": [ |
|
|
|
@@ -285,13 +285,9 @@ def chat_completion_openai_like(tenant_id, chat_id): |
|
|
|
try: |
|
|
|
for ans in chat(dia, msg, True): |
|
|
|
answer = ans["answer"] |
|
|
|
incremental = answer[should_split_index:] |
|
|
|
incremental = answer.replace(answer_cache, "", 1) |
|
|
|
answer_cache = answer.rstrip("</think>") |
|
|
|
token_used += len(incremental) |
|
|
|
if incremental.endswith("</think>"): |
|
|
|
response_data_len = len(incremental.rstrip("</think>")) |
|
|
|
else: |
|
|
|
response_data_len = len(incremental) |
|
|
|
should_split_index += response_data_len |
|
|
|
response["choices"][0]["delta"]["content"] = incremental |
|
|
|
yield f"data:{json.dumps(response, ensure_ascii=False)}\n\n" |
|
|
|
except Exception as e: |