|
@@ -107,28 +107,28 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
setRedisCache(null);
|
|
setRedisCache(null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private void setRedisCache(String knowledgeId){
|
|
|
|
|
|
|
+ private void setRedisCache(String knowledgeId) {
|
|
|
//获取知识库列表
|
|
//获取知识库列表
|
|
|
List<TakaiKnowledge> knowledgeList = null;
|
|
List<TakaiKnowledge> knowledgeList = null;
|
|
|
- if(StringUtils.isEmpty(knowledgeId)){
|
|
|
|
|
- knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(null);
|
|
|
|
|
- }else{
|
|
|
|
|
- knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
|
|
|
|
+ if (StringUtils.isEmpty(knowledgeId)) {
|
|
|
|
|
+ knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(null);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ knowledgeList = takaiKnowledgeMapper.selectKnowledgeList(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//获取知识列表
|
|
//获取知识列表
|
|
|
- if(!knowledgeList.isEmpty()) {
|
|
|
|
|
- for(TakaiKnowledge bmKnowledge : knowledgeList) {
|
|
|
|
|
|
|
+ if (!knowledgeList.isEmpty()) {
|
|
|
|
|
+ for (TakaiKnowledge bmKnowledge : knowledgeList) {
|
|
|
TakaiDocument conditon = TakaiDocument.builder().knowledgeId(bmKnowledge.getKnowledgeId()).build();
|
|
TakaiDocument conditon = TakaiDocument.builder().knowledgeId(bmKnowledge.getKnowledgeId()).build();
|
|
|
List<TakaiDocument> documentList = takaiDocumentMapper.selectDocumentList(conditon);
|
|
List<TakaiDocument> documentList = takaiDocumentMapper.selectDocumentList(conditon);
|
|
|
- if(!documentList.isEmpty()) {
|
|
|
|
|
|
|
+ if (!documentList.isEmpty()) {
|
|
|
for (TakaiDocument bmDocument : documentList) {
|
|
for (TakaiDocument bmDocument : documentList) {
|
|
|
//获取知识图片列表
|
|
//获取知识图片列表
|
|
|
TakaiMediaReplacement conditonR = TakaiMediaReplacement.builder().documentId(bmDocument.getDocumentId()).build();
|
|
TakaiMediaReplacement conditonR = TakaiMediaReplacement.builder().documentId(bmDocument.getDocumentId()).build();
|
|
|
List<TakaiMediaReplacement> imageList = takaiMediaReplacementMapper.selectMediaList(conditonR);
|
|
List<TakaiMediaReplacement> imageList = takaiMediaReplacementMapper.selectMediaList(conditonR);
|
|
|
- if(!imageList.isEmpty()) {
|
|
|
|
|
- for(TakaiMediaReplacement image : imageList) {
|
|
|
|
|
- redisCache.setCacheObject(image.getOriginText(),image.getMediaUrl());
|
|
|
|
|
|
|
+ if (!imageList.isEmpty()) {
|
|
|
|
|
+ for (TakaiMediaReplacement image : imageList) {
|
|
|
|
|
+ redisCache.setCacheObject(image.getOriginText(), image.getMediaUrl());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -147,8 +147,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getChat();
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getChat();
|
|
|
TakaiAppInfo info = takaiAppInfoMapper.selectAppInfoByAppId(sseParams.getAppId());
|
|
TakaiAppInfo info = takaiAppInfoMapper.selectAppInfoByAppId(sseParams.getAppId());
|
|
|
JSONObject json = JSONObject.parseObject(info.getAppInfo());
|
|
JSONObject json = JSONObject.parseObject(info.getAppInfo());
|
|
|
- String query = sseParams.getPrompt().get(sseParams.getPrompt().size()-1).getContent();
|
|
|
|
|
- log.info("deepseek聊天请求参数:"+ query);
|
|
|
|
|
|
|
+ String query = sseParams.getPrompt().get(sseParams.getPrompt().size() - 1).getContent();
|
|
|
|
|
+ log.info("deepseek聊天请求参数:" + query);
|
|
|
json.put("query", query);
|
|
json.put("query", query);
|
|
|
json.put("embeddingId", knowledge.getEmbeddingId());
|
|
json.put("embeddingId", knowledge.getEmbeddingId());
|
|
|
|
|
|
|
@@ -190,11 +190,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
//获取完整Key
|
|
//获取完整Key
|
|
|
int startPos = symbolData.indexOf(START_SIGN);
|
|
int startPos = symbolData.indexOf(START_SIGN);
|
|
|
int endPos = symbolData.indexOf(END_SIGN) + 1;
|
|
int endPos = symbolData.indexOf(END_SIGN) + 1;
|
|
|
- String key = symbolData.substring(startPos,endPos);
|
|
|
|
|
|
|
+ String key = symbolData.substring(startPos, endPos);
|
|
|
String url = redisCache.getCacheObject(key);
|
|
String url = redisCache.getCacheObject(key);
|
|
|
- if(org.springframework.util.StringUtils.hasText(url)) {
|
|
|
|
|
|
|
+ if (org.springframework.util.StringUtils.hasText(url)) {
|
|
|
//匹配markdown图片格式
|
|
//匹配markdown图片格式
|
|
|
- symbolData = symbolData.replace(key,"");
|
|
|
|
|
|
|
+ symbolData = symbolData.replace(key, "");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
JSONObject json = new JSONObject();
|
|
JSONObject json = new JSONObject();
|
|
@@ -444,54 +444,62 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public int uploadDocument(MultipartFile files, String knowledgeId) {
|
|
|
|
|
- TakaiSysOss result = null;
|
|
|
|
|
|
|
+ public int uploadDocument(MultipartFile[] files, String knowledgeId) {
|
|
|
|
|
+ List<TakaiSysOss> result = null;
|
|
|
try {
|
|
try {
|
|
|
result = minioUtil.uploadMultiple(files);
|
|
result = minioUtil.uploadMultiple(files);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
logger.error("上传文件失败", e.getMessage());
|
|
logger.error("上传文件失败", e.getMessage());
|
|
|
}
|
|
}
|
|
|
- if (result != null) {
|
|
|
|
|
- SnowflakeDigitGenerator documentIdGenerator = new SnowflakeDigitGenerator(1, 1);
|
|
|
|
|
- long documentId = documentIdGenerator.nextId();
|
|
|
|
|
|
|
+ if (result != null && result.size() > 0) {
|
|
|
|
|
+ List<UploadDocumentParams> params = new ArrayList<>();
|
|
|
|
|
+ for (int i = 0; i<result.size(); i++) {
|
|
|
|
|
+ SnowflakeDigitGenerator documentIdGenerator = new SnowflakeDigitGenerator(i, i);
|
|
|
|
|
+ long documentId = documentIdGenerator.nextId();
|
|
|
|
|
+ UploadDocumentParams param = new UploadDocumentParams();
|
|
|
|
|
+ param.setDocument_id("a" + documentId);
|
|
|
|
|
+ param.setName(result.get(i).getOriginalName());
|
|
|
|
|
+ param.setUrl(result.get(i).getUrl());
|
|
|
|
|
+ params.add(param);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
|
- settings.setDocumentId("a" + documentId);
|
|
|
|
|
|
|
+// settings.setDocumentId("a" + documentId);
|
|
|
settings.setKnowledgeId(knowledgeId);
|
|
settings.setKnowledgeId(knowledgeId);
|
|
|
- boolean flag = analysisFile(result, settings, "upload");
|
|
|
|
|
|
|
+ boolean flag = analysisFile(params, settings, "upload");
|
|
|
|
|
|
|
|
if (flag) {
|
|
if (flag) {
|
|
|
- // 保存知识信息
|
|
|
|
|
- TakaiDocument document = TakaiDocument.builder()
|
|
|
|
|
- .documentId("a" + documentId)
|
|
|
|
|
- .knowledgeId(knowledgeId)
|
|
|
|
|
- .customSeparator(String.format("[\"%s\"", "\\n") + "]")
|
|
|
|
|
- .sentenceSize("300")
|
|
|
|
|
- .name(result.getOriginalName())
|
|
|
|
|
- .url(result.getUrl()).build();
|
|
|
|
|
- int documentIdInsert = takaiDocumentMapper.insertDocument(document);
|
|
|
|
|
- int ossInsert = 0;
|
|
|
|
|
- int settingInsert = 0;
|
|
|
|
|
- if (documentIdInsert > 0) {
|
|
|
|
|
|
|
+ for (TakaiSysOss oss : result) {
|
|
|
// oss保存到数据库
|
|
// oss保存到数据库
|
|
|
- ossInsert = takaiSysOssMapper.insertSysOss(result);
|
|
|
|
|
- if (ossInsert > 0) {
|
|
|
|
|
|
|
+ takaiSysOssMapper.insertSysOss(oss);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ for (UploadDocumentParams vo : params) {
|
|
|
|
|
+ // 保存知识信息
|
|
|
|
|
+ TakaiDocument document = TakaiDocument.builder()
|
|
|
|
|
+ .documentId(vo.getDocument_id())
|
|
|
|
|
+ .knowledgeId(knowledgeId)
|
|
|
|
|
+ .customSeparator(String.format("[\"%s\"", "\\n") + "]")
|
|
|
|
|
+ .sentenceSize("300")
|
|
|
|
|
+ .name(vo.getName())
|
|
|
|
|
+ .url(vo.getUrl()).build();
|
|
|
|
|
+ int documentIdInsert = takaiDocumentMapper.insertDocument(document);
|
|
|
|
|
+
|
|
|
|
|
+ if (documentIdInsert > 0) {
|
|
|
// 保存知识设置信息
|
|
// 保存知识设置信息
|
|
|
SnowflakeDigitGenerator snowflakeDigitGenerator = new SnowflakeDigitGenerator(1, 1);
|
|
SnowflakeDigitGenerator snowflakeDigitGenerator = new SnowflakeDigitGenerator(1, 1);
|
|
|
long id = snowflakeDigitGenerator.nextId();
|
|
long id = snowflakeDigitGenerator.nextId();
|
|
|
TakaiDocumentSettings dSettings = new TakaiDocumentSettings();
|
|
TakaiDocumentSettings dSettings = new TakaiDocumentSettings();
|
|
|
dSettings.setId(String.valueOf(id));
|
|
dSettings.setId(String.valueOf(id));
|
|
|
dSettings.setKnowledgeId(knowledgeId);
|
|
dSettings.setKnowledgeId(knowledgeId);
|
|
|
- dSettings.setDocumentId("a" + documentId);
|
|
|
|
|
|
|
+ dSettings.setDocumentId(vo.getDocument_id());
|
|
|
dSettings.setSetSlice("0"); // 默认 按标题段落切片
|
|
dSettings.setSetSlice("0"); // 默认 按标题段落切片
|
|
|
dSettings.setSetAnalyze("1"); // 默认 图片转换成标识符
|
|
dSettings.setSetAnalyze("1"); // 默认 图片转换成标识符
|
|
|
- settingInsert = takaiDocumentSettingsMapper.insertDocumentSettings(dSettings);
|
|
|
|
|
|
|
+ takaiDocumentSettingsMapper.insertDocumentSettings(dSettings);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- if (documentIdInsert > 0 && ossInsert > 0 && settingInsert > 0) {
|
|
|
|
|
- setRedisCache(knowledgeId);
|
|
|
|
|
- return 1;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ setRedisCache(knowledgeId);
|
|
|
|
|
+ return 1;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return 0;
|
|
return 0;
|
|
@@ -659,18 +667,29 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
// int i = takaiDocumentSettingsMapper.updateDocumentSettings(documentSettings);
|
|
// int i = takaiDocumentSettingsMapper.updateDocumentSettings(documentSettings);
|
|
|
// return i;
|
|
// return i;
|
|
|
// }
|
|
// }
|
|
|
- TakaiSysOss ossVo = new TakaiSysOss();
|
|
|
|
|
|
|
+// List<TakaiSysOss> list = new ArrayList<>();
|
|
|
|
|
+// TakaiSysOss ossVo = new TakaiSysOss();
|
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
|
TakaiDocumentSettings settingsVo = takaiDocumentSettingsMapper.selectById(documentId);
|
|
TakaiDocumentSettings settingsVo = takaiDocumentSettingsMapper.selectById(documentId);
|
|
|
- settings.setDocumentId(documentId);
|
|
|
|
|
|
|
+// settings.setDocumentId(documentId);
|
|
|
settings.setKnowledgeId(settingsVo.getKnowledgeId());
|
|
settings.setKnowledgeId(settingsVo.getKnowledgeId());
|
|
|
settings.setSetSlice(documentSettings.getSetSlice());
|
|
settings.setSetSlice(documentSettings.getSetSlice());
|
|
|
settings.setSliceValue(documentSettings.getSliceValue());
|
|
settings.setSliceValue(documentSettings.getSliceValue());
|
|
|
settings.setSetAnalyze(documentSettings.getSetAnalyze());
|
|
settings.setSetAnalyze(documentSettings.getSetAnalyze());
|
|
|
TakaiDocument document = takaiDocumentMapper.selectTargetDocument(TakaiDocument.builder().documentId(documentId).build());
|
|
TakaiDocument document = takaiDocumentMapper.selectTargetDocument(TakaiDocument.builder().documentId(documentId).build());
|
|
|
- ossVo.setUrl(document.getUrl());
|
|
|
|
|
- ossVo.setOriginalName(document.getName());
|
|
|
|
|
- boolean status = analysisFile(ossVo, settings, "update");
|
|
|
|
|
|
|
+// ossVo.setUrl(document.getUrl());
|
|
|
|
|
+// ossVo.setOriginalName(document.getName());
|
|
|
|
|
+// list.add(ossVo);
|
|
|
|
|
+ List<UploadDocumentParams> listParams = new ArrayList<>();
|
|
|
|
|
+ if (document != null) {
|
|
|
|
|
+ UploadDocumentParams params = new UploadDocumentParams();
|
|
|
|
|
+ params.setDocument_id(documentId);
|
|
|
|
|
+ params.setName(document.getName());
|
|
|
|
|
+ params.setUrl(document.getUrl());
|
|
|
|
|
+ listParams.add(params);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ boolean status = analysisFile(listParams, settings, "update");
|
|
|
if (status) {
|
|
if (status) {
|
|
|
logger.info("update document setting success, id:{}", documentId);
|
|
logger.info("update document setting success, id:{}", documentId);
|
|
|
documentSettings.setDocumentId(documentId);
|
|
documentSettings.setDocumentId(documentId);
|
|
@@ -795,15 +814,16 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return mrVo;
|
|
return mrVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private boolean analysisFile(TakaiSysOss result, TakaiDocumentSettings settings, String flag) {
|
|
|
|
|
|
|
+ private boolean analysisFile(List<UploadDocumentParams> result, TakaiDocumentSettings settings, String flag) {
|
|
|
TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(settings.getKnowledgeId()).build());
|
|
TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(settings.getKnowledgeId()).build());
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getUploadKnowledge();
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getUploadKnowledge();
|
|
|
JSONObject json = new JSONObject();
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("knowledge_id", settings.getKnowledgeId());
|
|
json.put("knowledge_id", settings.getKnowledgeId());
|
|
|
- json.put("document_id", settings.getDocumentId());
|
|
|
|
|
- json.put("embedding_id", knowledge == null ? "" : knowledge.getEmbeddingId());
|
|
|
|
|
- json.put("name", result.getOriginalName());
|
|
|
|
|
- json.put("url", result.getUrl());
|
|
|
|
|
|
|
+// json.put("document_id", settings.getDocumentId());
|
|
|
|
|
+// json.put("embedding_id", knowledge == null ? "" : knowledge.getEmbeddingId());
|
|
|
|
|
+ json.put("docs", result);
|
|
|
|
|
+// json.put("name", result.getOriginalName());
|
|
|
|
|
+// json.put("url", result.getUrl());
|
|
|
if ("upload".equals(flag)) {
|
|
if ("upload".equals(flag)) {
|
|
|
json.put("set_slice", "0");
|
|
json.put("set_slice", "0");
|
|
|
json.put("slice_value", null);
|
|
json.put("slice_value", null);
|