From e5e2be29cfc033c976558a4d0b5fa73426818b90 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期三, 26 二月 2025 11:30:48 +0800 Subject: [PATCH] 增加系统信息修改 --- app/api/chat.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 46 insertions(+), 9 deletions(-) diff --git a/app/api/chat.py b/app/api/chat.py index f6153df..241815a 100644 --- a/app/api/chat.py +++ b/app/api/chat.py @@ -325,7 +325,7 @@ # token = get_dify_token(db, current_user.id) try: async def forward_to_dify(): - if chat_type == "imageTalk": + if agent.type == "imageTalk": token = DfTokenDao(db).get_token_by_id(IMAGE_TO_TEXT) if not token: await websocket.send_json({"message": "Invalid token", "type": "error"}) @@ -431,7 +431,7 @@ result = {"message": f"鍐呴儴閿欒锛� {e2}", "type": "close"} await websocket.send_json(result) print(f"Error process message of ragflow: {e2}") - elif chat_type == "reportWorkflow": + elif agent.type == "reportWorkflow": while True: receive_message = await websocket.receive_json() @@ -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 -- Gitblit v1.8.0