Compare commits
2 Commits
97ff629d86
...
786e7c2a07
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
786e7c2a07 | ||
|
|
b8368068ae |
@ -155,6 +155,7 @@ async def enhanced_generate_stream_response(
|
|||||||
|
|
||||||
# 输出控制器:确保 preamble 先输出,然后是 agent stream
|
# 输出控制器:确保 preamble 先输出,然后是 agent stream
|
||||||
preamble_output_done = False
|
preamble_output_done = False
|
||||||
|
last_yield_time = time.time()
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
@ -165,6 +166,7 @@ async def enhanced_generate_stream_response(
|
|||||||
# 立即输出 preamble 内容
|
# 立即输出 preamble 内容
|
||||||
if item_data:
|
if item_data:
|
||||||
yield item_data
|
yield item_data
|
||||||
|
last_yield_time = time.time()
|
||||||
preamble_output_done = True
|
preamble_output_done = True
|
||||||
|
|
||||||
elif item_type == "preamble_done":
|
elif item_type == "preamble_done":
|
||||||
@ -175,6 +177,7 @@ async def enhanced_generate_stream_response(
|
|||||||
# Agent stream 内容,需要等待 preamble 输出完成
|
# Agent stream 内容,需要等待 preamble 输出完成
|
||||||
if preamble_output_done:
|
if preamble_output_done:
|
||||||
yield item_data
|
yield item_data
|
||||||
|
last_yield_time = time.time()
|
||||||
else:
|
else:
|
||||||
# preamble 还没输出,先放回队列
|
# preamble 还没输出,先放回队列
|
||||||
await output_queue.put((item_type, item_data))
|
await output_queue.put((item_type, item_data))
|
||||||
@ -191,9 +194,11 @@ async def enhanced_generate_stream_response(
|
|||||||
if all(task.done() for task in [preamble_task_handle, agent_task_handle]):
|
if all(task.done() for task in [preamble_task_handle, agent_task_handle]):
|
||||||
# 所有任务都完成了,退出循环
|
# 所有任务都完成了,退出循环
|
||||||
break
|
break
|
||||||
# 发送空内容心跳包保持连接活跃,防止 nginx/客户端超时断开
|
# 15秒无消息输出时才发送心跳包保持连接活跃
|
||||||
heartbeat_chunk = create_stream_chunk(f"chatcmpl-heartbeat", config.model_name, "")
|
if time.time() - last_yield_time >= 15:
|
||||||
yield f"data: {json.dumps(heartbeat_chunk, ensure_ascii=False)}\n\n"
|
heartbeat_chunk = create_stream_chunk(f"chatcmpl-heartbeat", config.model_name, "")
|
||||||
|
yield f"data: {json.dumps(heartbeat_chunk, ensure_ascii=False)}\n\n"
|
||||||
|
last_yield_time = time.time()
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# 发送结束标记
|
# 发送结束标记
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user