feat(llm): 添加知识库问答模式

- 在 ConversationServiceImpl 中增加了知识库处理逻辑
- 当 chatReqVO 的 knowledge 字段不为空时,添加特定的 prompt 作为知识库问答规则
- 如果 chatReqVO 的 prompt 字段为空,
This commit is contained in:
Liuyang 2025-03-10 15:45:13 +08:00
parent 335793247f
commit 3c32819345

View File

@ -431,6 +431,18 @@ public class ConversationServiceImpl implements ConversationService {
StringBuilder knowledgeBase = getKnowledgeBase(chatReqVO);
if(chatReqVO.getKnowledge()!=null){
String prompt = "你是一个只能基于给定知识库回答问题的助手。以下是你的规则:\n" +
"1. 你只能依据知识库中的内容回答问题。\n" +
"2. 如果问题的答案不在知识库中,回答:“抱歉,我无法回答这个问题,因为相关信息不在知识库中。”\n" +
"3. 不允许进行推测、想象或生成与知识库无关的内容。\n" +
"4. 请严格遵守以上规则。";
if (StringUtils.isBlank(chatReqVO.getPrompt())){
chatReqVO.setPrompt(prompt);
}else {
chatReqVO.setPrompt(chatReqVO.getPrompt()+"\n"+prompt);
}
}
String mess = chatReqVO.getSystemPrompt() + knowledgeBase.toString();
// 查询历史记录消息并将查询出来的知识信息放入到 role = system 的消息中
List<String> messageHistoryList = stringRedisTemplate.opsForList().range(CHAT_HIStORY_REDIS_KEY + ":" + chatReqVO.getUuid(), 0, -1);