|
|
@@ -24,10 +24,8 @@ import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@RestController
|
|
|
@@ -39,6 +37,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 对话聊天
|
|
|
+ *
|
|
|
* @param response
|
|
|
* @param request
|
|
|
* @param sseParams
|
|
|
@@ -46,25 +45,23 @@ 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
|
|
|
- {
|
|
|
+ throws Exception {
|
|
|
return takaiAisService.sseInvoke(sseParams);
|
|
|
}
|
|
|
|
|
|
@PostMapping("/async/completions")
|
|
|
- public AjaxResult asyncCompletions(@RequestBody TakaiCompletionsParams params)
|
|
|
- {
|
|
|
+ public AjaxResult asyncCompletions(@RequestBody TakaiCompletionsParams params) {
|
|
|
return success(takaiAisService.asyncCompletions(params));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 应用列表
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/getApplicationList")
|
|
|
- public TableDataInfo getApplicationList(@RequestBody TakaiPageParams params)
|
|
|
- {
|
|
|
+ public TableDataInfo getApplicationList(@RequestBody TakaiPageParams params) {
|
|
|
List<TakaiApplication> s = takaiAisService.getApplicationList();
|
|
|
PageHelper.startPage(params.getPageNumber(), params.getPageSize(), "").setReasonable(true);
|
|
|
List<TakaiApplication> list = takaiAisService.getApplicationList();
|
|
|
@@ -73,60 +70,61 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 创建应用
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/createApplication")
|
|
|
- public AjaxResult addApplication(@RequestBody TakaiApplicationParams params)
|
|
|
- {
|
|
|
+ public AjaxResult addApplication(@RequestBody TakaiApplicationParams params) {
|
|
|
int i = takaiAisService.createApplication(params);
|
|
|
return AjaxResult.success(i);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询应用详情
|
|
|
+ *
|
|
|
* @param appId
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/selectApplication/{appId}")
|
|
|
- public AjaxResult selectApplication(@PathVariable String appId)
|
|
|
- {
|
|
|
+ public AjaxResult selectApplication(@PathVariable String appId) {
|
|
|
JSONObject application = takaiAisService.selectApplication(appId);
|
|
|
return AjaxResult.success(application);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改应用
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @param appId
|
|
|
* @return
|
|
|
*/
|
|
|
@PutMapping("/updateApplication/{appId}")
|
|
|
- public AjaxResult updateApplication(@RequestBody TakaiApplicationParams params, @PathVariable String appId)
|
|
|
- {
|
|
|
+ public AjaxResult updateApplication(@RequestBody TakaiApplicationParams params, @PathVariable String appId) {
|
|
|
int application = takaiAisService.updateApplication(params, appId);
|
|
|
return AjaxResult.success(application);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除应用
|
|
|
+ *
|
|
|
* @param appId
|
|
|
* @return
|
|
|
*/
|
|
|
@DeleteMapping("/delApplication/{appId}")
|
|
|
- public AjaxResult delApplication(@PathVariable String appId)
|
|
|
- {
|
|
|
+ public AjaxResult delApplication(@PathVariable String appId) {
|
|
|
int application = takaiAisService.delApplication(appId);
|
|
|
return AjaxResult.success(application);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 首页
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/index")
|
|
|
- public AjaxResult index(@RequestBody PageParams params){
|
|
|
+ public AjaxResult index(@RequestBody PageParams params) {
|
|
|
// 问答应用总数
|
|
|
List<TakaiApplication> appList = takaiAisService.getApplicationList();
|
|
|
// 知识库总数
|
|
|
@@ -139,22 +137,23 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 获取知识库下拉列表
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/knowledgeList")
|
|
|
- public AjaxResult getKnowledgeList(){
|
|
|
+ public AjaxResult getKnowledgeList() {
|
|
|
return success(takaiAisService.queryKnowledgeList());
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 知识库列表
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/getKnowledgeList")
|
|
|
- public TableDataInfo getKnowledgeList(@RequestBody TakaiPageParams params)
|
|
|
- {
|
|
|
+ public TableDataInfo getKnowledgeList(@RequestBody TakaiPageParams params) {
|
|
|
List<TakaiKnowledge> s = takaiAisService.queryKnowledgeList();
|
|
|
PageHelper.startPage(params.getPageNumber(), params.getPageSize(), "").setReasonable(true);
|
|
|
List<TakaiKnowledge> list = takaiAisService.queryKnowledgeList();
|
|
|
@@ -163,6 +162,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 创建知识库
|
|
|
+ *
|
|
|
* @param knowledge
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -174,17 +174,19 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 知识库详情
|
|
|
+ *
|
|
|
* @param knowledgeId
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/detailKnowledge/{knowledgeId}")
|
|
|
- public AjaxResult detailKnowledge(@PathVariable String knowledgeId){
|
|
|
+ public AjaxResult detailKnowledge(@PathVariable String knowledgeId) {
|
|
|
TakaiKnowledge result = takaiAisService.detailKnowledge(knowledgeId);
|
|
|
return success(result);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改知识库
|
|
|
+ *
|
|
|
* @param knowledge
|
|
|
* @param knowledgeId
|
|
|
* @return
|
|
|
@@ -197,6 +199,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 删除知识库
|
|
|
+ *
|
|
|
* @param knowledgeId
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -208,6 +211,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 知识列表
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -221,16 +225,18 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 知识详情
|
|
|
+ *
|
|
|
* @param documentId
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/documentDetail/{documentId}")
|
|
|
- public AjaxResult documentDetail(@PathVariable String documentId){
|
|
|
+ public AjaxResult documentDetail(@PathVariable String documentId) {
|
|
|
return success(takaiAisService.documentDetail(documentId));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新知识
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @param documentId
|
|
|
* @return
|
|
|
@@ -243,6 +249,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 删除知识
|
|
|
+ *
|
|
|
* @param documentId
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -254,6 +261,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 上传知识文件
|
|
|
+ *
|
|
|
* @param files
|
|
|
* @param knowledgeId
|
|
|
* @return
|
|
|
@@ -262,17 +270,17 @@ public class TakaiAiController extends BaseController {
|
|
|
@PostMapping("/uploadDocument/{knowledgeId}") //@RequestPart DocumentParams documentParams,
|
|
|
public AjaxResult uploadDocument(@RequestParam("files") MultipartFile[] files,
|
|
|
@PathVariable String knowledgeId) throws Exception {
|
|
|
- try{
|
|
|
+ try {
|
|
|
int i = takaiAisService.uploadDocument(files, knowledgeId);
|
|
|
return success(i);
|
|
|
- }catch (Exception e){
|
|
|
+ } catch (Exception e) {
|
|
|
return error("0");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
* 获取知识配置信息
|
|
|
+ *
|
|
|
* @param documentId
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -284,6 +292,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 更新知识配置详情
|
|
|
+ *
|
|
|
* @param documentSetting
|
|
|
* @param documentId
|
|
|
* @return
|
|
|
@@ -296,6 +305,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 获取切片列表
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -313,16 +323,18 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 删除切片
|
|
|
+ *
|
|
|
* @param sliceId
|
|
|
* @param knowledgeId
|
|
|
*/
|
|
|
@DeleteMapping("/deleteSlice/{sliceId}/{knowledgeId}/{documentId}")
|
|
|
public AjaxResult deleteSlice(@PathVariable String sliceId, @PathVariable String knowledgeId, @PathVariable String documentId) {
|
|
|
- return success (takaiAisService.deleteSlice(sliceId, knowledgeId, documentId));
|
|
|
+ return success(takaiAisService.deleteSlice(sliceId, knowledgeId, documentId));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 切片详情
|
|
|
+ *
|
|
|
* @param sliceId
|
|
|
* @param knowledgeId
|
|
|
* @return
|
|
|
@@ -335,29 +347,30 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 更新切片信息
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@PutMapping("/updateSliceInfo")
|
|
|
- public AjaxResult updateSliceInfo(@RequestBody TakaiSliceUpdateParams params)
|
|
|
- {
|
|
|
+ public AjaxResult updateSliceInfo(@RequestBody TakaiSliceUpdateParams params) {
|
|
|
return success(takaiAisService.updateSliceInfo(params));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取聊天列表
|
|
|
+ *
|
|
|
* @param params
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/chatHistory/list")
|
|
|
- public TableDataInfo dataExportList(@RequestBody TakaiPageParams params){
|
|
|
- if(StringUtils.isNotBlank(params.getAppId())){
|
|
|
+ public TableDataInfo dataExportList(@RequestBody TakaiPageParams params) {
|
|
|
+ if (StringUtils.isNotBlank(params.getAppId())) {
|
|
|
//获取应用聊天列表
|
|
|
List<Object> s = takaiAisService.selectDialogListByAppId(params.getAppId(), params.getUserId());
|
|
|
PageHelper.startPage(params.getPageNumber(), params.getPageSize(), "").setReasonable(true);
|
|
|
List<Object> list = takaiAisService.selectDialogListByAppId(params.getAppId(), params.getUserId());
|
|
|
return getDataTableResultTotal(list, Long.valueOf(s.size()));
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
//获取所有列表
|
|
|
List<Object> s = takaiAisService.selectDialogListByAppId(null, null);
|
|
|
PageHelper.startPage(params.getPageNumber(), params.getPageSize(), "").setReasonable(true);
|
|
|
@@ -369,6 +382,7 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 导出聊天记录
|
|
|
+ *
|
|
|
* @param response
|
|
|
* @param id
|
|
|
*/
|
|
|
@@ -383,110 +397,149 @@ public class TakaiAiController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 应用列表
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/application/list")
|
|
|
- public AjaxResult index(){
|
|
|
+ public AjaxResult index() {
|
|
|
List<TakaiApplication> appList = takaiAisService.getApplicationList();
|
|
|
return success(appList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 保存聊天记录
|
|
|
+ *
|
|
|
* @param dialogReqDTO
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/dialog/save")
|
|
|
- public AjaxResult saveDialog(@RequestBody TakaiDialogReqDTO dialogReqDTO)
|
|
|
- {
|
|
|
+ public AjaxResult saveDialog(@RequestBody TakaiDialogReqDTO dialogReqDTO) {
|
|
|
takaiAisService.saveDialog(dialogReqDTO);
|
|
|
return success();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 聊天集合
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/dialog/list/{appId}")
|
|
|
- public AjaxResult dialogList(@PathVariable String appId)
|
|
|
- {
|
|
|
+ public AjaxResult dialogList(@PathVariable String appId) {
|
|
|
List<Object> dialogs = takaiAisService.getDialogList(appId);
|
|
|
return success(dialogs);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 聊天详情
|
|
|
+ *
|
|
|
* @param dialogId
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/dialog/detail/{dialogId}")
|
|
|
- public AjaxResult dialogDetail(@PathVariable String dialogId)
|
|
|
- {
|
|
|
+ public AjaxResult dialogDetail(@PathVariable String dialogId) {
|
|
|
List<TakaiDialogRespDTO> detail = takaiAisService.getDialogDetail(dialogId);
|
|
|
return success(detail);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除聊天记录
|
|
|
+ *
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
@DeleteMapping("/dialog/del/{id}")
|
|
|
- public AjaxResult delDialog(@PathVariable String id)
|
|
|
- {
|
|
|
+ public AjaxResult delDialog(@PathVariable String id) {
|
|
|
takaiAisService.DelDialogDetail(id);
|
|
|
return success();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 聊天标题重命名
|
|
|
+ *
|
|
|
* @param dialogReqDTO
|
|
|
* @return
|
|
|
*/
|
|
|
@PutMapping("/dialog/update")
|
|
|
- public AjaxResult updateDialog(@RequestBody TakaiDialogReqDTO dialogReqDTO)
|
|
|
- {
|
|
|
+ public AjaxResult updateDialog(@RequestBody TakaiDialogReqDTO dialogReqDTO) {
|
|
|
takaiAisService.updateDialog(dialogReqDTO);
|
|
|
return success();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 预设问题
|
|
|
+ *
|
|
|
* @param appId
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/presets/{appId}")
|
|
|
- public AjaxResult presets(@PathVariable String appId){
|
|
|
+ public AjaxResult presets(@PathVariable String appId) {
|
|
|
List<TakaiQuestionDTO> list = takaiAisService.selectQuestionByAppId(appId);
|
|
|
List<String> strList = new ArrayList();
|
|
|
- for (TakaiQuestionDTO vo: list){
|
|
|
+ for (TakaiQuestionDTO vo : list) {
|
|
|
strList.add(vo.getQuestion());
|
|
|
}
|
|
|
return success(strList);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 新增切片
|
|
|
+ *
|
|
|
+ * @param params
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@PostMapping("/add/slice")
|
|
|
public AjaxResult addSlice(@RequestBody TakaiSliceUpdateParams params) {
|
|
|
return success(takaiAisService.addSlice(params));
|
|
|
}
|
|
|
|
|
|
- @GetMapping("/test")
|
|
|
- public AjaxResult test(){
|
|
|
- TakaiMediaReplacement vo = takaiAisService.getTakaiMediaReplacement();
|
|
|
- return success(vo);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 获取聊天切片列表
|
|
|
+ *
|
|
|
+ * @param params
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/slicePage")
|
|
|
+ public TableDataInfo dataExportList(@RequestBody SlicePageInfo params) {
|
|
|
+ DocumentInfo chunkInfo = params.getChunk_info();
|
|
|
+ List<ChunkList> chunkList = chunkInfo.getChunk_list();
|
|
|
+ // 1. 先按 rerank_score 降序排序所有chunk
|
|
|
+ List<ChunkList> sortedChunks = chunkList.stream()
|
|
|
+ .sorted(Comparator.comparingDouble(
|
|
|
+ (ChunkList s) -> Double.parseDouble(s.getRerank_score())
|
|
|
+ ).reversed())
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
+ // 2. 提取排序后的chunk_ids(此时已按分数排序)
|
|
|
+ List<String> sortedChunkIds = sortedChunks.stream()
|
|
|
+ .map(ChunkList::getChunk_id)
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
|
+ int fromIndex = (params.getPageNum() - 1) * params.getPageSize();
|
|
|
|
|
|
+ int toIndex = Math.min(fromIndex + params.getPageSize(), chunkList.size());
|
|
|
|
|
|
+ List<String> ids = sortedChunkIds.subList(fromIndex, toIndex);
|
|
|
|
|
|
+ PageHelper.startPage(params.getPageNum(), params.getPageSize(), "").setReasonable(true);
|
|
|
+ List<SliceInfo> list = takaiAisService.slicePageInfoList(ids);
|
|
|
+ list.forEach(sliceInfo -> {
|
|
|
+ chunkList.forEach(chunk -> {
|
|
|
+ if (sliceInfo.getSliceId().equals(chunk.getChunk_id())) {
|
|
|
+ sliceInfo.setRerankScore(chunk.getRerank_score());
|
|
|
+ sliceInfo.setChunkLength(chunk.getChunk_len());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ List<SliceInfo> sliceList = list.stream()
|
|
|
+ .sorted(Comparator.comparingDouble((SliceInfo s) -> Double.parseDouble(s.getRerankScore())).reversed())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ return getDataTableResultTotal(sliceList, sortedChunkIds.size());
|
|
|
+ }
|
|
|
+ @GetMapping("/test")
|
|
|
+ public AjaxResult test() {
|
|
|
+ TakaiMediaReplacement vo = takaiAisService.getTakaiMediaReplacement();
|
|
|
+ return success(vo);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
@GetMapping("/download/{fileName}")
|