@ -1,47 +1,44 @@
package cn.iocoder.yudao.module.llm.service.conversation ;
import cn.hutool.json.JSONArray ;
import cn.hutool.json.JSONObject ;
import cn.iocoder.yudao.framework.common.pojo.PageResult ;
import cn.iocoder.yudao.framework.common.util.http.HttpUtils ;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils ;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils ;
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationRespVO ;
import cn.iocoder.yudao.module.llm.controller.admin.application.vo.ApplicationSaveReqVO ;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatReqVO ;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ChatRespVO ;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ConversationPageReqVO ;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.ConversationSaveReqVO ;
import cn.iocoder.yudao.module.llm.controller.admin.datarefluxdata.vo.DataRefluxDataSaveReqVO ;
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO ;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO ;
import cn.iocoder.yudao.module.llm.dal.dataobject.conversation.ConversationDO ;
import cn.iocoder.yudao.module.llm.dal.dataobject.knowledgedocuments.KnowledgeDocumentsDO ;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO ;
import cn.iocoder.yudao.module.llm.dal.mysql.conversation.ConversationMapper ;
import cn.iocoder.yudao.module.llm.dal.mysql.knowledgedocuments.KnowledgeDocumentsMapper ;
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper ;
import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties ;
import cn.iocoder.yudao.module.llm.service.application.ApplicationService ;
import cn.iocoder.yudao.module.llm.service.basemodel.BaseModelService ;
import cn.iocoder.yudao.module.llm.service.datarefluxdata.DataRefluxDataService ;
import cn.iocoder.yudao.module.llm.service.http.ModelService ;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsReqVO ;
import cn.iocoder.yudao.module.llm.service.http.vo.ModelCompletionsRespVO ;
import cn.iocoder.yudao.module.llm.service.http.vo.TextToImageReqVo ;
import cn.iocoder.yudao.module.llm.service.http.vo.TextToImageRespVo ;
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.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper ;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils ;
import org.springframework.data.redis.core.StringRedisTemplate ;
import org.springframework.stereotype.Service ;
import javax.annotation.Resource ;
import org.springframework.validation.annotation.Validated ;
import org.springframework.transaction.annotation.Transactional ;
import javax.annotation.Resource ;
import java.util.* ;
import java.util.concurrent.TimeUnit ;
import cn.iocoder.yudao.module.llm.controller.admin.conversation.vo.* ;
import cn.iocoder.yudao.module.llm.dal.dataobject.conversation.ConversationDO ;
import cn.iocoder.yudao.framework.common.pojo.PageResult ;
import cn.iocoder.yudao.framework.common.pojo.PageParam ;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils ;
import cn.iocoder.yudao.module.llm.dal.mysql.conversation.ConversationMapper ;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception ;
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.* ;
import static cn.iocoder.yudao.module.llm.service.http.ModelService.DEFAULT_MODEL_ID ;
import static cn.iocoder.yudao.module.llm.service.http.ModelService.PRIVATE_MODEL_ID ;
/ * *
* 大模型对话记录 Service 实现类
@ -68,6 +65,10 @@ public class ConversationServiceImpl implements ConversationService {
private ApplicationService applicationService ;
@Resource
private PromptTemplatesService promptTemplatesService ;
@Resource
private KnowledgeDocumentsMapper knowledgeDocumentsMapper ;
@Resource
private LLMBackendProperties llmBackendProperties ;
/ / 聊天会话历史记录缓存Key
private final static String CHAT_HIStORY_REDIS_KEY = " llm:chat:history " ;
@ -203,6 +204,18 @@ public class ConversationServiceImpl implements ConversationService {
messages . add ( message ) ;
/ / 如果知识库id不为null , 先去调用知识库
if ( chatReqVO . getKnowledgeId ( ) ! = null & & chatReqVO . getKnowledgeId ( ) ! = 0 ) {
LambdaQueryWrapper < KnowledgeDocumentsDO > queryWrapper = new LambdaQueryWrapper < > ( ) ;
queryWrapper . eq ( KnowledgeDocumentsDO : : getKnowledgeBaseId , chatReqVO . getKnowledgeId ( ) ) ;
List < KnowledgeDocumentsDO > fileList = knowledgeDocumentsMapper . selectList ( queryWrapper ) ;
for ( KnowledgeDocumentsDO knowledgeDocumentsDO : fileList ) {
Long id = knowledgeDocumentsDO . getId ( ) ;
KnowledgeRagEmbedQueryVO knowledgeRagEmbedQueryVO = new KnowledgeRagEmbedQueryVO ( ) ;
knowledgeRagEmbedQueryVO . setFile_id ( id . toString ( ) ) ;
knowledgeRagEmbedQueryVO . setQuery ( chatReqVO . getPrompt ( ) ) ;
String result = HttpUtils . post ( llmBackendProperties . getEmbedQuery ( ) , null , JSON . toJSONString ( knowledgeRagEmbedQueryVO ) ) ;
}
}
ModelCompletionsReqVO modelCompletionsReqVO = new ModelCompletionsReqVO ( ) ;
modelCompletionsReqVO . setMessages ( messages ) ;