From 854b291c5a5f409532b30af4857e8764455af8e1 Mon Sep 17 00:00:00 2001 From: fdc310 <82008029+fdc310@users.noreply.github.com> Date: Sat, 20 Dec 2025 00:03:05 +0800 Subject: [PATCH] fix: n8n streaming no sequence bug (#1873) --- src/langbot/pkg/provider/runners/n8nsvapi.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/langbot/pkg/provider/runners/n8nsvapi.py b/src/langbot/pkg/provider/runners/n8nsvapi.py index d23b18e3..5c565007 100644 --- a/src/langbot/pkg/provider/runners/n8nsvapi.py +++ b/src/langbot/pkg/provider/runners/n8nsvapi.py @@ -72,8 +72,9 @@ class N8nServiceAPIRunner(runner.RequestRunner): provider_message.Message, None]: """处理流式响应""" full_content = "" - message_idx = 0 + chunk_idx = 0 is_final = False + message_idx = 0 async for chunk in response.content.iter_chunked(1024): if not chunk: continue @@ -81,16 +82,18 @@ class N8nServiceAPIRunner(runner.RequestRunner): try: data = json.loads(chunk) if data.get('type') == 'item' and 'content' in data: - message_idx += 1 + chunk_idx += 1 content = data['content'] full_content += content elif data.get('type') == 'end': is_final = True - if is_final or message_idx % 8 == 0: + if is_final or chunk_idx % 8 == 0: + message_idx += 1 yield provider_message.MessageChunk( role='assistant', content=full_content, is_final=is_final, + msg_sequence=message_idx, ) except json.JSONDecodeError: self.ap.logger.warning(f"Failed to parse final JSON line: {response.text()}")