探索DataLoom的智能问数功能:简化数据库查询
在数据驱动的决议订定中,数据库查询是获取洞察的关键步骤。但是,传统的数据库查询方法往往复杂且技能性强,这限定了非技能用户的利用。DataLoom的智能问数功能正是为了解决这一问题而设计的。本文将详细介绍这一功能,并展示其背后的代码实现。
DataLoom简介
DataLoom是一个创新的数据管理平台,旨在通过提供直观的界面和强盛的后端处置惩罚能力,简化数据查询和分析过程。我们的目标是让数据查询变得简单,让每个人都能轻松地从数据中获取洞察。
智能问数功能
智能问数是DataLoom的核心功能之一,它答应用户通过自然语言输入查询请求,系统会自动将其转换为SQL语句并实验。这一功能极大地降低了技能门槛,使得即使是没有数据库配景的用户也能快速获取所需数据。
核心流程图
核心代码
ChatForSQLRequest类
- @Data
- public class ChatForSQLRequest {
-
- /**
- * 模型Id
- */
- private Long chatId;
- /**
- * 询问的数据
- */
- private String question;
- }
复制代码 这是一个简单的Java Bean类,用于封装用户请求智能问数时发送的数据。它包含两个属性:chatId(模子Id)和question(询问的数据)。
userChatForSQL方法
- public void userChatForSQL(ChatForSQLRequest chatForSQLRequest, User loginUser) {
-
- Long chatId = chatForSQLRequest.getChatId();
- String question = chatForSQLRequest.getQuestion();
- // 1. 获取模型ID
- Chat chat = chatService.getById(chatId);
- ThrowUtils.throwIf(chat == null, ErrorCode.PARAMS_ERROR, "不存在该助手");
- // 2. 获取数据源所有的元数据
- Long datasourceId = chat.getDatasourceId();
- List<AskAIWithDataTablesAndFieldsRequest> dataTablesAndFieldsRequests = getAskAIWithDataTablesAndFieldsRequests(loginUser, datasourceId);
- // 3. 构造请求AI的输入
- String input = buildAskAISQLInput(dataTablesAndFieldsRequests, question);
- // 4. 持久化消息
- ChatHistory user_q = new ChatHistory();
- user_q.setChatRole(ChatHistoryRoleEnum.USER.getValue());
- user_q.setChatId(chatId);
- user_q.setModelId(chat.getModelId());
- user_q.setContent(question);
- chatHistoryService.save(user_q);
- // 5. 利用webSocket发送消息通知开始
- AskSQLWebSocketMsgVO askSQLWebSocketMsgVO = new AskSQLWebSocketMsgVO();
- askSQLWebSocketMsgVO.setType("start");
- askSQLWebSocket.sendOneMessage(loginUser.getId(), askSQLWebSocketMsgVO);
- // 6. 询问AI,获取返回的SQL
- String sql = aiManager.doAskSQLWithKimi(input, LIMIT_RECORDS);
- // 7. 执行SQL,并得到返回的结果
- QueryAICustomSQLVO queryAICustomSQLVO = null;
- try {
-
- queryAICustomSQLVO = buildUserChatForSqlVO(datasourceId, sql);
- } catch (Exception e) {
- // 防止异常发生,前端还继续等待接收数据
- if (e instanceof SQLException) {
- // 记录异常
- queryAICustomSQLVO = new QueryAICustomSQLVO();
- queryAICustomSQLVO
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |