|
|
@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
|
|
|
import com.alibaba.fastjson2.JSONArray;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.takai.ai.domain.TakaiSysOss;
|
|
|
+import com.takai.ai.domain.dto.TakaiDialogDetailReqDTO;
|
|
|
import com.takai.ai.domain.entity.*;
|
|
|
import com.takai.ai.mapper.*;
|
|
|
import com.takai.ai.service.ITakaiAiService;
|
|
|
@@ -32,7 +33,9 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -87,124 +90,131 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
public static final String END_SIGN = "】";
|
|
|
public static final String SYMBOL = "【示意图序号";
|
|
|
|
|
|
+ public static final String USER_STR = "user";
|
|
|
+
|
|
|
+ public static final String TODAY = "今天";
|
|
|
+
|
|
|
+ public static final String BEFOR = "天前";
|
|
|
+
|
|
|
@Override
|
|
|
public SseEmitter sseInvoke(TakaiSseInfoParams sseParams) {
|
|
|
- SseEmitter sseEmitter = new SseEmitter(0L);
|
|
|
- String url = deepseekConfig.getBaseurl() + deepseekConfig.getChat();
|
|
|
- TakaiAppInfo info = takaiAppInfoMapper.selectAppInfoByAppId(sseParams.getAppId());
|
|
|
- JSONObject json = JSONObject.parseObject(info.getAppInfo());
|
|
|
- json.put("query", "在上海建科集团业务管理平台中,登记和退款流程是什么样的。");
|
|
|
- json.put("embeddingId", "multilingual-e5-large-instruct");
|
|
|
-
|
|
|
- RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json.toJSONString());
|
|
|
- Request request = buildPostRequest(url, requestBody);
|
|
|
- // 使用EventSourceListener处理来自服务器的SSE事件
|
|
|
- EventSourceListener listener = new EventSourceListener() {
|
|
|
- private String preData = "";
|
|
|
- //图片识别
|
|
|
- private String symbolData = "";
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onOpen(@NotNull EventSource eventSource, @NotNull Response response) {
|
|
|
- log.info("deepseek Connection opened. Headers: {}", response.headers());
|
|
|
- log.info("deepseek Request URL: {}", response.request().url());
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void onClosed(@NotNull EventSource eventSource) {
|
|
|
- log.info("deepseek Connection closed.");
|
|
|
- sseEmitter.complete();
|
|
|
- }
|
|
|
+ TakaiApplication appInfo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(sseParams.getAppId()).build());
|
|
|
+ if(appInfo != null) {
|
|
|
+ TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(appInfo.getKnowledgeIds()).build());
|
|
|
+ if (knowledge != null) {
|
|
|
+ SseEmitter sseEmitter = new SseEmitter(0L);
|
|
|
+ String url = deepseekConfig.getBaseurl() + deepseekConfig.getChat();
|
|
|
+ TakaiAppInfo info = takaiAppInfoMapper.selectAppInfoByAppId(sseParams.getAppId());
|
|
|
+ JSONObject json = JSONObject.parseObject(info.getAppInfo());
|
|
|
+ json.put("query", sseParams.getPrompt().get(0).getContent());
|
|
|
+ json.put("embeddingId", knowledge.getEmbeddingId());
|
|
|
+
|
|
|
+ RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json.toJSONString());
|
|
|
+ Request request = buildPostRequest(url, requestBody);
|
|
|
+ // 使用EventSourceListener处理来自服务器的SSE事件
|
|
|
+ EventSourceListener listener = new EventSourceListener() {
|
|
|
+ private String preData = "";
|
|
|
+ //图片识别
|
|
|
+ private String symbolData = "";
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onOpen(@NotNull EventSource eventSource, @NotNull Response response) {
|
|
|
+ log.info("deepseek Connection opened. Headers: {}", response.headers());
|
|
|
+ log.info("deepseek Request URL: {}", response.request().url());
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void onEvent(@NotNull EventSource eventSource, String id, String type, @NotNull String data) {
|
|
|
- if(StringUtils.isEmpty(data)){
|
|
|
- return;
|
|
|
- }
|
|
|
- String newData = data.substring(preData.length());
|
|
|
- preData = data;
|
|
|
- if (newData.indexOf(START_SIGN) > -1 || symbolData.length() > 0) {
|
|
|
- symbolData = symbolData + newData;
|
|
|
- //接收到了完整的图片标识
|
|
|
- if (newData.indexOf(END_SIGN) > -1) {
|
|
|
- //是图片
|
|
|
- if (symbolData.indexOf(SYMBOL) > -1) {
|
|
|
- String documentId = symbolData.substring(SYMBOL.length() + 1, symbolData.lastIndexOf("_"));
|
|
|
- TakaiMediaReplacement mrParams = TakaiMediaReplacement.builder()
|
|
|
- .documentId(documentId)
|
|
|
- .originText(symbolData)
|
|
|
- .mediaType("image").build();
|
|
|
- TakaiMediaReplacement mrVo = takaiMediaReplacementMapper.selectTargetMedia(mrParams);
|
|
|
- symbolData = mrVo.getMediaUrl();
|
|
|
+ @Override
|
|
|
+ public void onClosed(@NotNull EventSource eventSource) {
|
|
|
+ log.info("deepseek Connection closed.");
|
|
|
+ sseEmitter.complete();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onEvent(@NotNull EventSource eventSource, String id, String type, @NotNull String data) {
|
|
|
+ if (StringUtils.isEmpty(data)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String newData = data.substring(preData.length());
|
|
|
+ logger.info("deepseek聊天返回消息:" + data);
|
|
|
+ preData = data;
|
|
|
+ if (newData.indexOf(START_SIGN) > -1 || symbolData.length() > 0) {
|
|
|
+ symbolData = symbolData + newData;
|
|
|
+ //接收到了完整的图片标识
|
|
|
+ if (newData.indexOf(END_SIGN) > -1) {
|
|
|
+ //是图片
|
|
|
+ if (symbolData.indexOf(SYMBOL) > -1) {
|
|
|
+ String documentId = symbolData.substring(SYMBOL.length() + 1, symbolData.lastIndexOf("_"));
|
|
|
+ TakaiMediaReplacement mrParams = TakaiMediaReplacement.builder()
|
|
|
+ .documentId(documentId)
|
|
|
+ .originText(symbolData)
|
|
|
+ .mediaType("image").build();
|
|
|
+ TakaiMediaReplacement mrVo = takaiMediaReplacementMapper.selectTargetMedia(mrParams);
|
|
|
+ symbolData = mrVo.getMediaUrl();
|
|
|
+ }
|
|
|
+ JSONObject json = new JSONObject();
|
|
|
+ json.put("id", id);
|
|
|
+ json.put("event", "add");
|
|
|
+ json.put("data", symbolData);
|
|
|
+ log.info("deepseek返回信息:" + json);
|
|
|
+ symbolData = "";
|
|
|
+ send(sseEmitter, json);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ JSONObject json = new JSONObject();
|
|
|
+ json.put("id", id);
|
|
|
+ json.put("event", type);
|
|
|
+ json.put("data", newData);
|
|
|
+ log.info("deepseek返回信息:" + json);
|
|
|
+ send(sseEmitter, json);
|
|
|
}
|
|
|
- JSONObject json = new JSONObject();
|
|
|
- json.put("id", id);
|
|
|
- json.put("event", "add");
|
|
|
- json.put("data", symbolData);
|
|
|
- log.info("deepseek返回信息:" + json);
|
|
|
- symbolData = "";
|
|
|
- send(sseEmitter, json);
|
|
|
}
|
|
|
- } else {
|
|
|
-// if(com.takai.common.utils.StringUtils.isNotEmpty(type) && "finish".equals(type)){
|
|
|
-// if(com.takai.common.utils.StringUtils.isNotEmpty(data)){
|
|
|
-// JSONObject json = new JSONObject();
|
|
|
-// json.put("id", id);
|
|
|
-// json.put("event", "add");
|
|
|
-// json.put("data", data);
|
|
|
-// log.info("deepseek返回切片消息:" + data);
|
|
|
-// send(sseEmitter, json);
|
|
|
-// }
|
|
|
-// }
|
|
|
- JSONObject json = new JSONObject();
|
|
|
- json.put("id", id);
|
|
|
- json.put("event", type);
|
|
|
- json.put("data", newData);
|
|
|
- log.info("deepseek返回信息:" + json);
|
|
|
- send(sseEmitter, json);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- @Override
|
|
|
- public void onFailure(@NotNull EventSource eventSource, Throwable t, Response response) {
|
|
|
- if (response != null) {
|
|
|
- log.error("deepseek Connection failed. Response code: {}, message: {}, body: {}",
|
|
|
- response.code(), response.message(), response.body() != null ? response.body().toString() : "null");
|
|
|
- } else {
|
|
|
- log.error("deepseek Connection failed with no response", t);
|
|
|
- }
|
|
|
- sseEmitter.completeWithError(t);
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public void onFailure(@NotNull EventSource eventSource, Throwable t, Response response) {
|
|
|
+ if (response != null) {
|
|
|
+ log.error("deepseek Connection failed. Response code: {}, message: {}, body: {}",
|
|
|
+ response.code(), response.message(), response.body() != null ? response.body().toString() : "null");
|
|
|
+ } else {
|
|
|
+ log.error("deepseek Connection failed with no response", t);
|
|
|
+ }
|
|
|
+ sseEmitter.completeWithError(t);
|
|
|
+ }
|
|
|
|
|
|
- private void send(SseEmitter sseEmitter, Object obj) {
|
|
|
- try {
|
|
|
- sseEmitter.send(obj);
|
|
|
- } catch (IOException e) {
|
|
|
- log.error("deepseek 推送数据失败", e);
|
|
|
- }
|
|
|
+ private void send(SseEmitter sseEmitter, Object obj) {
|
|
|
+ try {
|
|
|
+ sseEmitter.send(obj);
|
|
|
+ } catch (IOException e) {
|
|
|
+ log.error("deepseek 推送数据失败", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ OkHttpClient client = buildOkHttpClient();
|
|
|
+ EventSource.Factory factory = EventSources.createFactory(client);
|
|
|
+ factory.newEventSource(request, listener);
|
|
|
+ return sseEmitter;
|
|
|
}
|
|
|
- };
|
|
|
- OkHttpClient client = buildOkHttpClient();
|
|
|
- EventSource.Factory factory = EventSources.createFactory(client);
|
|
|
- factory.newEventSource(request, listener);
|
|
|
- return sseEmitter;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<String> asyncCompletions(TakaiCompletionsParams params) {
|
|
|
List<String> list = new ArrayList<>();
|
|
|
TakaiApplication vo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(params.getAppId()).build());
|
|
|
- TakaiPromptInfo info = new TakaiPromptInfo();
|
|
|
- info.setContent(deepseekConfig.getPrompt());
|
|
|
- info.setRole("user");
|
|
|
- params.getMessages().add(info);
|
|
|
-
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("model", "DeepSeek-R1-Distill-Qwen-14B");
|
|
|
- jsonObject.put("messages", params.getMessages());
|
|
|
- JSONObject result = getasyncCompletions(jsonObject);
|
|
|
- if(result != null && result.getInteger("code") == 200){
|
|
|
- JSONArray array = result.getJSONArray("data");
|
|
|
- list.addAll(array.toJavaList(String.class));
|
|
|
+ if(vo != null){
|
|
|
+ TakaiPromptInfo info = new TakaiPromptInfo();
|
|
|
+ info.setContent(deepseekConfig.getPrompt());
|
|
|
+ info.setRole("user");
|
|
|
+ params.getMessages().add(info);
|
|
|
+
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("model", vo.getModel());
|
|
|
+ jsonObject.put("messages", params.getMessages());
|
|
|
+ JSONObject result = getasyncCompletions(jsonObject);
|
|
|
+ if(result != null && result.getInteger("code") == 200){
|
|
|
+ JSONArray array = result.getJSONArray("data");
|
|
|
+ list.addAll(array.toJavaList(String.class));
|
|
|
+ }
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
|
@@ -236,22 +246,68 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
@Override
|
|
|
public void saveDialog(TakaiDialogReqDTO dialogReqDTO) {
|
|
|
+ String dialogId = null;
|
|
|
+ String id = null;
|
|
|
+ if(com.takai.common.utils.StringUtils.isNotEmpty(dialogReqDTO.getId())){
|
|
|
+ id = takaiDialogMapper.selectDialogById(dialogReqDTO.getId());
|
|
|
+ }
|
|
|
|
|
|
+ if(id == null){
|
|
|
+ takaiDialogMapper.insertDialog(dialogReqDTO);
|
|
|
+ dialogId = dialogReqDTO.getId();
|
|
|
+ }else{
|
|
|
+ dialogId = dialogReqDTO.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ for(TakaiDialogDetailReqDTO dto : dialogReqDTO.getMessages()) {
|
|
|
+ dto.setDialogId(dialogId);
|
|
|
+ String detailId = takaiDialogMapper.selectDialogDetailById(dto.getId());
|
|
|
+ if(detailId == null) {
|
|
|
+ takaiDialogMapper.insertDialogDetail(dto);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<Object> getDialogList(String appId) {
|
|
|
- return null;
|
|
|
+ List<TakaiDialogRespDTO> dialogRespDTOS = takaiDialogMapper.selectDialogList(appId);
|
|
|
+ //当前日期
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ //根据时间分组降序排序
|
|
|
+ NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = dialogRespDTOS.stream().collect(Collectors.groupingBy(TakaiDialogRespDTO::getCreate_time, TreeMap::new, Collectors.toList())).descendingMap();
|
|
|
+ List<Object> obj = new ArrayList();
|
|
|
+ if(!groupList.isEmpty()){
|
|
|
+ for(Map.Entry<LocalDateTime, List<TakaiDialogRespDTO>> entry: groupList.entrySet()){
|
|
|
+ // 对比两个时间相差多少天
|
|
|
+ long daysBetween = ChronoUnit.DAYS.between(today, entry.getKey());
|
|
|
+ Map<String, Object> m = new HashMap();
|
|
|
+ m.put("key", System.nanoTime());
|
|
|
+ m.put("type", "group");
|
|
|
+ if(daysBetween == 0l){
|
|
|
+ m.put("label", TODAY);
|
|
|
+ m.put("children", setValue(entry.getValue()));
|
|
|
+ obj.add(m);
|
|
|
+ }else{
|
|
|
+ m.put("label", -daysBetween+BEFOR);
|
|
|
+ m.put("children", setValue(entry.getValue()));
|
|
|
+ obj.add(m);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void DelDialogDetail(String id) {
|
|
|
-
|
|
|
+ int result = takaiDialogMapper.delDialog(id);
|
|
|
+ if(result > 0){
|
|
|
+ takaiDialogMapper.delDialogDetail(id);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void updateDialog(TakaiDialogReqDTO dialogReqDTO) {
|
|
|
-
|
|
|
+ takaiDialogMapper.updateDialog(dialogReqDTO);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -285,7 +341,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
.embeddingId(knowledge.getEmbeddingId())
|
|
|
.description(knowledge.getDescription())
|
|
|
.build();
|
|
|
- int i = takaiKnowledgeMapper.insertKnowledge(params);
|
|
|
+ return takaiKnowledgeMapper.insertKnowledge(params);
|
|
|
}
|
|
|
} else {
|
|
|
logger.error("创建知识库调用python接口失败,返回状态码:{}", response.code());
|
|
|
@@ -326,7 +382,12 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
Integer code = obj.getInteger("code");
|
|
|
if (code == 200) {
|
|
|
// TakaiKnowledge info = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
- int i = takaiKnowledgeMapper.delKnowledge(knowledgeId);
|
|
|
+ int knowledgeInt = takaiKnowledgeMapper.delKnowledge(knowledgeId);
|
|
|
+ if(knowledgeInt > 0){
|
|
|
+ takaiDocumentMapper.delDocumentByKnowledgeId(knowledgeId);
|
|
|
+ takaiDocumentSettingsMapper.deleteDocumentSettingsByKnowledgeId(knowledgeId);
|
|
|
+ }
|
|
|
+ return knowledgeInt;
|
|
|
}
|
|
|
}
|
|
|
} catch (IOException e) {
|
|
|
@@ -422,6 +483,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
public int createApplication(TakaiApplicationParams params) {
|
|
|
SnowflakeDigitGenerator snowflakeDigitGenerator = new SnowflakeDigitGenerator(1, 1);
|
|
|
long appId = snowflakeDigitGenerator.nextId();
|
|
|
+
|
|
|
TakaiApplication info = TakaiApplication.builder().appId(String.valueOf(appId))
|
|
|
.name(params.getName())
|
|
|
.desc(params.getDesc())
|
|
|
@@ -521,7 +583,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
@Override
|
|
|
public List<TakaiQuestionDTO> selectQuestionByAppId(String appId) {
|
|
|
- return null;
|
|
|
+ List<TakaiQuestionDTO> List= takaiQuestionMapper.getQuestionList(appId);
|
|
|
+ return List;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -543,11 +606,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
@Override
|
|
|
public int updateDocumentSetting(TakaiDocumentSettings documentSettings, String documentId) {
|
|
|
- if (StringUtils.isNotEmpty(documentSettings.getSetSlice()) && !"3".equals(documentSettings.getSetSlice())) {
|
|
|
- documentSettings.setDocumentId(documentId);
|
|
|
- int i = takaiDocumentSettingsMapper.updateDocumentSettings(documentSettings);
|
|
|
- return i;
|
|
|
- }
|
|
|
+// if (StringUtils.isNotEmpty(documentSettings.getSetSlice()) && !"3".equals(documentSettings.getSetSlice())) {
|
|
|
+// documentSettings.setDocumentId(documentId);
|
|
|
+// int i = takaiDocumentSettingsMapper.updateDocumentSettings(documentSettings);
|
|
|
+// return i;
|
|
|
+// }
|
|
|
TakaiSysOss ossVo = new TakaiSysOss();
|
|
|
TakaiDocumentSettings settings = new TakaiDocumentSettings();
|
|
|
TakaiDocumentSettings settingsVo = takaiDocumentSettingsMapper.selectById(documentId);
|
|
|
@@ -573,8 +636,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
public JSONObject getSliceList(TakaiSliceParams params) {
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getSlicePage();
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("document_id", "f62059be-a119-47ee-b07e-20970257e033");
|
|
|
- jsonObject.put("knowledge_id", "milvus_hybrid");
|
|
|
+ jsonObject.put("document_id", params.getDocument_id());
|
|
|
+ jsonObject.put("knowledge_id", params.getKnowledge_id());
|
|
|
jsonObject.put("text", params.getText());
|
|
|
jsonObject.put("pageNum", params.getPageNum());
|
|
|
jsonObject.put("pageSize", params.getPageSize());
|
|
|
@@ -604,9 +667,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
@Override
|
|
|
public int deleteSlice(String sliceId, String knowledgeId) {
|
|
|
- TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
+// TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
|
|
|
|
|
|
- String url = deepseekConfig.getBaseurl() + deepseekConfig.getDeleteSlice() + "/" + sliceId + "/milvus_hybrid";
|
|
|
+ String url = deepseekConfig.getBaseurl() + deepseekConfig.getDeleteSlice() + "/" + sliceId + "/" + knowledgeId;
|
|
|
Request request = buildDeleteRequest(url);
|
|
|
OkHttpClient client = buildOkHttpClient();
|
|
|
Response response = null;
|
|
|
@@ -628,7 +691,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
|
|
|
@Override
|
|
|
public JSONObject getSliceDetail(String sliceId, String knowledgeId) {
|
|
|
- String url = deepseekConfig.getBaseurl() + deepseekConfig.getSliceDetail() + "/milvus_hybrid" + "/" + sliceId;
|
|
|
+ String url = deepseekConfig.getBaseurl() + deepseekConfig.getSliceDetail() + "/" + knowledgeId + "/" + sliceId;
|
|
|
Request request = buildGetRequest(url);
|
|
|
|
|
|
OkHttpClient client = buildOkHttpClient();
|
|
|
@@ -651,7 +714,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
public int updateSliceInfo(TakaiSliceUpdateParams params) {
|
|
|
String url = deepseekConfig.getBaseurl() + deepseekConfig.getUpdateSlice();
|
|
|
JSONObject object = new JSONObject();
|
|
|
- object.put("knowledge_id", "milvus_hybrid");
|
|
|
+ object.put("knowledge_id", params.getKnowledgeId());
|
|
|
object.put("slice_id", params.getSliceId());
|
|
|
object.put("slice_text", params.getSliceText());
|
|
|
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), object.toJSONString());
|
|
|
@@ -740,21 +803,15 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
|
|
|
return obj;
|
|
|
}
|
|
|
|
|
|
- private String getMimeType(File file) {
|
|
|
- if (!file.exists()) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- String fileName = file.getName().toLowerCase();
|
|
|
- if (fileName.endsWith(".pdf")) {
|
|
|
- return "application/json";
|
|
|
- } else if (fileName.endsWith(".doc") || fileName.endsWith(".docx")) {
|
|
|
- return "application/msword";
|
|
|
- } else if (fileName.endsWith(".txt")) {
|
|
|
- return "text/plain";
|
|
|
- } else {
|
|
|
- return null;
|
|
|
+ private List<Map<String, Object>> setValue(List<TakaiDialogRespDTO> list){
|
|
|
+ List<Map<String, Object>> l = new ArrayList();
|
|
|
+ for (TakaiDialogRespDTO vo : list) {
|
|
|
+ Map<String, Object> map = new HashMap();
|
|
|
+ map.put("key", vo.getId());
|
|
|
+ map.put("label", vo.getDialog_name());
|
|
|
+ l.add(map);
|
|
|
}
|
|
|
+ return l;
|
|
|
}
|
|
|
|
|
|
private OkHttpClient buildOkHttpClient() {
|