From c893ffc1777678b78f8634df8b36a0ce3791b7cd Mon Sep 17 00:00:00 2001 From: fdc310 <82008029+fdc310@users.noreply.github.com> Date: Fri, 7 Nov 2025 15:17:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:coze-studio=20api=20done=20return=20data=20?= =?UTF-8?q?is=20none=20and=20event=20done=20char=20not=20=E2=80=A6=20(#175?= =?UTF-8?q?8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix:coze-studio api done return data is none and event done char not is "done" * Update pkg/provider/runners/cozeapi.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Junyan Qin (Chin) Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- libs/coze_server_api/client.py | 2 +- pkg/provider/runners/cozeapi.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/coze_server_api/client.py b/libs/coze_server_api/client.py index 67f53736..8d35a102 100644 --- a/libs/coze_server_api/client.py +++ b/libs/coze_server_api/client.py @@ -178,7 +178,7 @@ class AsyncCozeAPIClient: elif chunk.startswith("data:"): chunk_data = chunk.replace("data:", "", 1).strip() else: - yield {"event": chunk_type, "data": json.loads(chunk_data)} + yield {"event": chunk_type, "data": json.loads(chunk_data) if chunk_data else {}} # 处理本地部署时,接口返回的data为空值 except asyncio.TimeoutError: raise Exception(f"Coze API 流式请求超时 ({timeout}秒)") diff --git a/pkg/provider/runners/cozeapi.py b/pkg/provider/runners/cozeapi.py index 6d4f02a1..2a639cc3 100644 --- a/pkg/provider/runners/cozeapi.py +++ b/pkg/provider/runners/cozeapi.py @@ -152,6 +152,7 @@ class CozeAPIRunner(runner.RequestRunner): event_type = chunk.get('event') data = chunk.get('data', {}) + # Removed debug print statement to avoid cluttering logs in production if event_type == 'conversation.message.delta': # 收集内容 @@ -162,7 +163,7 @@ class CozeAPIRunner(runner.RequestRunner): if 'reasoning_content' in data: full_reasoning += data.get('reasoning_content', '') - elif event_type == 'done': + elif event_type.split(".")[-1] == 'done' : # 本地部署coze时,结束event不为done # 保存会话ID if 'conversation_id' in data: conversation_id = data.get('conversation_id') @@ -258,7 +259,7 @@ class CozeAPIRunner(runner.RequestRunner): stop_reasoning = True - elif event_type == 'done': + elif event_type.split(".")[-1] == 'done' : # 本地部署coze时,结束event不为done # 保存会话ID if 'conversation_id' in data: conversation_id = data.get('conversation_id')