package com.supervision.police.service.impl; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.supervision.chat.client.LangChainChatService; import com.supervision.chat.client.dto.chat.ChatReqDTO; import com.supervision.chat.client.dto.chat.ChatResDTO; import com.supervision.police.domain.ModelCase; import com.supervision.police.service.ChatService; import com.supervision.police.service.ModelCaseService; import com.supervision.police.vo.ChatReqVO; import com.supervision.police.vo.ChatResVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Slf4j @Service @RequiredArgsConstructor public class ChatServiceImpl implements ChatService { private final LangChainChatService langChainChatService; private final ModelCaseService modelCaseService; @Override public ChatResVO chat(ChatReqVO chatReqVO) { Assert.notEmpty(chatReqVO.getQuery(), "query 不能为空"); Assert.notEmpty(chatReqVO.getCaseId(), "caseId 不能为空"); ModelCase modelCase = modelCaseService.getById(chatReqVO.getCaseId()); Assert.notNull(modelCase, "案件不存在"); log.info("chat: caseNo:{},query{}", modelCase.getCaseNo(), chatReqVO.getQuery()); ChatResDTO chat = null; try { chat = langChainChatService.chat( ChatReqDTO.create(chatReqVO.getQuery(), modelCase.getCaseNo(),chatReqVO.getHistory())); } catch (Exception e) { log.error("chat: caseNo:{},query{},error:{}", modelCase.getCaseNo(), chatReqVO.getQuery(), e.getMessage(),e); chat = new ChatResDTO(); chat.setAnswer("服务繁忙,请稍后重试!"); } if (null ==chat){ chat = new ChatResDTO(); } if (StrUtil.isEmpty(chat.getAnswer())){ chat.setAnswer("我暂时还不知道怎么回答,您可以尝试换一种问法!"); chat.setDocs(new ArrayList<>(1)); } log.info("chat: caseNo:{},query{},answer:{}", modelCase.getCaseNo(), chatReqVO.getQuery(),chat.getAnswer()); return new ChatResVO(chat); } }