From a01c838f32839349c243f586fb003333899cab81 Mon Sep 17 00:00:00 2001 From: zhaoqingang <zhaoqg0118@163.com> Date: 星期一, 06 一月 2025 17:54:22 +0800 Subject: [PATCH] yohua --- app/api/chat.py | 66 +++++++++++++++++++------------- app/api/agent.py | 1 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/app/api/agent.py b/app/api/agent.py index 786eb2f..f3ea907 100644 --- a/app/api/agent.py +++ b/app/api/agent.py @@ -244,6 +244,7 @@ "total_tokens": 0, # 鑺辫垂token鏁� "created_at": 0, # 寮�濮嬫椂闂� "finished_at": 0, # 缁撴潫鏃堕棿 + "elapsed_time": 0, # 缁撴潫鏃堕棿 "status": "succeeded", # 宸ヤ綔娴佺姸鎬� "error": "", # 閿欒鏃ュ織 } diff --git a/app/api/chat.py b/app/api/chat.py index 95c5559..d223c69 100644 --- a/app/api/chat.py +++ b/app/api/chat.py @@ -477,6 +477,7 @@ "upload_file_id": "" }) inputs_list = [] + is_next = 0 if workflow_type == 1: inputs["input_files"] = files inputs["Completion_of_main_indicators"] = title @@ -511,13 +512,19 @@ if not token: await websocket.send_json( {"message": "Invalid token document_to_report", "type": "error"}) - inputs_list.append({"inputs": inputs, "token": token, "workflow_type": 3}) + inputs_list.append({"inputs": inputs1, "token": token, "workflow_type": 3}) # print(inputs_list) - for input in inputs_list: + for idx, input in enumerate(inputs_list): + # print(input) + if idx < len(inputs_list)-1: + is_next = 1 + else: + is_next = 0 i = input["inputs"] if "file_list" in i: i["file_list"] = files + # print(i) node_list = [] complete_response = "" workflow_list = [] @@ -571,13 +578,13 @@ if isinstance(answer, str): logger.error("----------------鏈煡鏁版嵁--------------------") logger.error(data) - result = {"message": "", "type": "close", "download_url": ""} + result = {"message": "", "type": "close", "download_url": "", "is_next": is_next} elif isinstance(answer, dict): download_url = "" outputs = answer.get("outputs", {}) if outputs: message = outputs.get("output", "") - download_url = outputs.get("download_url", "").rstrip("/") + download_url = outputs.get("download_url", "") else: message = answer.get("error", "") if download_url: @@ -606,6 +613,7 @@ "download_url": download_url}}, conversation_id=data.get( "conversation_id")) + node_list = [] except Exception as e: logger.error("淇濆瓨dify鐨勪細璇濆紓甯革紒") logger.error(e) @@ -615,7 +623,7 @@ logger.error(e) logger.error("杩斿洖瀹㈡埛绔秷鎭紓甯�!") - result = {"message": "", "type": "close", "workflow": workflow_dict} + result = {"message": "", "type": "close", "workflow": workflow_dict, "is_next": is_next} else: @@ -637,6 +645,7 @@ image_list = [] # print(inputs) complete_response = "" + answer_str = "" async for rag_response in dify_service.chat(input["token"], current_user.id, title_query, [], conversation_id, i): # print(rag_response) @@ -652,6 +661,7 @@ try: data = json.loads(complete_response) node_list.append(data) + # print(data) complete_response = "" if data.get("event") == "node_started": # "event": "message_end" if "data" not in data or not data["data"]: # 淇℃伅杩囨护 @@ -680,44 +690,46 @@ "error":data.get("data", {}).get("error", ""), }) elif data.get("event") == "message": - message = data.get("answer", "") + answer_str = data.get("answer", "") # try: # msg_dict = json.loads(answer) # message = msg_dict.get("output", "") # except Exception as e: # print(e) # continue - result = {"message": message, "type": "message", + result = {"message": answer_str, "type": "message", "download_url": ""} - try: - SessionService(db).update_session(chat_id, - message={"role": "assistant", - "content": { - "answer": message, - "node_list": node_list, - "download_url": ""}}, - conversation_id=data.get( - "conversation_id")) - except Exception as e: - logger.error("淇濆瓨dify鐨勪細璇濆紓甯革紒") - logger.error(e) + # try: # await websocket.send_json(result) # except Exception as e: # logger.error(e) # logger.error("杩斿洖瀹㈡埛绔秷鎭紓甯�!") - elif data.get("event") == "workflow_finished": + elif data.get("event") == "workflow_finished": workflow_dict = { "node_data": workflow_list, - "total_tokens": answer.get("total_tokens", 0), - "created_at": answer.get("created_at", 0), - "finished_at": answer.get("finished_at", 0), - "status": answer.get("status", ""), - "error": answer.get("error", ""), - "elapsed_time": answer.get("elapsed_time", 0) + "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) } + try: + SessionService(db).update_session(chat_id, + message={"role": "assistant", + "content": { + "answer": answer_str, + "node_list": node_list, + "download_url": ""}}, + conversation_id=data.get( + "conversation_id")) + node_list = [] + except Exception as e: + logger.error("淇濆瓨dify鐨勪細璇濆紓甯革紒") + logger.error(e) elif data.get("event") == "message_end": - result = {"message": "", "type": "close", "workflow": workflow_dict} + result = {"message": "", "type": "close", "workflow": workflow_dict, "is_next": is_next} else: continue try: -- Gitblit v1.8.0