|
|
|
@ -4,7 +4,6 @@ import cn.hutool.json.JSONObject;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.supervision.pdfqaserver.cache.PromptCache;
|
|
|
|
|
import com.supervision.pdfqaserver.dao.Neo4jRepository;
|
|
|
|
|
import com.supervision.pdfqaserver.domain.ChineseEnglishWords;
|
|
|
|
|
import com.supervision.pdfqaserver.domain.DomainMetadata;
|
|
|
|
|
import com.supervision.pdfqaserver.dto.neo4j.RelationObject;
|
|
|
|
|
import com.supervision.pdfqaserver.service.ChatService;
|
|
|
|
@ -13,7 +12,6 @@ import com.supervision.pdfqaserver.service.DomainMetadataService;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.ai.chat.messages.Message;
|
|
|
|
|
import org.springframework.ai.chat.model.ChatResponse;
|
|
|
|
|
import org.springframework.ai.chat.prompt.Prompt;
|
|
|
|
|
import org.springframework.ai.chat.prompt.SystemPromptTemplate;
|
|
|
|
|
import org.springframework.ai.ollama.OllamaChatModel;
|
|
|
|
@ -24,7 +22,6 @@ import reactor.core.publisher.Flux;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static com.supervision.pdfqaserver.cache.PromptCache.GENERATE_ANSWER;
|
|
|
|
|
import static com.supervision.pdfqaserver.cache.PromptCache.TEXT_TO_CYPHER;
|
|
|
|
@ -48,20 +45,11 @@ public class ChatServiceImpl implements ChatService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Flux<String> knowledgeQA(String userQuery) {
|
|
|
|
|
//拼装领域元数据
|
|
|
|
|
Map<String, String> chineseEnglishWordsMap = chineseEnglishWordsService.list().stream()
|
|
|
|
|
.collect(Collectors.toMap(ChineseEnglishWords::getChineseWord, ChineseEnglishWords::getEnglishWord));
|
|
|
|
|
|
|
|
|
|
//分别得到sourceType,relation,targetType的group by后的集合
|
|
|
|
|
List<String> sourceTypeList = domainMetadataService.list().stream().map(DomainMetadata::getSourceType).distinct().toList();
|
|
|
|
|
List<String> relationList = domainMetadataService.list().stream().map(DomainMetadata::getRelation).distinct().toList();
|
|
|
|
|
List<String> targetTypeList = domainMetadataService.list().stream().map(DomainMetadata::getTargetType).distinct().toList();
|
|
|
|
|
|
|
|
|
|
//将三个集合分别结合chineseEnglishWordsMap的key转化为value集合
|
|
|
|
|
// List<String> sourceTypeEnList = sourceTypeList.stream().map(chineseEnglishWordsMap::get).toList();
|
|
|
|
|
// List<String> relationEnList = relationList.stream().map(chineseEnglishWordsMap::get).toList();
|
|
|
|
|
// List<String> targetTypeEnList = targetTypeList.stream().map(chineseEnglishWordsMap::get).toList();
|
|
|
|
|
|
|
|
|
|
//将三个集合分别转换为英文逗号分隔的字符串
|
|
|
|
|
String sourceTypeListEn = String.join(",", sourceTypeList);
|
|
|
|
|
String relationListEn = String.join(",", relationList);
|
|
|
|
|