feat: optimize langgraph chat route

This commit is contained in:
martsforever
2025-09-10 22:02:59 +08:00
parent 6105740b31
commit 1036a124dd
+9 -4
View File
@@ -61,6 +61,11 @@ class ChatAgent:
def add_langgraph_chat_route(app: FastAPI): def add_langgraph_chat_route(app: FastAPI):
@app.post("/project/analysis")
async def project_analysis(body: dict):
project_name = body.get('name')
return {}
# 流式对话接口 # 流式对话接口
@app.post("/langgraph/stream") @app.post("/langgraph/stream")
async def langgraph_stream( async def langgraph_stream(
@@ -90,9 +95,9 @@ def add_langgraph_chat_route(app: FastAPI):
# chat_state = await ChatAgent.get_chat_state(thread_id) # chat_state = await ChatAgent.get_chat_state(thread_id)
# chat_history_list = chat_state.get('messages') # chat_history_list = chat_state.get('messages')
# has_emit_chunk 用来优化流式传输,避免将content为空的为AIMessageChunk发送给前端(实际上此时正在输出思考内容) # has_emit_message_id 用来优化流式传输,避免将content为空的为AIMessageChunk发送给前端(实际上此时正在输出思考内容)
# 第一次的时候输出,后续再输出content为空的AIMessageChunk不发送给前端 # 第一次的时候输出,后续再输出content为空的AIMessageChunk不发送给前端
has_emit_chunk = False has_emit_message_id = {}
async for chunk in graph.astream( async for chunk in graph.astream(
stream_input, stream_input,
@@ -114,7 +119,7 @@ def add_langgraph_chat_route(app: FastAPI):
# messages模式流式输出,此时 chunk[1][0] 为AIMessageChunk # messages模式流式输出,此时 chunk[1][0] 为AIMessageChunk
chunk_message = chunk[1][0] chunk_message = chunk[1][0]
if not chunk_message.content: if not chunk_message.content:
if has_emit_chunk: if has_emit_message_id.get(chunk_message.id):
continue continue
else: else:
# updates模式流式输出 # updates模式流式输出
@@ -132,7 +137,7 @@ def add_langgraph_chat_route(app: FastAPI):
"msg_type": chunk_message.type, "msg_type": chunk_message.type,
"msg_content": chunk_message.content, "msg_content": chunk_message.content,
} }
has_emit_chunk = True has_emit_message_id[chunk_message.id] = True
if isinstance(chunk_message, AIMessage): if isinstance(chunk_message, AIMessage):
if chunk_message.tool_calls: if chunk_message.tool_calls: