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')