diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java index 7818fdbf7..14ce1d336 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/conversation/vo/ChatReqVO.java @@ -26,5 +26,5 @@ public class ChatReqVO { @Schema(description = "系统提示语") private String systemPrompt; @Schema(description = "知识库id") - private Long knowledgeId; + private Long knowledge; } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java index e7b3a9925..65cdc7daf 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/conversation/ConversationServiceImpl.java @@ -28,6 +28,7 @@ import cn.iocoder.yudao.module.llm.service.http.vo.*; import cn.iocoder.yudao.module.llm.service.prompttemplates.PromptTemplatesService; import com.alibaba.excel.util.StringUtils; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import org.springframework.data.redis.core.StringRedisTemplate; @@ -182,31 +183,11 @@ public class ConversationServiceImpl implements ConversationService { List messages = new ArrayList<>(); - if(chatReqVO.getSystemPrompt() != null && !chatReqVO.getSystemPrompt().equals("")){ - ModelCompletionsReqVO.ModelCompletionsMessage message = new ModelCompletionsReqVO.ModelCompletionsMessage(); - message.setRole("system"); - message.setContent(chatReqVO.getSystemPrompt()); - messages.add(message); - } - - // TODO: 聊天推理 - List messageHistoryList = stringRedisTemplate.opsForList().range(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), 0, -1); - if (messageHistoryList != null && !messageHistoryList.isEmpty()) { - for (String messageHistory : messageHistoryList) { - messages.add(JsonUtils.parseObject(messageHistory, ModelCompletionsReqVO.ModelCompletionsMessage.class)); - } - } - - ModelCompletionsReqVO.ModelCompletionsMessage message = new ModelCompletionsReqVO.ModelCompletionsMessage(); - message.setRole("user"); - message.setContent(chatReqVO.getPrompt()); - - messages.add(message); - //如果知识库id不为null,先去调用知识库 - if(chatReqVO.getKnowledgeId() != null && chatReqVO.getKnowledgeId() != 0){ + StringBuilder knowledgeBase = new StringBuilder(); + if(chatReqVO.getKnowledge() != null && chatReqVO.getKnowledge() != 0){ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(KnowledgeDocumentsDO::getKnowledgeBaseId,chatReqVO.getKnowledgeId()); + queryWrapper.eq(KnowledgeDocumentsDO::getKnowledgeBaseId,chatReqVO.getKnowledge()); List fileList = knowledgeDocumentsMapper.selectList(queryWrapper); for (KnowledgeDocumentsDO knowledgeDocumentsDO : fileList) { Long id = knowledgeDocumentsDO.getId(); @@ -214,8 +195,57 @@ public class ConversationServiceImpl implements ConversationService { knowledgeRagEmbedQueryVO.setFile_id(id.toString()); knowledgeRagEmbedQueryVO.setQuery(chatReqVO.getPrompt()); String result = HttpUtils.post(llmBackendProperties.getEmbedQuery(), null, JSON.toJSONString(knowledgeRagEmbedQueryVO)); + com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(result); + if (jsonArray != null && !jsonArray.isEmpty()){ + com.alibaba.fastjson.JSONArray jsonArray1 = (com.alibaba.fastjson.JSONArray) jsonArray.get(0); + JSONObject jsonObject = (JSONObject) jsonArray1.get(0); + knowledgeBase.append(jsonObject.get("page_content")); + } } } + String mess = chatReqVO.getSystemPrompt()+""+knowledgeBase.toString()+""; + // 查询历史记录消息 将查询出来的知识信息放入到 role = system 里面 + List messageHistoryList = stringRedisTemplate.opsForList().range(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), 0, -1); + if (messageHistoryList != null && !messageHistoryList.isEmpty()) { + for (String messageHistory : messageHistoryList) { + ModelCompletionsReqVO.ModelCompletionsMessage modelCompletionsMessage = JsonUtils.parseObject(messageHistory, ModelCompletionsReqVO.ModelCompletionsMessage.class); + if (modelCompletionsMessage.getRole().equals("system")){ + modelCompletionsMessage.setContent(mess); + stringRedisTemplate.opsForList().set(CHAT_HIStORY_REDIS_KEY+ ":" + chatReqVO.getUuid(), 0, JsonUtils.toJsonString(modelCompletionsMessage)); + } + messages.add(modelCompletionsMessage); + } + }else { + ModelCompletionsReqVO.ModelCompletionsMessage systemMessage = new ModelCompletionsReqVO.ModelCompletionsMessage(); + systemMessage.setRole("system"); + systemMessage.setContent(mess); + stringRedisTemplate.opsForList().rightPush(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), JsonUtils.toJsonString(systemMessage)); + messages.add(systemMessage); + } + // 先注释掉 +/* if(chatReqVO.getSystemPrompt() != null && !chatReqVO.getSystemPrompt().equals("")){ + ModelCompletionsReqVO.ModelCompletionsMessage message = new ModelCompletionsReqVO.ModelCompletionsMessage(); + message.setRole("system"); + message.setContent(mess); + messages.add(message); + } + + // TODO: 聊天推理 + List messageHistoryList1 = stringRedisTemplate.opsForList().range(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), 0, -1); + if (messageHistoryList1 != null && !messageHistoryList1.isEmpty()) { + for (String messageHistory : messageHistoryList1) { + messages.add(JsonUtils.parseObject(messageHistory, ModelCompletionsReqVO.ModelCompletionsMessage.class)); + } + }*/ + + + + + ModelCompletionsReqVO.ModelCompletionsMessage message = new ModelCompletionsReqVO.ModelCompletionsMessage(); + message.setRole("user"); + message.setContent(chatReqVO.getPrompt()); + + messages.add(message); ModelCompletionsReqVO modelCompletionsReqVO = new ModelCompletionsReqVO(); modelCompletionsReqVO.setMessages(messages);