diff --git a/api/apps/sdk/session.py b/api/apps/sdk/session.py index d29666adf..fb3f26d00 100644 --- a/api/apps/sdk/session.py +++ b/api/apps/sdk/session.py @@ -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("") token_used += len(incremental) - if incremental.endswith(""): - response_data_len = len(incremental.rstrip("")) - 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: