|
@@ -313,35 +313,50 @@ async def handle_client(websocket: WebSocket,
|
|
|
conversation_id = session.conversation_id
|
|
conversation_id = session.conversation_id
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.error(e)
|
|
logger.error(e)
|
|
|
- complete_response = ""
|
|
|
|
|
|
|
+ # complete_response = ""
|
|
|
|
|
+ answer_str = ""
|
|
|
async for rag_response in dify_service.chat(token, current_user.id, question, upload_file_id, conversation_id):
|
|
async for rag_response in dify_service.chat(token, current_user.id, question, upload_file_id, conversation_id):
|
|
|
- logger.error("=============================================")
|
|
|
|
|
- logger.error(rag_response)
|
|
|
|
|
|
|
+ print("=============================================")
|
|
|
|
|
+ print(rag_response)
|
|
|
try:
|
|
try:
|
|
|
if rag_response[:5] == "data:":
|
|
if rag_response[:5] == "data:":
|
|
|
# 如果是,则截取掉前5个字符,并去除首尾空白符
|
|
# 如果是,则截取掉前5个字符,并去除首尾空白符
|
|
|
- text = rag_response[5:].strip()
|
|
|
|
|
|
|
+ complete_response = rag_response[5:].strip()
|
|
|
else:
|
|
else:
|
|
|
# 否则,保持原样
|
|
# 否则,保持原样
|
|
|
- text = rag_response
|
|
|
|
|
- complete_response += text
|
|
|
|
|
|
|
+ complete_response = rag_response
|
|
|
|
|
+ # complete_response += text
|
|
|
try:
|
|
try:
|
|
|
data = json.loads(complete_response)
|
|
data = json.loads(complete_response)
|
|
|
|
|
+ complete_response = ""
|
|
|
# data = json_data.get("data")
|
|
# data = json_data.get("data")
|
|
|
- if "answer" not in data or not isinstance(data["answer"], dict): # 信息过滤
|
|
|
|
|
- logger.error("非法数据--------------------")
|
|
|
|
|
- logger.error(data)
|
|
|
|
|
- continue
|
|
|
|
|
- else: # 正常输出
|
|
|
|
|
- answer = data.get("answer", "")
|
|
|
|
|
|
|
+ if data.get("event") == "agent_message":# "event": "message_end"
|
|
|
|
|
+ if "answer" not in data or not data["answer"]: # 信息过滤
|
|
|
|
|
+ logger.error("非法数据--------------------")
|
|
|
|
|
+ logger.error(data)
|
|
|
|
|
+
|
|
|
|
|
+ continue
|
|
|
|
|
+ else: # 正常输出
|
|
|
|
|
+ answer = data.get("answer", "")
|
|
|
|
|
+ if isinstance(answer, str):
|
|
|
|
|
+ answer_str += answer
|
|
|
|
|
|
|
|
- result = {"message": answer, "type": "message"}
|
|
|
|
|
|
|
+ elif isinstance(answer, dict):
|
|
|
|
|
+ logger.error("未知数据体:0---------------------------------")
|
|
|
|
|
+ logger.error(answer)
|
|
|
|
|
+ answer_str += answer.get("action_input", "")
|
|
|
|
|
+ continue
|
|
|
|
|
+
|
|
|
|
|
+ elif data.get("event") == "message_end":
|
|
|
|
|
+ result = {"message": answer_str, "type": "close"}
|
|
|
try:
|
|
try:
|
|
|
SessionService(db).update_session(chat_id,
|
|
SessionService(db).update_session(chat_id,
|
|
|
message={"role": "assistant", "content": data, "conversation_id": data.get("conversation_id")})
|
|
message={"role": "assistant", "content": data, "conversation_id": data.get("conversation_id")})
|
|
|
except Exception as e:
|
|
except Exception as e:
|
|
|
logger.error("保存dify的会话异常!")
|
|
logger.error("保存dify的会话异常!")
|
|
|
logger.error(e)
|
|
logger.error(e)
|
|
|
|
|
+ else:
|
|
|
|
|
+ continue
|
|
|
await websocket.send_json(result)
|
|
await websocket.send_json(result)
|
|
|
complete_response = ""
|
|
complete_response = ""
|
|
|
except json.JSONDecodeError as e:
|
|
except json.JSONDecodeError as e:
|