zhangxiao
2024-10-16 6279d3ca226943959774aabbff0f183e582220bf
app/api/chat.py
@@ -43,10 +43,23 @@
                while True:
                    message = await websocket.receive_json()
                    print(f"Received from client {chat_id}: {message}")
                    async for rag_response in ragflow_service.chat(token, chat_id, message["chatHistory"]):
                    chat_history = message.get('chatHistory', [])
                    if len(chat_history) == 0:
                        chat_history = await ragflow_service.set_session(token, agent_id, message["message"], chat_id, True)
                        if len(chat_history) == 0:
                            result = {"message": "内部错误:创建会话失败", "type": "close"}
                            await websocket.send_json(result)
                            continue
                    async for rag_response in ragflow_service.chat(token, chat_id, chat_history):
                        try:
                            print(f"Received from ragflow: {rag_response}")
                            if rag_response[:5] == "data:":
                                # 如果是,则截取掉前5个字符,并去除首尾空白符
                            json_str = rag_response[5:].strip()
                            else:
                                # 否则,保持原样
                                json_str = rag_response
                            json_data = json.loads(json_str)
                            data = json_data.get("data")
                            if data is True:  # 完成输出
@@ -55,7 +68,7 @@
                                answer = json_data.get("retmsg", json_data.get("retcode"))
                                result = {"message": "内部错误:" + answer, "type": "stream"}
                            else:  # 正常输出
                                answer = json_data.get("data", {}).get("answer", "")
                                answer = data.get("answer", "")
                                result = {"message": answer, "type": "stream"}
                            await websocket.send_json(result)
                            print(f"Forwarded to client {chat_id}: {result}")