| | |
| | | try: |
| | | async def forward_to_ragflow(): |
| | | while True: |
| | | is_new = False |
| | | message = await websocket.receive_json() |
| | | print(f"Received from client {chat_id}: {message}") |
| | | chat_history = message.get('chatHistory', []) |
| | |
| | | if len(chat_history) == 0: |
| | | chat_history = await ragflow_service.get_session_history(token, chat_id) |
| | | if len(chat_history) == 0: |
| | | is_new = True |
| | | chat_history = await ragflow_service.set_session(token, agent_id, |
| | | message, chat_id, True) |
| | | # print("chat_history------------------------", chat_history) |
| | |
| | | result = {"message": f"内部错误: {e2}", "type": "close"} |
| | | await websocket.send_json(result) |
| | | print(f"Error process message of ragflow: {e2}") |
| | | dialog_chat_history = await ragflow_service.get_session_history(token, chat_id, 1) |
| | | await update_session_history(db, dialog_chat_history, current_user.id, is_new) |
| | | try: |
| | | dialog_chat_history = await ragflow_service.get_session_history(token, chat_id, 1) |
| | | await update_session_history(db, dialog_chat_history, current_user.id) |
| | | except Exception as e: |
| | | logger.error(e) |
| | | logger.error("-----------------保存ragflow的历史会话异常-----------------") |
| | | |
| | | # 启动任务处理客户端消息 |
| | | tasks = [ |
| | |
| | | excel_url = None |
| | | if file_name: |
| | | excel_url = f"/api/files/download/?agent_id=basic_question_talk&file_id={file_name}&file_type=word" |
| | | result = {"message": output, "type": "message", "file_url": excel_url} |
| | | result = {"message": output, "type": "message", "file_url": excel_url, "file_name":file_name} |
| | | try: |
| | | SessionService(db).update_session(chat_id, |
| | | message={"role": "assistant", "content": result}) |
| | | except Exception as e: |
| | | logger.error(e) |
| | | logger.error("-----------------返回数据--------------------") |
| | | await websocket.send_json(result | data) |
| | | await websocket.send_json(result) |
| | | except Exception as e2: |
| | | |
| | | result = {"message": f"内部错误: {e2}", "type": "close"} |
| | |
| | | f"&file_type={file_type}") |
| | | excel_url = build_file_url(excel_name, 'excel') |
| | | image_url = build_file_url(image_name, 'image') |
| | | try: |
| | | SessionService(db).update_session(chat_id, message={"content": output, "role": "assistant"}) |
| | | except Exception as e: |
| | | logger.error(f"Unexpected error when update_session: {e}") |
| | | if excel_url or data.get("e", ""): |
| | | try: |
| | | SessionService(db).update_session(chat_id, |
| | | message={ |
| | | "content": output, |
| | | "excel_url": excel_url, |
| | | "image_url": image_url, |
| | | "sql": data.get("sql", ""), |
| | | "code": data.get("code", ""), |
| | | "e": data.get("e", ""), |
| | | "role": "assistant"}) |
| | | except Exception as e: |
| | | logger.error(f"Unexpected error when update_session: {e}") |
| | | # 发送结果给客户端 |
| | | data["type"] = "message" |
| | | data["message"] = output |