fix: n8n streaming no sequence bug (#1873)

This commit is contained in:
fdc310
2025-12-20 00:03:05 +08:00
committed by GitHub
parent 9780fd059c
commit 854b291c5a
+6 -3
View File
@@ -72,8 +72,9 @@ class N8nServiceAPIRunner(runner.RequestRunner):
provider_message.Message, None]: provider_message.Message, None]:
"""处理流式响应""" """处理流式响应"""
full_content = "" full_content = ""
message_idx = 0 chunk_idx = 0
is_final = False is_final = False
message_idx = 0
async for chunk in response.content.iter_chunked(1024): async for chunk in response.content.iter_chunked(1024):
if not chunk: if not chunk:
continue continue
@@ -81,16 +82,18 @@ class N8nServiceAPIRunner(runner.RequestRunner):
try: try:
data = json.loads(chunk) data = json.loads(chunk)
if data.get('type') == 'item' and 'content' in data: if data.get('type') == 'item' and 'content' in data:
message_idx += 1 chunk_idx += 1
content = data['content'] content = data['content']
full_content += content full_content += content
elif data.get('type') == 'end': elif data.get('type') == 'end':
is_final = True 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( yield provider_message.MessageChunk(
role='assistant', role='assistant',
content=full_content, content=full_content,
is_final=is_final, is_final=is_final,
msg_sequence=message_idx,
) )
except json.JSONDecodeError: except json.JSONDecodeError:
self.ap.logger.warning(f"Failed to parse final JSON line: {response.text()}") self.ap.logger.warning(f"Failed to parse final JSON line: {response.text()}")