Quellcode durchsuchen

智普接口新增参数前后端代码修改。聊天图片处理。

S0025136190 vor 7 Monaten
Ursprung
Commit
8f9f6737e4

+ 9 - 0
takai-admin/src/main/java/com/takai/init/InitDataLoader.java

@@ -1,5 +1,6 @@
 package com.takai.init;
 
+import com.takai.ai.service.ITakaiAiService;
 import com.takai.bigmodel.service.IBigModelService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
@@ -10,6 +11,9 @@ public class InitDataLoader implements CommandLineRunner {
 
     @Autowired IBigModelService bigModelService;
 
+    @Autowired
+    private ITakaiAiService takaiService;
+
     @Override
     public void run(String... args) throws Exception {
         loadData();
@@ -18,5 +22,10 @@ public class InitDataLoader implements CommandLineRunner {
     private void loadData() {
         System.out.println("========================初始化智谱信息()");
         bigModelService.initZhiPuInfo();
+        System.out.println("========================初始化智谱信息结束()");
+
+        System.out.println("========================初始化DeepSeek信息()");
+        takaiService.initDeepseekInfo();
+        System.out.println("========================初始化DeepSeek信息结束()");
     }
 }

+ 3 - 3
takai-admin/src/main/java/com/takai/web/controller/bigmodel/BigModelController.java

@@ -458,9 +458,9 @@ public class BigModelController extends BaseController {
      * 知识库下拉列表
      * @return
      */
-    @GetMapping("/applicationList")
-    public AjaxResult getApplicationList(){
-        return success(bigModelService.getKnowledgeList());
+    @GetMapping("/knowledgeList")
+    public AjaxResult getKnowledgeList(){
+        return success(bigModelService.queryKnowledgeListSelect());
     }
 
     /**

+ 13 - 1
takai-admin/src/main/java/com/takai/web/controller/takaiai/TakaiAiController.java

@@ -10,10 +10,12 @@ import com.takai.bigmodel.domain.dto.DialogReqDTO;
 import com.takai.bigmodel.domain.dto.DialogRespDTO;
 import com.takai.bigmodel.domain.dto.QuestionDTO;
 import com.takai.bigmodel.domain.entity.PageParams;
+import com.takai.common.annotation.Log;
 import com.takai.common.core.controller.BaseController;
 import com.takai.common.core.domain.AjaxResult;
 import com.takai.common.core.page.TableDataInfo;
 import com.takai.ai.domain.dto.TakaiDialogRespDTO;
+import com.takai.common.enums.BusinessType;
 import com.takai.common.utils.poi.ExcelUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -47,6 +49,7 @@ public class TakaiAiController extends BaseController {
      */
     @PostMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
     public SseEmitter chat(HttpServletResponse response, HttpServletRequest request, @RequestBody TakaiSseInfoParams sseParams)
+    throws Exception
     {
         return takaiAisService.sseInvoke(sseParams);
     }
@@ -142,7 +145,7 @@ public class TakaiAiController extends BaseController {
      * @return
      */
     @GetMapping("/knowledgeList")
-    public AjaxResult getApplicationList(){
+    public AjaxResult getKnowledgeList(){
         return success(takaiAisService.queryKnowledgeList());
     }
 
@@ -366,6 +369,7 @@ public class TakaiAiController extends BaseController {
      * @param response
      * @param id
      */
+    @Log(title = "聊天详情", businessType = BusinessType.EXPORT)
     @PostMapping("/dialog/export/{id}")
     public void export(HttpServletResponse response, @PathVariable String id) {
         List<TakaiDialogRespDTO> dialogs = takaiAisService.exportExcel(id);
@@ -458,6 +462,14 @@ public class TakaiAiController extends BaseController {
         return success(strList);
     }
 
+    @GetMapping("/test")
+    public AjaxResult test(){
+        TakaiMediaReplacement vo = takaiAisService.getTakaiMediaReplacement();
+        return success(vo);
+    }
+
+
+
 
 
 

+ 2 - 2
takai-ai/src/main/java/com/takai/ai/mapper/TakaiDialogMapper.java

@@ -33,14 +33,14 @@ public interface TakaiDialogMapper
      * @param dialogId
      * @return
      */
-    public String selectDialogById(String dialogId);
+    public TakaiDialogRespDTO selectDialogById(String dialogId);
 
     /**
      * 查询对话消息明细表信息
      * @param dialogId
      * @return
      */
-    public String selectDialogDetailById(String dialogId);
+    public TakaiDialogRespDTO selectDialogDetailById(String dialogId);
 
 
     /**

+ 4 - 0
takai-ai/src/main/java/com/takai/ai/service/ITakaiAiService.java

@@ -19,6 +19,8 @@ import java.util.Map;
 public interface ITakaiAiService
 {
 
+    void initDeepseekInfo();
+
     SseEmitter sseInvoke(TakaiSseInfoParams sseParams);
 
     List<String> asyncCompletions(TakaiCompletionsParams params);
@@ -83,4 +85,6 @@ public interface ITakaiAiService
 
     int updateSliceInfo(TakaiSliceUpdateParams params);
 
+    TakaiMediaReplacement getTakaiMediaReplacement();
+
 }

+ 101 - 56
takai-ai/src/main/java/com/takai/ai/service/impl/TakaiAiServiceImpl.java

@@ -12,6 +12,7 @@ import com.takai.ai.utils.MinioUtil;
 import com.takai.ai.utils.SnowflakeDigitGenerator;
 import com.takai.common.annotation.DataSource;
 import com.takai.common.config.DeepseekConfig;
+import com.takai.common.core.redis.RedisCache;
 import com.takai.common.enums.DataSourceType;
 import com.takai.ai.domain.dto.TakaiDialogReqDTO;
 import com.takai.ai.domain.dto.TakaiDialogRespDTO;
@@ -86,6 +87,9 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
     @Autowired
     private TakaiMediaReplacementMapper takaiMediaReplacementMapper;
 
+    @Autowired
+    private RedisCache redisCache;
+
     public static final String START_SIGN = "【";
     public static final String END_SIGN = "】";
     public static final String SYMBOL = "【示意图序号";
@@ -96,10 +100,37 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
 
     public static final String BEFOR = "天前";
 
+    @Override
+    public void initDeepseekInfo() {
+        //获取应用列表
+//        List<TakaiApplication> appList = takaiApplicationMapper.selectApplicationList(null);
+        //获取知识库列表
+        List<TakaiKnowledge> knowledgeList =  takaiKnowledgeMapper.selectKnowledgeList(null);
+        //获取知识列表
+        if(!knowledgeList.isEmpty()) {
+            for(TakaiKnowledge bmKnowledge : knowledgeList) {
+                TakaiDocument conditon = TakaiDocument.builder().knowledgeId(bmKnowledge.getKnowledgeId()).build();
+                List<TakaiDocument> documentList = takaiDocumentMapper.selectDocumentList(conditon);
+                if(!documentList.isEmpty()) {
+                    for (TakaiDocument bmDocument : documentList) {
+                        //获取知识图片列表
+                        TakaiMediaReplacement conditonR = TakaiMediaReplacement.builder().documentId(bmDocument.getDocumentId()).build();
+                        List<TakaiMediaReplacement> imageList = takaiMediaReplacementMapper.selectMediaList(conditonR);
+                        if(!imageList.isEmpty()) {
+                            for(TakaiMediaReplacement image : imageList) {
+                                redisCache.setCacheObject(image.getOriginText(),image.getMediaUrl());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     @Override
     public SseEmitter sseInvoke(TakaiSseInfoParams sseParams) {
         TakaiApplication appInfo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(sseParams.getAppId()).build());
-        if(appInfo != null) {
+        if (appInfo != null) {
             TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(appInfo.getKnowledgeIds()).build());
             if (knowledge != null) {
                 SseEmitter sseEmitter = new SseEmitter(0L);
@@ -131,41 +162,45 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
 
                     @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();
+                        if (!StringUtils.isEmpty(data)) {
+                            String newData = data.substring(preData.length());
+                            if (com.takai.common.utils.StringUtils.isNotEmpty(type) && "finish".equals(type)) {
+                                logger.info("deepseek聊天结束", newData);
+                            }
+                            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) {
+                                        //获取完整Key
+                                        int startPos = symbolData.indexOf(START_SIGN);
+                                        int endPos = symbolData.indexOf(END_SIGN) + 1;
+                                        String key = symbolData.substring(startPos,endPos);
+                                        String url = redisCache.getCacheObject(key);
+                                        if(org.springframework.util.StringUtils.hasText(url)) {
+                                            //匹配markdown图片格式
+                                            symbolData = symbolData.replace(key,"![](" + url +")");
+                                        }
+                                    }
+                                    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", "add");
-                                json.put("data", symbolData);
+                                json.put("event", type);
+                                json.put("data", newData);
                                 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);
                         }
                     }
 
@@ -201,7 +236,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
     public List<String> asyncCompletions(TakaiCompletionsParams params) {
         List<String> list = new ArrayList<>();
         TakaiApplication vo = takaiApplicationMapper.selectTargetApplication(TakaiApplication.builder().appId(params.getAppId()).build());
-        if(vo != null){
+        if (vo != null) {
             TakaiPromptInfo info = new TakaiPromptInfo();
             info.setContent(deepseekConfig.getPrompt());
             info.setRole("user");
@@ -211,7 +246,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
             jsonObject.put("model", vo.getModel());
             jsonObject.put("messages", params.getMessages());
             JSONObject result = getasyncCompletions(jsonObject);
-            if(result != null && result.getInteger("code") == 200){
+            if (result != null && result.getInteger("code") == 200) {
                 JSONArray array = result.getJSONArray("data");
                 list.addAll(array.toJavaList(String.class));
             }
@@ -219,7 +254,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
         return list;
     }
 
-    private JSONObject getasyncCompletions(JSONObject jsonObject){
+    private JSONObject getasyncCompletions(JSONObject jsonObject) {
         String url = deepseekConfig.getBaseurl() + deepseekConfig.getAsyncCompletions();
         RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString());
         Request request = buildPostRequest(url, requestBody);
@@ -228,11 +263,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
             Response response = client.newCall(request).execute();
             if (response.isSuccessful()) {
                 String body = response.body().string();
-                if(isJsonObject(body)){
+                if (isJsonObject(body)) {
                     return JSON.parseObject(body);
                 }
             }
-        }catch (IOException e) {
+        } catch (IOException e) {
             log.info("deepseek Request URL: {}", e.getMessage());
         }
         return null;
@@ -247,22 +282,22 @@ 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());
+        TakaiDialogRespDTO dialogVo = null;
+        if (com.takai.common.utils.StringUtils.isNotEmpty(dialogReqDTO.getId())) {
+            dialogVo = takaiDialogMapper.selectDialogById(dialogReqDTO.getId());
         }
 
-        if(id == null){
+        if (dialogVo == null) {
             takaiDialogMapper.insertDialog(dialogReqDTO);
             dialogId = dialogReqDTO.getId();
-        }else{
+        } else {
             dialogId = dialogReqDTO.getId();
         }
 
-        for(TakaiDialogDetailReqDTO dto  : dialogReqDTO.getMessages()) {
+        for (TakaiDialogDetailReqDTO dto : dialogReqDTO.getMessages()) {
             dto.setDialogId(dialogId);
-            String detailId = takaiDialogMapper.selectDialogDetailById(dto.getId());
-            if(detailId == null) {
+            TakaiDialogRespDTO detail = takaiDialogMapper.selectDialogDetailById(dto.getId());
+            if (detail == null) {
                 takaiDialogMapper.insertDialogDetail(dto);
             }
         }
@@ -276,19 +311,19 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
         //根据时间分组降序排序
         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()){
+        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){
+                if (daysBetween == 0l) {
                     m.put("label", TODAY);
                     m.put("children", setValue(entry.getValue()));
                     obj.add(m);
-                }else{
-                    m.put("label", -daysBetween+BEFOR);
+                } else {
+                    m.put("label", -daysBetween + BEFOR);
                     m.put("children", setValue(entry.getValue()));
                     obj.add(m);
                 }
@@ -300,7 +335,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
     @Override
     public void DelDialogDetail(String id) {
         int result = takaiDialogMapper.delDialog(id);
-        if(result > 0){
+        if (result > 0) {
             takaiDialogMapper.delDialogDetail(id);
         }
     }
@@ -383,7 +418,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                 if (code == 200) {
 //                    TakaiKnowledge info = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(knowledgeId).build());
                     int knowledgeInt = takaiKnowledgeMapper.delKnowledge(knowledgeId);
-                    if(knowledgeInt > 0){
+                    if (knowledgeInt > 0) {
                         takaiDocumentMapper.delDocumentByKnowledgeId(knowledgeId);
                         takaiDocumentSettingsMapper.deleteDocumentSettingsByKnowledgeId(knowledgeId);
                     }
@@ -583,7 +618,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
 
     @Override
     public List<TakaiQuestionDTO> selectQuestionByAppId(String appId) {
-        List<TakaiQuestionDTO> List= takaiQuestionMapper.getQuestionList(appId);
+        List<TakaiQuestionDTO> List = takaiQuestionMapper.getQuestionList(appId);
         return List;
     }
 
@@ -737,6 +772,16 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
         return 0;
     }
 
+    @Override
+    public TakaiMediaReplacement getTakaiMediaReplacement() {
+        TakaiMediaReplacement mrParams = TakaiMediaReplacement.builder()
+                .documentId("a2912832435041734656")
+                .originText("【示意图序号_a2912832435041734656_1】")
+                .mediaType("image").build();
+        TakaiMediaReplacement mrVo = takaiMediaReplacementMapper.selectTargetMedia(mrParams);
+        return mrVo;
+    }
+
     private boolean analysisFile(TakaiSysOss result, TakaiDocumentSettings settings, String flag) {
         TakaiKnowledge knowledge = takaiKnowledgeMapper.selectTargetKnowledge(TakaiKnowledge.builder().knowledgeId(settings.getKnowledgeId()).build());
         String url = deepseekConfig.getBaseurl() + deepseekConfig.getUploadKnowledge();
@@ -787,8 +832,8 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
         //根据时间分组降序排序
         NavigableMap<LocalDateTime, List<TakaiDialogRespDTO>> groupList = list.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()){
+        if (!groupList.isEmpty()) {
+            for (Map.Entry<LocalDateTime, List<TakaiDialogRespDTO>> entry : groupList.entrySet()) {
                 List<TakaiDialogRespDTO> aList = entry.getValue();
                 List<TakaiDialogRespDTO> detailList = takaiDialogMapper.selectDialogExport(aList.get(0).getId());
                 Map<String, Object> map = new HashMap();
@@ -803,7 +848,7 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
         return obj;
     }
 
-    private List<Map<String, Object>> setValue(List<TakaiDialogRespDTO> list){
+    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();
@@ -855,11 +900,11 @@ public class TakaiAiServiceImpl implements ITakaiAiService {
                 .url(url).post(requestBody).build();
     }
 
-    private boolean isJsonObject(String data){
+    private boolean isJsonObject(String data) {
         try {
             JSON.parseObject(data);
             return true;
-        }catch (Exception e){
+        } catch (Exception e) {
             return false;
         }
     }

+ 10 - 0
takai-bigmodel/src/main/java/com/takai/bigmodel/domain/entity/ApplicationParams.java

@@ -30,6 +30,8 @@ public class ApplicationParams {
 
     private List<String> questionList;
 
+    private Integer slice_count;
+
     public String getName() {
         return name;
     }
@@ -133,4 +135,12 @@ public class ApplicationParams {
     public void setQuestionList(List<String> questionList) {
         this.questionList = questionList;
     }
+
+    public Integer getSlice_count() {
+        return slice_count;
+    }
+
+    public void setSlice_count(Integer slice_count) {
+        this.slice_count = slice_count;
+    }
 }

+ 11 - 0
takai-bigmodel/src/main/java/com/takai/bigmodel/domain/entity/BmApplication.java

@@ -52,6 +52,8 @@ public class BmApplication extends BaseEntity
     /** max_token */
     private Integer maxToken;
 
+    private String knowledgeInfo;
+
     public String getAppId() {
         return appId;
     }
@@ -148,6 +150,14 @@ public class BmApplication extends BaseEntity
         this.maxToken = maxToken;
     }
 
+    public String getKnowledgeInfo() {
+        return knowledgeInfo;
+    }
+
+    public void setKnowledgeInfo(String knowledgeInfo) {
+        this.knowledgeInfo = knowledgeInfo;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -167,6 +177,7 @@ public class BmApplication extends BaseEntity
             .append("updateBy", getUpdateBy())
             .append("updateTime", getUpdateTime())
             .append("maxToken", getMaxToken())
+            .append("knowledgeInfo", getKnowledgeInfo())
             .toString();
     }
     @Override

+ 9 - 0
takai-bigmodel/src/main/java/com/takai/bigmodel/domain/entity/KnowledgeInfo.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 public class KnowledgeInfo {
 
+    private String param_desc;
     private String slice_config_type;
 
     private String recall_method;
@@ -24,6 +25,14 @@ public class KnowledgeInfo {
 
     private String recall_slice_splicing_method;
 
+    public String getParam_desc() {
+        return param_desc;
+    }
+
+    public void setParam_desc(String param_desc) {
+        this.param_desc = param_desc;
+    }
+
     public String getSlice_config_type() {
         return slice_config_type;
     }

+ 2 - 0
takai-bigmodel/src/main/java/com/takai/bigmodel/service/IBigModelService.java

@@ -132,4 +132,6 @@ public interface IBigModelService
 
     List<Object> selectDialogListByAppId(String appId);
 
+    List<BmKnowledge> queryKnowledgeListSelect();
+
 }

+ 30 - 45
takai-bigmodel/src/main/java/com/takai/bigmodel/service/impl/BigModelServiceImpl.java

@@ -1432,27 +1432,6 @@ public class BigModelServiceImpl implements IBigModelService
         params.setIcon_color("blue");
         params.setIcon_type("robot_assist");
         String url = bigModelConfig.getBaseurl() + bigModelConfig.getApplication();
-//        if(params != null && Objects.nonNull(params.getKnowledge_info().getRerank_status()) && params.getKnowledge_info().getRerank_status() == 1){
-//            List<IndexType> reankList = new ArrayList();
-//            for(int i=0; i<params.getKnowledge_ids().size(); i++){
-//                IndexType type = new IndexType();
-//                type.setIndex_type_id(i);
-//                type.setKnowledge_id(params.getKnowledge_ids().get(i));
-//                reankList.add(type);
-//            }
-//            params.getKnowledge_info().setRerank_index_type_list(reankList);
-//        }
-//        if(params != null && Objects.nonNull(params.getKnowledge_info().getRecall_method()) &&
-//                ("embedding".equals(params.getKnowledge_info().getRecall_method()) || "mixed".equals(params.getKnowledge_info().getRecall_method()))){
-//            List<IndexType> recallList = new ArrayList();
-//            for(int i=0; i<params.getKnowledge_ids().size(); i++){
-//                IndexType type = new IndexType();
-//                type.setIndex_type_id(i);
-//                type.setKnowledge_id(params.getKnowledge_ids().get(i));
-//                recallList.add(type);
-//            }
-//            params.getKnowledge_info().setRecall_index_type_list(recallList);
-//        }
         JSONObject jsonObject = JSONObject.from(params);
         RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8") , jsonObject.toJSONString());
         Request request = buildPostRequest(url, requestBody);
@@ -1468,6 +1447,11 @@ public class BigModelServiceImpl implements IBigModelService
                     if("200".equals(code)){
                         //调用列表接口将应用数据写入数据库
                         getValidAppList();
+                        BmApplication vo = BmApplication.builder().appId(appId)
+                                .knowledgeInfo(JSONObject.toJSONString(params.getKnowledge_info()))
+                                .maxToken(params.getMax_token())
+                                .build();
+                        bmApplicationMapper.updateApplication(vo);
                         //预设问题写入数据库
                         List<String> list = params.getQuestionList();
                         if(!list.isEmpty() && list.size() > 0){
@@ -1492,27 +1476,6 @@ public class BigModelServiceImpl implements IBigModelService
     @Override
     public JSONObject updateApplication(ApplicationParams params, String appId) {
         String url = bigModelConfig.getBaseurl() + bigModelConfig.getApplication() + "/" + appId;
-//        if(params != null && Objects.nonNull(params.getKnowledge_info().getRerank_status()) && params.getKnowledge_info().getRerank_status() == 1){
-//            List<IndexType> reankList = new ArrayList();
-//            for(int i=0; i<params.getKnowledge_ids().size(); i++){
-//                IndexType type = new IndexType();
-//                type.setIndex_type_id(i);
-//                type.setKnowledge_id(params.getKnowledge_ids().get(i));
-//                reankList.add(type);
-//            }
-//            params.getKnowledge_info().setRerank_index_type_list(reankList);
-//        }
-//        if(params != null && Objects.nonNull(params.getKnowledge_info().getRecall_method()) &&
-//                ("embedding".equals(params.getKnowledge_info().getRecall_method()) || "mixed".equals(params.getKnowledge_info().getRecall_method()))){
-//            List<IndexType> recallList = new ArrayList();
-//            for(int i=0; i<params.getKnowledge_ids().size(); i++){
-//                IndexType type = new IndexType();
-//                type.setIndex_type_id(i);
-//                type.setKnowledge_id(params.getKnowledge_ids().get(i));
-//                recallList.add(type);
-//            }
-//            params.getKnowledge_info().setRecall_index_type_list(recallList);
-//        }
         JSONObject json = JSONObject.from(params);
         RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8") , json.toJSONString());
         Request request = buildPutRequest(url, requestBody);
@@ -1526,6 +1489,11 @@ public class BigModelServiceImpl implements IBigModelService
                     String code = String.valueOf(object.get("code"));
                     if("200".equals(code)){
                         //调用列表接口将应用数据写入数据库
+                        BmApplication vo = BmApplication.builder().appId(appId)
+                                .knowledgeInfo(JSONObject.toJSONString(params.getKnowledge_info()))
+                                .maxToken(params.getMax_token())
+                                .build();
+                        bmApplicationMapper.updateApplication(vo);
                         getValidAppList();
                         //预设问题写入数据库
                         questionMapper.delQuestionByAppId(appId);
@@ -1621,11 +1589,23 @@ public class BigModelServiceImpl implements IBigModelService
                     String code = String.valueOf(object.get("code"));
                     if("200".equals(code)){
                         JSONObject obj = new JSONObject();
-//                        BmApplication params = BmApplication.builder().appId(appId).build();
-//                        BmApplication vo = bmApplicationMapper.selectTargetApplication(params);
+                        BmApplication params = BmApplication.builder().appId(appId).build();
+                        BmApplication vo = bmApplicationMapper.selectTargetApplication(params);
                         List<QuestionDTO> list = questionMapper.getQuestionList(appId);
                         JSONObject json = object.getJSONObject("data");
-//                        json.put("max_token", vo.getMaxToken());
+                        if(vo != null){
+                            json.put("knowledgeInfo", vo.getKnowledgeInfo());
+                            json.put("maxToken", vo.getMaxToken());
+                        }
+//                        JSONArray array =  json.getJSONArray("knowledge_ids");
+//                        if(array != null && array.size() > 0){
+//                            List<String> knowledgeList = new ArrayList();
+//                            array.forEach(a -> {
+//                                String knowledgeId = String.valueOf(a);
+//                                knowledgeList.add(knowledgeId);
+//                            });
+//                            json.put("knowledge_ids", knowledgeList);
+//                        }
                         obj.put("detail", json);
                         obj.put("questionlist", list);
                         return obj;
@@ -1771,6 +1751,11 @@ public class BigModelServiceImpl implements IBigModelService
 //        return result;
     }
 
+    @Override
+    public List<BmKnowledge> queryKnowledgeListSelect() {
+        return bmKnowledgeMapper.selectKnowledgeList(null);
+    }
+
     private Request buildGetRequest(String url) {
         return new Request.Builder()
                 .addHeader("accept", "*/*")

+ 8 - 1
takai-bigmodel/src/main/resources/mapper/bm/BmApplicationMapper.xml

@@ -23,10 +23,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="createTime" column="create_time" />
 		<result property="updateBy"   column="update_by"   />
 		<result property="updateTime" column="update_time" />
+		<result property="knowledgeInfo"   column="knowledge_info"   />
 	</resultMap>
 	
 	<sql id="selectSql">
-        select appId, name, description, prompt, top_p, temperature, knowledge_ids, slice_count,model,icon_color,icon_type,max_token, create_by, create_time, remark
+        select appId, name, description, prompt, top_p, temperature, knowledge_ids, slice_count,model,icon_color,icon_type,max_token, create_by, create_time, remark, knowledge_info
 		from bm_application
     </sql>
 
@@ -60,6 +61,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="iconType != null and iconType != ''">icon_type,</if>
  			<if test="remark != null and remark != ''">remark,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
+		    <if test="knowledgeInfo != null and knowledgeInfo != ''">knowledge_info,</if>
+		    <if test="maxToken != null and maxToken != ''">max_token,</if>
  			create_time
  		)values(
 			<if test="appId != null">#{appId},</if>
@@ -75,6 +78,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="iconType != null and iconType != ''">#{iconType},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
+			<if test="knowledgeInfo != null and knowledgeInfo != ''">#{knowledgeInfo},</if>
+			<if test="maxToken != null and maxToken != ''">#{maxToken},</if>
  			sysdate()
  		)
 	</insert>
@@ -94,6 +99,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="iconType != null and iconType != ''">icon_type = #{iconType},</if>
 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
 			<if test="remark != null">remark = #{remark},</if>
+		    <if	test="knowledgeInfo != null and knowledgeInfo != ''">knowledge_info = #{knowledgeInfo},</if>
+		    <if test="maxToken != null">max_token = #{maxToken},</if>
 			update_time = sysdate()
 		</set>
 		where appId = #{appId}

+ 5 - 0
takai-quartz/pom.xml

@@ -39,6 +39,11 @@
             <artifactId>takai-bigmodel</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.takai</groupId>
+            <artifactId>takai-ai</artifactId>
+        </dependency>
+
     </dependencies>
 
 </project>

+ 8 - 0
takai-quartz/src/main/java/com/takai/quartz/task/TkTask.java

@@ -1,5 +1,6 @@
 package com.takai.quartz.task;
 
+import com.takai.ai.service.ITakaiAiService;
 import com.takai.bigmodel.service.IBigModelService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +19,9 @@ public class TkTask
     @Autowired
     private IBigModelService bigModelService;
 
+    @Autowired
+    private ITakaiAiService takaiAiService;
+
     public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
     {
         System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
@@ -33,5 +37,9 @@ public class TkTask
         log.info("===================获取智谱应用信息Job开始执行==============");
         bigModelService.initZhiPuInfo();
         log.info("===================获取智谱应用信息Job执行结束==============");
+
+        log.info("===================获取DeepSeek应用信息Job开始执行==============");
+        takaiAiService.initDeepseekInfo();
+        log.info("===================获取DeepSeek应用信息Job执行结束==============");
     }
 }