From f21bffe8c2d6d58e15b416f93ed0edbe4078f38c Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期二, 25 二月 2025 15:41:12 +0800 Subject: [PATCH] 优化 --- app/api/chat.py | 51 ++++++++++++++++++++++++++++++++++++++++++++------- app/config/env_conf/menu_conf.json | 4 ++-- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/app/api/chat.py b/app/api/chat.py index f6153df..16003e2 100644 --- a/app/api/chat.py +++ b/app/api/chat.py @@ -819,6 +819,8 @@ token = DfTokenDao(db).get_token_by_id(token_dict[chat_type]) # print(token) node_list = [] + workflow_list = [] + workflow_dict = {} if not token: await websocket.send_json({"message": "Invalid token", "type": "error"}) @@ -879,8 +881,7 @@ node_data["data"]["inputs"] = {} # print(node_data) node_list.append(node_data) - if data.get("event") == "node_started" or data.get( - "event") == "node_finished": # "event": "message_end" + if data.get("event") == "node_started": if "data" not in data or not data["data"]: # 淇℃伅杩囨护 logger.error("闈炴硶鏁版嵁--------------------") logger.error(data) @@ -897,16 +898,43 @@ else: message = answer.get("title", "") - result = {"message": message, "type": "system"} - # continue + result = {"message": message, "type": "system", "workflow": {"node_data": workflow_list}} + elif data.get("event") == "node_finished": + workflow_list.append({ + "title": data.get("data", {}).get("title", ""), + "status": data.get("data", {}).get("status", ""), + "created_at": data.get("data", {}).get("created_at", 0), + "finished_at": data.get("data", {}).get("finished_at", 0), + "node_type": data.get("data", {}).get("node_type", 0), + "elapsed_time": data.get("data", {}).get("elapsed_time", 0), + "error": data.get("data", {}).get("error", ""), + }) + if "data" not in data or not data["data"]: # 淇℃伅杩囨护 + logger.error("闈炴硶鏁版嵁--------------------") + logger.error(data) + continue + else: # 姝e父杈撳嚭 + answer = data.get("data", "") + if isinstance(answer, str): + logger.error("----------------鏈煡鏁版嵁--------------------") + logger.error(data) + continue + elif isinstance(answer, dict): + if answer.get("status") == "failed": + message = answer.get("error", "") + else: + message = answer.get("title", "") + + result = {"message": message, "type": "system", + "workflow": {"node_data": workflow_list}} elif data.get("event") == "message": # "event": "message_end" # 姝e父杈撳嚭 answer = data.get("answer", "") - result = {"message": answer, "type": "stream"} + result = {"message": answer, "type": "stream", "workflow": {"node_data": workflow_list}} elif data.get("event") == "error": # "event": "message_end" # 姝e父杈撳嚭 answer = data.get("message", "") - result = {"message": answer, "type": "system"} + result = {"message": answer, "type": "system", "workflow": {"node_data": workflow_list}} elif data.get("event") == "workflow_finished": answer = data.get("data", "") if isinstance(answer, str): @@ -938,9 +966,18 @@ logger.error("淇濆瓨dify鐨勪細璇濆紓甯革紒") logger.error(e) # await websocket.send_json(result) + workflow_dict = { + "node_data": workflow_list, + "total_tokens": data.get("data", {}).get("total_tokens", 0), + "created_at": data.get("data", {}).get("created_at", 0), + "finished_at": data.get("data", {}).get("finished_at", 0), + "status": data.get("data", {}).get("status", ""), + "error": data.get("data", {}).get("error", ""), + "elapsed_time": data.get("data", {}).get("elapsed_time", 0) + } continue elif data.get("event") == "message_end": - result = {"message": "", "type": "close"} + result = {"message": "", "type": "close","workflow": workflow_dict} else: continue diff --git a/app/config/env_conf/menu_conf.json b/app/config/env_conf/menu_conf.json index bdca3f7..c8fe8ff 100644 --- a/app/config/env_conf/menu_conf.json +++ b/app/config/env_conf/menu_conf.json @@ -192,8 +192,8 @@ "rank": 89, "dialog": [ { - "id": "a6c01e15-378e-4f56-bd8c-cde5155d37f1", - "chat_id": "a6c01e15-378e-4f56-bd8c-cde5155d37f1", + "id": "6912d21c-ede2-4c53-ac58-80192bc53878", + "chat_id": "6912d21c-ede2-4c53-ac58-80192bc53878", "chat_type": "documentIaEq", "agentType": 4 } -- Gitblit v1.8.0