mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-31 14:47:13 +00:00
fix: n8n streaming no sequence bug (#1873)
This commit is contained in:
@@ -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()}")
|
||||||
|
|||||||
Reference in New Issue
Block a user