--- /dev/null
+package org.onap.usecaseui.llmadaptation.bean;
+
+import lombok.Data;
+
+@Data
+public class File {
+ private String fileId;
+
+ private String fileName;
+
+ public File(String fileId, String fileName) {
+ this.fileId = fileId;
+ this.fileName = fileName;
+ }
+}
private String updateTime;
- private List<String> filesName;
+ private List<File> fileList;
}
private String maaSType;
- private List<ModelInformation> modelList;
+ private String serverIp;
+
+ private String vectorModel;
+ private List<ModelInformation> modelList;
}
public class CreateDataSetParam {
private String type;
- private String avatar;
-
private String name;
private String intro;
private String agentModel;
-
- private String vectorModel;
}
public static final String DELETE_APPLICATION = "/api/v1/assistant/delete?assistant_id=";
public static final String GET_APPLICATION_URL = "/api/v1/assistant/info/";
+
+ public static final String DELETE_FILE_URL = "/api/v1/knowledge/file/";
}
package org.onap.usecaseui.llmadaptation.constant;
public class FastGptConstant {
- public static final String COOKIE_VALUE = "fastgpt_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYmEiLCJ0ZWFtSWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYzAiLCJ0bWJJZCI6IjY3MWY1NDYwYzhmNzdhMWMwZjNlNTJjMiIsImlzUm9vdCI6dHJ1ZSwiZXhwIjoxNzM1NTIzMzY0LCJpYXQiOjE3MzQ5MTg1NjR9.GPomC4qSnz3ADnEIo4sgl8jROaCsomEh9J6kfVAZuBQ";
+ public static final String COOKIE_VALUE = "fastgpt_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYmEiLCJ0ZWFtSWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYzAiLCJ0bWJJZCI6IjY3MWY1NDYwYzhmNzdhMWMwZjNlNTJjMiIsImlzUm9vdCI6dHJ1ZSwiZXhwIjoxOTU2NTQyOTczLCJpYXQiOjE3MzU3OTA5NzN9.T0RPpbST7FuRTusBkd1HzolfqNsIu7ZzvcrZOmq-mN0";
public static final String CREATE_DATASET_URL = "/api/core/dataset/create";
public static final String APPLICATION_CHAT_URL = "/api/v1/chat/completions";
public static final String DELETE_APPLICATION = "/api/core/app/del?appId=";
+
+ public static final String FAST_GPT = "fastGpt";
+
+ public static final String DELETE_FILE_URL = "/api/core/dataset/collection/delete?id=";
+
+ public static final String GET_COLLECTION_LIST_URL = "/api/core/dataset/collection/list";
}
+++ /dev/null
-package org.onap.usecaseui.llmadaptation.constant;
-
-import lombok.Getter;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-@Component
-@Getter
-public class ServerConstant {
-
- @Value("${fastGpt.server}")
- private String fastGptServer;
-
- @Value("${biSheng.server}")
- private String biShengServer;
-
- @Value("${fastGpt.model}")
- private String fastGptModel;
-
- @Value("${biSheng.model}")
- private int biShengModel;
-
- @Value("${fastGpt.maaSType}")
- private String fastGptType;
-
- @Value("${biSheng.maaSType}")
- private String biShengType;
-}
public Mono<ServiceResult> editDataset(@RequestBody KnowledgeBase knowledgeBase) {
return datasetService.editDataset(knowledgeBase);
}
+
+ @PostMapping(value = "/file/upload", produces = MediaType.APPLICATION_JSON_VALUE)
+ public Mono<ServiceResult> uploadFiles(@RequestPart("files") Flux<FilePart> fileParts,
+ @RequestPart("metaData") String metaData) {
+ return datasetService.uploadFiles(fileParts, metaData);
+ }
+
+ @DeleteMapping(value = "/file/delete/{fileId}", produces = MediaType.APPLICATION_JSON_VALUE)
+ public Mono<ServiceResult> deleteFile(@PathVariable("fileId") String fileId) {
+ return datasetService.deleteFile(fileId);
+ }
}
Application getApplicationById(@Param(value = "applicationId") String applicationId);
int updateApplication(@Param(value = "application") Application application);
+
+ List<Application> getApplicationByDatasetId(@Param(value = "knowledgeBaseId") String knowledgeBaseId);
}
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import org.onap.usecaseui.llmadaptation.bean.File;
import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase;
import java.util.List;
public interface DatasetMapper {
int insertKnowledgeBaseRecord(@Param(value = "knowledgeBase") KnowledgeBase knowledgeBase);
- int insertFileName(@Param(value = "fileId") String fileId,@Param(value = "fileName") String fileName,@Param(value = "knowledgeBaseId") String knowledgeBaseId);
+ int insertFileName(@Param(value = "files") List<File> files, @Param(value = "knowledgeBaseId") String knowledgeBaseId);
List<KnowledgeBase> getKnowledgeBaseRecords();
- List<String> getFileNamesByKnowledgeBaseId(@Param(value = "knowledgeBaseId") String knowledgeBaseId);
+ List<File> getFileNamesByKnowledgeBaseId(@Param(value = "knowledgeBaseId") String knowledgeBaseId);
KnowledgeBase getKnowledgeBaseRecordById(@Param(value = "knowledgeBaseId") String knowledgeBaseId);
int deleteFileById(@Param(value = "knowledgeBaseId") String knowledgeBaseId);
int updateKnowledgeBase(@Param(value = "knowledgeBase") KnowledgeBase knowledgeBase);
+
+ int deleteFileByFileId(@Param(value = "fileId") String fileId);
+
+ String getKnowledgeIdByFileId(@Param(value = "fileId") String fileId);
}
import reactor.core.publisher.Mono;
public interface BiShengApplicationService {
- Mono<ServiceResult> createApplication(Application application);
+ Mono<ServiceResult> createApplication(Application application, String serverIp);
- Flux<String> chat(JSONObject question);
+ Flux<String> chat(JSONObject question, String serverIp);
- Mono<ServiceResult> removeApplication(String applicationId);
+ Mono<ServiceResult> removeApplication(String applicationId, String serverIp);
- Mono<ServiceResult> editApplication(Application application);
+ Mono<ServiceResult> editApplication(Application application, String serverIp);
}
package org.onap.usecaseui.llmadaptation.service;
import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase;
+import org.onap.usecaseui.llmadaptation.bean.MaaSPlatform;
import org.onap.usecaseui.llmadaptation.bean.ServiceResult;
import org.springframework.http.codec.multipart.FilePart;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public interface BiShengDatasetService {
- Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData);
+ Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData, MaaSPlatform maaSPlatform);
- Mono<ServiceResult> removeDataset(String knowledgeBaseId);
+ Mono<ServiceResult> removeDataset(String knowledgeBaseId, String serverIp);
- Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase);
+ Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase, MaaSPlatform maaSPlatform);
+
+ Mono<ServiceResult> uploadFiles(Flux<FilePart> fileParts, String knowledgeBaseId, String serverIp);
+
+ Mono<ServiceResult> deleteFile(String fileId, String serverIp);
}
ServiceResult geDatasetById(String knowledgeBaseId);
Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase);
+
+ Mono<ServiceResult> uploadFiles(Flux<FilePart> fileParts, String metaData);
+
+ Mono<ServiceResult> deleteFile(String fileId);
}
import reactor.core.publisher.Mono;
public interface FastGptApplicationService {
- Mono<ServiceResult> createApplication(Application application);
+ Mono<ServiceResult> createApplication(Application application, String serverIp);
- Flux<String> chat(JSONObject question);
+ Flux<String> chat(JSONObject question, String serverIp);
- Mono<ServiceResult> removeApplication(String applicationId);
+ Mono<ServiceResult> removeApplication(String applicationId, String serverIp);
- Mono<ServiceResult> editApplication(Application application);
+ Mono<ServiceResult> editApplication(Application application, String serverIp);
}
package org.onap.usecaseui.llmadaptation.service;
import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase;
+import org.onap.usecaseui.llmadaptation.bean.MaaSPlatform;
import org.onap.usecaseui.llmadaptation.bean.ServiceResult;
import org.springframework.http.codec.multipart.FilePart;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public interface FastGptDatasetService {
- Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData);
+ Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData, MaaSPlatform maaSPlatform);
- Mono<ServiceResult> removeDataset(String knowledgeBaseId);
+ Mono<ServiceResult> removeDataset(String knowledgeBaseId, String serverIp);
- Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase);
+ Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase,MaaSPlatform maaSPlatform);
+
+ Mono<ServiceResult> uploadFiles(Flux<FilePart> fileParts,String knowledgeBaseId, String serverIp);
+
+ Mono<ServiceResult> deleteFile(String fileId, String serverIp);
}
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.onap.usecaseui.llmadaptation.bean.*;
-import org.onap.usecaseui.llmadaptation.constant.ServerConstant;
+import org.onap.usecaseui.llmadaptation.constant.FastGptConstant;
import org.onap.usecaseui.llmadaptation.mapper.ApplicationMapper;
import org.onap.usecaseui.llmadaptation.mapper.DatasetMapper;
import org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper;
@Autowired
private MaaSPlatformMapper maaSPlatformMapper;
- @Autowired
- private ServerConstant serverConstant;
-
@Override
public Mono<ServiceResult> createApplication(Application application) {
List<Application> applications = applicationMapper.getAllApplication();
return Mono.just(new ServiceResult(new ResultHeader(500, "name exists"), applications));
}
}
- MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(application.getMaaSPlatformId());
+ MaaSPlatform maaSPlatformById = getMaaSPlatFormById(application.getMaaSPlatformId());
if (maaSPlatformById == null) {
return Mono.just(new ServiceResult(new ResultHeader(500, "maas is not exist")));
}
String maaSType = maaSPlatformById.getMaaSType();
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptApplicationService.createApplication(application);
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptApplicationService.createApplication(application, maaSPlatformById.getServerIp());
}
- return biShengApplicationService.createApplication(application);
+ return biShengApplicationService.createApplication(application, maaSPlatformById.getServerIp());
}
@Override
public Mono<ServiceResult> removeApplication(String applicationId) {
- String maaSType = getMaaSType(applicationId);
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptApplicationService.removeApplication(applicationId);
+ MaaSPlatform maaSPlatform = getMaaSPlatFormByAppId(applicationId);
+ if (FastGptConstant.FAST_GPT.equals(maaSPlatform.getMaaSType())) {
+ return fastGptApplicationService.removeApplication(applicationId, maaSPlatform.getServerIp());
}
- return biShengApplicationService.removeApplication(applicationId);
+ return biShengApplicationService.removeApplication(applicationId, maaSPlatform.getServerIp());
}
@Override
public Flux<String> chat(JSONObject question) {
String applicationId = question.getString("applicationId");
- String maaSType = getMaaSType(applicationId);
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptApplicationService.chat(question);
+ MaaSPlatform maaSPlatform = getMaaSPlatFormByAppId(applicationId);
+ if (FastGptConstant.FAST_GPT.equals(maaSPlatform.getMaaSType())) {
+ return fastGptApplicationService.chat(question, maaSPlatform.getServerIp());
}
- return biShengApplicationService.chat(question);
+ return biShengApplicationService.chat(question, maaSPlatform.getServerIp());
}
@Override
@Override
public Mono<ServiceResult> editApplication(Application application) {
- MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(application.getMaaSPlatformId());
+ MaaSPlatform maaSPlatformById = getMaaSPlatFormById(application.getMaaSPlatformId());
if (maaSPlatformById == null) {
return Mono.just(new ServiceResult(new ResultHeader(500, "maas is not exist")));
}
String maaSType = maaSPlatformById.getMaaSType();
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptApplicationService.editApplication(application);
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptApplicationService.editApplication(application, maaSPlatformById.getServerIp());
}
- return biShengApplicationService.editApplication(application);
+ return biShengApplicationService.editApplication(application, maaSPlatformById.getServerIp());
}
- private String getMaaSType(String applicationId) {
+ private MaaSPlatform getMaaSPlatFormByAppId(String applicationId) {
Application applicationById = applicationMapper.getApplicationById(applicationId);
KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(applicationById.getKnowledgeBaseId());
- MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBaseRecordById.getMaaSPlatformId());
- return maaSPlatformById.getMaaSType();
+ return getMaaSPlatFormById(knowledgeBaseRecordById.getMaaSPlatformId());
+ }
+
+ private MaaSPlatform getMaaSPlatFormById(String maaSPlatformId) {
+ return maaSPlatformMapper.getMaaSPlatformById(maaSPlatformId);
}
}
import org.onap.usecaseui.llmadaptation.bean.bisheng.BiShengCreateDatasetResponse;
import org.onap.usecaseui.llmadaptation.constant.BiShengConstant;
import org.onap.usecaseui.llmadaptation.constant.CommonConstant;
-import org.onap.usecaseui.llmadaptation.constant.ServerConstant;
import org.onap.usecaseui.llmadaptation.mapper.ApplicationMapper;
import org.onap.usecaseui.llmadaptation.service.BiShengApplicationService;
import org.onap.usecaseui.llmadaptation.util.TimeUtil;
@Autowired
private WebClient webClient;
- @Autowired
- private ServerConstant serverConstant;
-
@Override
- public Mono<ServiceResult> createApplication(Application application) {
+ public Mono<ServiceResult> createApplication(Application application, String serverIp) {
JSONObject createParam = new JSONObject();
createParam.put("logo", "");
createParam.put("name", application.getApplicationName());
createParam.put("prompt", application.getPrompt());
return webClient.post()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_URL)
+ .uri(serverIp + BiShengConstant.APPLICATION_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.bodyValue(createParam)
return Mono.just(new ServiceResult(new ResultHeader(createResponse.getStatus_code(), createResponse.getStatus_message())));
}
String applicationId = data.getString("id");
+ data.put("desc", application.getApplicationDescription());
data.put("model_name", application.getLargeModelId());
data.put("temperature", application.getTemperature() / 10);
List<Integer> list = new ArrayList<>();
data.put("guide_word", application.getOpeningRemarks());
data.put("update_time", TimeUtil.getNowTime());
return webClient.put()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_URL)
+ .uri(serverIp + BiShengConstant.APPLICATION_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.bodyValue(data)
}
@Override
- public Flux<String> chat(JSONObject question) {
+ public Flux<String> chat(JSONObject question, String serverIp) {
JSONObject param = new JSONObject();
param.put("model", question.getString("applicationId"));
param.put("temperature", 0);
jsonArray.add(message);
param.put("messages", jsonArray);
return webClient.post()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_CHAT_URL)
+ .uri(serverIp + BiShengConstant.APPLICATION_CHAT_URL)
.bodyValue(param)
.retrieve()
.bodyToFlux(String.class)
}
@Override
- public Mono<ServiceResult> removeApplication(String applicationId) {
- String url = serverConstant.getBiShengServer() + BiShengConstant.DELETE_APPLICATION + applicationId;
+ public Mono<ServiceResult> removeApplication(String applicationId, String serverIp) {
+ String url = serverIp + BiShengConstant.DELETE_APPLICATION + applicationId;
return webClient.post()
.uri(url)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
}
@Override
- public Mono<ServiceResult> editApplication(Application application) {
- String url = serverConstant.getBiShengServer() + BiShengConstant.GET_APPLICATION_URL + application.getApplicationId();
+ public Mono<ServiceResult> editApplication(Application application, String serverIp) {
+ String url = serverIp + BiShengConstant.GET_APPLICATION_URL + application.getApplicationId();
return webClient.get()
.uri(url)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
List<Integer> list = new ArrayList<>();
list.add(Integer.valueOf(application.getKnowledgeBaseId()));
data.put("knowledge_list", list);
+ data.put("model_name", application.getLargeModelId());
+ data.put("temperature", application.getTemperature() / 10);
+ data.put("prompt",application.getPrompt());
+ data.put("guide_word", application.getOpeningRemarks());
return webClient.put()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_URL)
+ .uri(serverIp + BiShengConstant.APPLICATION_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.bodyValue(data)
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
-import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase;
-import org.onap.usecaseui.llmadaptation.bean.ResultHeader;
-import org.onap.usecaseui.llmadaptation.bean.ServiceResult;
+import org.onap.usecaseui.llmadaptation.bean.*;
import org.onap.usecaseui.llmadaptation.bean.bisheng.BiShengCreateDatasetResponse;
import org.onap.usecaseui.llmadaptation.bean.bisheng.ProcessFileResponse;
import org.onap.usecaseui.llmadaptation.constant.BiShengConstant;
import org.onap.usecaseui.llmadaptation.constant.CommonConstant;
-import org.onap.usecaseui.llmadaptation.constant.ServerConstant;
import org.onap.usecaseui.llmadaptation.mapper.DatasetMapper;
import org.onap.usecaseui.llmadaptation.service.BiShengDatasetService;
import org.onap.usecaseui.llmadaptation.util.TimeUtil;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
-import java.util.UUID;
+import java.util.List;
import static org.springframework.http.MediaType.APPLICATION_JSON;
@Autowired
private DatasetMapper datasetMapper;
- @Autowired
- private ServerConstant serverConstant;
@Override
- public Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData) {
+ public Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData, MaaSPlatform maaSPlatform) {
+
KnowledgeBase knowledgeBase = JSONObject.parseObject(metaData, KnowledgeBase.class);
knowledgeBase.setUpdateTime(TimeUtil.getNowTime());
JSONObject createParam = new JSONObject();
createParam.put("description", knowledgeBase.getKnowledgeBaseDescription());
- createParam.put("model", serverConstant.getBiShengModel());
+ createParam.put("model", maaSPlatform.getVectorModel());
createParam.put("name", knowledgeBase.getKnowledgeBaseName());
return webClient.post()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.CREATE_DATASET_URL)
+ .uri(maaSPlatform.getServerIp() + BiShengConstant.CREATE_DATASET_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.bodyValue(createParam)
return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatus_message())));
}
int knowledgeBaseId = response.getData().getIntValue("id");
- return fileParts.flatMap(filePart -> processFile(filePart, knowledgeBaseId))
+ return fileParts.flatMap(filePart -> processFile(filePart, knowledgeBaseId, maaSPlatform.getServerIp()))
.then(Mono.defer(() -> {
knowledgeBase.setKnowledgeBaseId(String.valueOf(knowledgeBaseId));
datasetMapper.insertKnowledgeBaseRecord(knowledgeBase);
});
}
- private Mono<Void> processFile(FilePart filePart, int knowledgeBaseId) {
+ private Mono<Void> processFile(FilePart filePart, int knowledgeBaseId, String serverIp) {
String filename = filePart.filename();
Flux<DataBuffer> content = filePart.content();
MultipartBodyBuilder builder = new MultipartBodyBuilder();
headers.setContentType(MediaType.TEXT_PLAIN);
});
return webClient.post()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.UPLOAD_FILE_URL)
+ .uri(serverIp + BiShengConstant.UPLOAD_FILE_URL)
.contentType(MediaType.MULTIPART_FORM_DATA)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.body(BodyInserters.fromMultipartData(builder.build()))
jsonArray.add(jsonObject);
processParam.put("file_list", jsonArray);
return webClient.post()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.PROCESS_FILE_URL)
+ .uri(serverIp + BiShengConstant.PROCESS_FILE_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.bodyValue(processParam)
.retrieve()
.bodyToMono(ProcessFileResponse.class).flatMap(lastResponse -> {
if (lastResponse.getStatus_code() == 200) {
- String fileId = UUID.randomUUID().toString();
- datasetMapper.insertFileName(fileId, filename, String.valueOf(knowledgeBaseId));
+ JSONObject data = lastResponse.getData().get(0);
+ int fileId = data.getIntValue("id");
+ File file = new File(String.valueOf(fileId), filename);
+ datasetMapper.insertFileName(List.of(file), String.valueOf(knowledgeBaseId));
}
return Mono.empty();
});
}
@Override
- public Mono<ServiceResult> removeDataset(String knowledgeBaseId) {
+ public Mono<ServiceResult> removeDataset(String knowledgeBaseId, String serverIp) {
return webClient.delete()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.DATASET_V2_URL + knowledgeBaseId)
+ .uri(serverIp + BiShengConstant.DATASET_V2_URL + knowledgeBaseId)
.header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
.retrieve()
.bodyToMono(BiShengCreateDatasetResponse.class)
}
@Override
- public Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase) {
+ public Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase, MaaSPlatform maaSPlatform) {
KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBase.getKnowledgeBaseId());
if (knowledgeBaseRecordById == null) {
return Mono.just(new ServiceResult(new ResultHeader(500, "dataset is not exist")));
updateParam.put("knowledge_id", knowledgeBase.getKnowledgeBaseId());
updateParam.put("name", knowledgeBase.getKnowledgeBaseName());
updateParam.put("description", knowledgeBase.getKnowledgeBaseDescription());
- updateParam.put("model", serverConstant.getBiShengModel());
+ updateParam.put("model", maaSPlatform.getVectorModel());
return webClient.put()
- .uri(serverConstant.getBiShengServer() + BiShengConstant.DATASET_V2_URL)
+ .uri(maaSPlatform.getServerIp() + BiShengConstant.DATASET_V2_URL)
.contentType(APPLICATION_JSON)
.bodyValue(updateParam)
.retrieve()
return Mono.just(new ServiceResult(new ResultHeader(500, "update failed")));
});
}
+
+ @Override
+ public Mono<ServiceResult> uploadFiles(Flux<FilePart> fileParts, String knowledgeBaseId, String serverIp) {
+ return fileParts.flatMap(filePart -> processFile(filePart, Integer.parseInt(knowledgeBaseId), serverIp))
+ .then(Mono.just(new ServiceResult(new ResultHeader(200, "upload success"))))
+ .onErrorResume(e -> {
+ log.error("Error occurred during file upload: {}", e.getMessage());
+ return Mono.just(new ServiceResult(new ResultHeader(500, "file upload failed")));
+ });
+ }
+
+ @Override
+ public Mono<ServiceResult> deleteFile(String fileId, String serverIp) {
+ return webClient.delete()
+ .uri(serverIp + BiShengConstant.DELETE_FILE_URL + fileId)
+ .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE)
+ .retrieve()
+ .bodyToMono(BiShengCreateDatasetResponse.class)
+ .flatMap(response -> {
+ if (response.getStatus_code() == 200) {
+ return Mono.fromRunnable(() -> datasetMapper.deleteFileByFileId(fileId)).then(Mono.just(new ServiceResult(new ResultHeader(200, "delete file success"))));
+ } else {
+ return Mono.just(new ServiceResult(new ResultHeader(response.getStatus_code(), response.getStatus_message())));
+ }
+ })
+ .onErrorResume(e -> {
+ log.error("Error occurred while delete dataset: {}", e.getMessage());
+ return Mono.just(new ServiceResult(new ResultHeader(500, "delete file failed")));
+ });
+ }
}
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
-import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase;
-import org.onap.usecaseui.llmadaptation.bean.MaaSPlatform;
-import org.onap.usecaseui.llmadaptation.bean.ResultHeader;
-import org.onap.usecaseui.llmadaptation.bean.ServiceResult;
-import org.onap.usecaseui.llmadaptation.constant.ServerConstant;
+import org.onap.usecaseui.llmadaptation.bean.*;
+import org.onap.usecaseui.llmadaptation.constant.FastGptConstant;
+import org.onap.usecaseui.llmadaptation.mapper.ApplicationMapper;
import org.onap.usecaseui.llmadaptation.mapper.DatasetMapper;
import org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper;
import org.onap.usecaseui.llmadaptation.service.BiShengDatasetService;
private MaaSPlatformMapper maaSPlatformMapper;
@Autowired
- private ServerConstant serverConstant;
+ private ApplicationMapper applicationMapper;
@Override
public Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData) {
}
MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBase.getMaaSPlatformId());
String maaSType = maaSPlatformById.getMaaSType();
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptDatasetService.createDataset(fileParts, metaData);
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptDatasetService.createDataset(fileParts, metaData, maaSPlatformById);
}
- return biShengDatasetService.createDataset(fileParts, metaData);
+ return biShengDatasetService.createDataset(fileParts, metaData, maaSPlatformById);
}
@Override
public Mono<ServiceResult> removeDataset(String knowledgeBaseId) {
- KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBaseId);
- MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBaseRecordById.getMaaSPlatformId());
+ List<Application> applicationByDatasetId = applicationMapper.getApplicationByDatasetId(knowledgeBaseId);
+ if (!CollectionUtils.isEmpty(applicationByDatasetId)) {
+ return Mono.just(new ServiceResult(new ResultHeader(500, "This database is currently in use")));
+ }
+ MaaSPlatform maaSPlatformById = getMaaSPlatform(knowledgeBaseId);
String maaSType = maaSPlatformById.getMaaSType();
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptDatasetService.removeDataset(knowledgeBaseId);
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptDatasetService.removeDataset(knowledgeBaseId, maaSPlatformById.getServerIp());
}
- return biShengDatasetService.removeDataset(knowledgeBaseId);
+ return biShengDatasetService.removeDataset(knowledgeBaseId, maaSPlatformById.getServerIp());
}
@Override
}
knowledgeBaseRecords.forEach(knowledgeBase -> {
- List<String> fileNamesByKnowledgeBaseId = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId());
- knowledgeBase.setFilesName(fileNamesByKnowledgeBaseId);
+ List<File> fileNamesByKnowledgeBaseId = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId());
+ knowledgeBase.setFileList(fileNamesByKnowledgeBaseId);
});
return new ServiceResult(new ResultHeader(200, "success"), knowledgeBaseRecords);
}
if (knowledgeBase == null) {
return new ServiceResult(new ResultHeader(500, "get dataset failed"));
}
- List<String> fileNamesByKnowledgeBaseId = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId());
- knowledgeBase.setFilesName(fileNamesByKnowledgeBaseId);
-
+ List<File> fileNamesByKnowledgeBaseId = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId());
+ knowledgeBase.setFileList(fileNamesByKnowledgeBaseId);
return new ServiceResult(new ResultHeader(200, "success"), knowledgeBase);
}
@Override
public Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase) {
- KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBase.getKnowledgeBaseId());
- MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBaseRecordById.getMaaSPlatformId());
+ MaaSPlatform maaSPlatformById = getMaaSPlatform(knowledgeBase.getKnowledgeBaseId());
String maaSType = maaSPlatformById.getMaaSType();
- String fastGptType = serverConstant.getFastGptType();
- if (fastGptType.equals(maaSType)) {
- return fastGptDatasetService.editDataset(knowledgeBase);
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptDatasetService.editDataset(knowledgeBase, maaSPlatformById);
+ }
+ return biShengDatasetService.editDataset(knowledgeBase, maaSPlatformById);
+ }
+
+ @Override
+ public Mono<ServiceResult> uploadFiles(Flux<FilePart> fileParts, String metaData) {
+ KnowledgeBase knowledgeBase = JSONObject.parseObject(metaData, KnowledgeBase.class);
+ MaaSPlatform maaSPlatform = getMaaSPlatform(knowledgeBase.getKnowledgeBaseId());
+ String maaSType = maaSPlatform.getMaaSType();
+ String knowledgeBaseId = knowledgeBase.getKnowledgeBaseId();
+ String serverIp = maaSPlatform.getServerIp();
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptDatasetService.uploadFiles(fileParts,knowledgeBaseId, serverIp);
}
- return biShengDatasetService.editDataset(knowledgeBase);
+ return biShengDatasetService.uploadFiles(fileParts, knowledgeBaseId, serverIp);
+ }
+
+ @Override
+ public Mono<ServiceResult> deleteFile(String fileId) {
+ String knowledgeId = datasetMapper.getKnowledgeIdByFileId(fileId);
+ MaaSPlatform maaSPlatform = getMaaSPlatform(knowledgeId);
+ String maaSType = maaSPlatform.getMaaSType();
+ if (FastGptConstant.FAST_GPT.equals(maaSType)) {
+ return fastGptDatasetService.deleteFile(fileId, maaSPlatform.getServerIp());
+ }
+ return biShengDatasetService.deleteFile(fileId, maaSPlatform.getServerIp());
+ }
+
+ private MaaSPlatform getMaaSPlatform(String knowledgeBaseId) {
+ KnowledgeBase knowledgeBase = datasetMapper.getKnowledgeBaseRecordById(knowledgeBaseId);
+ return maaSPlatformMapper.getMaaSPlatformById(knowledgeBase.getMaaSPlatformId());
}
}
import org.onap.usecaseui.llmadaptation.bean.fastgpt.application.*;
import org.onap.usecaseui.llmadaptation.constant.CommonConstant;
import org.onap.usecaseui.llmadaptation.constant.FastGptConstant;
-import org.onap.usecaseui.llmadaptation.constant.ServerConstant;
import org.onap.usecaseui.llmadaptation.mapper.ApplicationMapper;
import org.onap.usecaseui.llmadaptation.service.FastGptApplicationService;
import org.onap.usecaseui.llmadaptation.util.TimeUtil;
@Autowired
private WebClient webClient;
- @Autowired
- private ServerConstant serverConstant;
-
private final ObjectMapper objectMapper = new ObjectMapper();
@Override
- public Mono<ServiceResult> createApplication(Application application) {
+ public Mono<ServiceResult> createApplication(Application application, String serverIp) {
try (InputStream inputStream = resourceLoader.getResource(FastGptConstant.CREATE_APP_PARAM_FILE_URL).getInputStream()) {
CreateApplicationParam createApplicationParam = objectMapper.readValue(inputStream, CreateApplicationParam.class);
createApplicationParam.setName(application.getApplicationName());
- return createApplication(createApplicationParam, application)
+ return createApplication(createApplicationParam, application, serverIp)
.onErrorResume(e -> {
log.error("Error occurred while creating application: {}", e.getMessage());
return Mono.just(new ServiceResult(new ResultHeader(500, "Application creation failed")));
}
}
- private Mono<ServiceResult> createApplication(CreateApplicationParam createApplicationParam, Application application) {
+ private Mono<ServiceResult> createApplication(CreateApplicationParam createApplicationParam, Application application, String serverIp) {
return webClient.post()
- .uri(serverConstant.getFastGptServer() + FastGptConstant.CREATE_APPLICATION)
+ .uri(serverIp + FastGptConstant.CREATE_APPLICATION)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
.bodyValue(createApplicationParam)
.bodyToMono(CreateDataSetResponse.class)
.flatMap(response -> {
if (response.getCode() == 200) {
- return handleApplicationResponse(response, application);
+ return handleApplicationResponse(String.valueOf(response.getData()), application, serverIp);
}
return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatusText())));
});
}
- private Mono<ServiceResult> handleApplicationResponse(CreateDataSetResponse createDataSetResponse, Application application) {
- String data = String.valueOf(createDataSetResponse.getData());
- application.setApplicationId(data);
- String url = serverConstant.getFastGptServer() + FastGptConstant.UPDATE_APPLICATION + data;
+ private Mono<ServiceResult> handleApplicationResponse(String dataId, Application application, String serverIp) {
+ application.setApplicationId(dataId);
+ String url = serverIp + FastGptConstant.UPDATE_APPLICATION + dataId;
UpdateApplicationParam updateApplicationParam = new UpdateApplicationParam();
updateApplicationParam.setAvatar("/imgs/app/avatar/simple.svg");
updateApplicationParam.setDefaultPermission(0);
.bodyToMono(CreateDataSetResponse.class)
.flatMap(response -> {
if (response.getCode() == 200) {
- return publishApplication(application, data);
+ return publishApplication(application, dataId, serverIp);
}
return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatusText())));
});
}
- private Mono<ServiceResult> publishApplication(Application application, String data) {
+ private Mono<ServiceResult> publishApplication(Application application, String data, String serverIp) {
try (InputStream inputStream = resourceLoader.getResource(FastGptConstant.PUBLISH_APP_PARAM_FILE_URL).getInputStream()) {
PublishApplicationParam publishApplicationParam = objectMapper.readValue(inputStream, PublishApplicationParam.class);
publishApplicationParam.setVersionName(TimeUtil.getNowTime());
publishApplicationParam.getChatConfig().setWelcomeText(application.getOpeningRemarks());
setApplicationParameters(application, publishApplicationParam);
- String publishUrl = serverConstant.getFastGptServer() + FastGptConstant.PUBLISH_APPLICATION + data;
+ String publishUrl = serverIp + FastGptConstant.PUBLISH_APPLICATION + data;
return webClient.post()
.uri(publishUrl)
}
@Override
- public Flux<String> chat(JSONObject question) {
+ public Flux<String> chat(JSONObject question, String serverIp) {
ChatParam chatParam = new ChatParam();
chatParam.setAppId(question.getString("applicationId"));
chatParam.setStream(true);
chatParam.setMessages(messages);
AtomicBoolean isDone = new AtomicBoolean(false);
return webClient.post()
- .uri(serverConstant.getFastGptServer() + FastGptConstant.APPLICATION_CHAT_URL)
+ .uri(serverIp + FastGptConstant.APPLICATION_CHAT_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
.bodyValue(chatParam)
}
@Override
- public Mono<ServiceResult> removeApplication(String applicationId) {
- String url = serverConstant.getFastGptServer() + FastGptConstant.DELETE_APPLICATION + applicationId;
+ public Mono<ServiceResult> removeApplication(String applicationId, String serverIp) {
+ String url = serverIp + FastGptConstant.DELETE_APPLICATION + applicationId;
return webClient.delete()
.uri(url)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
}
@Override
- public Mono<ServiceResult> editApplication(Application application) {
- String url = serverConstant.getFastGptServer() + FastGptConstant.UPDATE_APPLICATION + application.getApplicationId();
- UpdateApplicationParam updateApplicationParam = new UpdateApplicationParam();
- updateApplicationParam.setAvatar("/imgs/app/avatar/simple.svg");
- updateApplicationParam.setName(application.getApplicationName());
- updateApplicationParam.setIntro(application.getApplicationDescription());
-
- return webClient.put()
- .uri(url)
- .contentType(APPLICATION_JSON)
- .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
- .bodyValue(updateApplicationParam)
- .retrieve()
- .bodyToMono(CreateDataSetResponse.class)
- .flatMap(response -> {
- if (response.getCode() == 200) {
- return Mono.fromRunnable(() -> {
- applicationMapper.updateApplication(application);
- }).then(Mono.just(new ServiceResult(new ResultHeader(200, "edit success"))));
- } else {
- return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatusText())));
- }
- })
- .onErrorResume(e -> {
- log.error("Error occurred while delete dataset: {}", e.getMessage());
- return Mono.just(new ServiceResult(new ResultHeader(500, "edit failed")));
- });
+ public Mono<ServiceResult> editApplication(Application application, String serverIp) {
+ return handleApplicationResponse(application.getApplicationId(), application, serverIp);
}
}
package org.onap.usecaseui.llmadaptation.service.impl;
import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
-import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase;
-import org.onap.usecaseui.llmadaptation.bean.ResultHeader;
-import org.onap.usecaseui.llmadaptation.bean.ServiceResult;
+import org.onap.usecaseui.llmadaptation.bean.*;
import org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset.CreateCollectionParam;
import org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset.CreateDataSetParam;
import org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset.CreateDataSetResponse;
import org.onap.usecaseui.llmadaptation.constant.CommonConstant;
import org.onap.usecaseui.llmadaptation.constant.FastGptConstant;
-import org.onap.usecaseui.llmadaptation.constant.ServerConstant;
import org.onap.usecaseui.llmadaptation.mapper.DatasetMapper;
import org.onap.usecaseui.llmadaptation.service.FastGptDatasetService;
import org.onap.usecaseui.llmadaptation.util.TimeUtil;
import reactor.core.publisher.Mono;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+
import static org.springframework.http.MediaType.APPLICATION_JSON;
@Slf4j
@Autowired
private WebClient webClient;
- @Autowired
- private ServerConstant serverConstant;
-
@Override
- public Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData) {
+ public Mono<ServiceResult> createDataset(Flux<FilePart> fileParts, String metaData, MaaSPlatform maaSPlatform) {
KnowledgeBase knowledgeBase = JSONObject.parseObject(metaData, KnowledgeBase.class);
knowledgeBase.setUpdateTime(TimeUtil.getNowTime());
CreateDataSetParam dataSetParam = new CreateDataSetParam();
- dataSetParam.setAgentModel(serverConstant.getFastGptModel());
+ dataSetParam.setAgentModel(maaSPlatform.getVectorModel());
dataSetParam.setType("dataset");
- dataSetParam.setAvatar("core/dataset/commonDatasetColor");
- dataSetParam.setVectorModel("m3e");
dataSetParam.setIntro(knowledgeBase.getKnowledgeBaseDescription());
dataSetParam.setName(knowledgeBase.getKnowledgeBaseName());
return webClient.post()
- .uri(serverConstant.getFastGptServer() + FastGptConstant.CREATE_DATASET_URL)
+ .uri(maaSPlatform.getServerIp() + FastGptConstant.CREATE_DATASET_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
.bodyValue(dataSetParam)
.flatMap(response -> {
if (response.getCode() == 200) {
String knowledgeBaseId = String.valueOf(response.getData());
- return fileParts.flatMap(filePart -> uploadFile(filePart, knowledgeBaseId))
+ return fileParts
+ .flatMap(filePart -> uploadFile(filePart, knowledgeBaseId, maaSPlatform.getServerIp()))
.then(Mono.defer(() -> {
knowledgeBase.setKnowledgeBaseId(knowledgeBaseId);
datasetMapper.insertKnowledgeBaseRecord(knowledgeBase);
- return Mono.just(new ServiceResult(new ResultHeader(200, "create success")));
+ return handleFileId(knowledgeBaseId, maaSPlatform.getServerIp());
}))
.onErrorResume(e -> {
log.error("Error occurred during file upload: {}", e.getMessage());
});
}
- private Mono<Void> uploadFile(FilePart filePart, String knowledgeBaseId) {
+ private Mono<ServiceResult> handleFileId(String knowledgeBaseId, String serverIp) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("datasetId", knowledgeBaseId);
+ return webClient.post()
+ .uri(serverIp + FastGptConstant.GET_COLLECTION_LIST_URL)
+ .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
+ .bodyValue(jsonObject)
+ .retrieve()
+ .bodyToMono(CreateDataSetResponse.class)
+ .flatMap(response -> {
+ Object data = response.getData();
+ JSONArray jsonArray = JSONObject.parseObject(JSONObject.toJSONString(data)).getJSONArray("data");
+ Map<String, String> resultMap = IntStream.range(0, jsonArray.size())
+ .mapToObj(jsonArray::getJSONObject)
+ .collect(Collectors.toMap(
+ obj -> obj.getString("fileId"),
+ obj -> obj.getString("_id")
+ ));
+ List<File> fileList = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBaseId);
+ List<File> updatedFileList = fileList.stream()
+ .map(file -> new File(
+ resultMap.getOrDefault(file.getFileId(), file.getFileId()),
+ file.getFileName()))
+ .toList();
+ datasetMapper.deleteFileById(knowledgeBaseId);
+ datasetMapper.insertFileName(updatedFileList, knowledgeBaseId);
+ return Mono.just(new ServiceResult(new ResultHeader(200, "create success")));
+ });
+ }
+
+ private Mono<Void> uploadFile(FilePart filePart, String knowledgeBaseId, String serverIp) {
String filename = filePart.filename();
Flux<DataBuffer> content = filePart.content();
});
return webClient.post()
- .uri(serverConstant.getFastGptServer() + FastGptConstant.UPLOAD_FILE_URL)
+ .uri(serverIp + FastGptConstant.UPLOAD_FILE_URL)
.contentType(MediaType.MULTIPART_FORM_DATA)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
.body(BodyInserters.fromMultipartData(builder.build()))
Object data = response.getData();
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(data));
String fileId = jsonObject.getString("fileId");
- CreateCollectionParam createCollectionParam = getCreateCollectionParam(knowledgeBaseId, fileId);
+ CreateCollectionParam createCollectionParam = getCreateCollectionParam(knowledgeBaseId, fileId, filename);
return webClient.post()
- .uri(serverConstant.getFastGptServer() + FastGptConstant.CRATE_COLLECTION_URL)
+ .uri(serverIp + FastGptConstant.CRATE_COLLECTION_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
.bodyValue(createCollectionParam)
.bodyToMono(CreateDataSetResponse.class)
.flatMap(responseData -> {
if (responseData.getCode() == 200) {
- datasetMapper.insertFileName(fileId, filename, knowledgeBaseId);
+ File file = new File(String.valueOf(fileId), filename);
+ datasetMapper.insertFileName(List.of(file), String.valueOf(knowledgeBaseId));
}
return Mono.empty();
});
}
@NotNull
- private static CreateCollectionParam getCreateCollectionParam(String knowledgeBaseId, String fileId) {
+ private static CreateCollectionParam getCreateCollectionParam(String knowledgeBaseId, String fileId, String fileName) {
CreateCollectionParam createCollectionParam = new CreateCollectionParam();
createCollectionParam.setTrainingType("chunk");
createCollectionParam.setDatasetId(knowledgeBaseId);
createCollectionParam.setChunkSize(700);
createCollectionParam.setChunkSplitter("");
createCollectionParam.setFileId(fileId);
- createCollectionParam.setName("");
+ createCollectionParam.setName(fileName);
createCollectionParam.setQaPrompt("");
return createCollectionParam;
}
@Override
- public Mono<ServiceResult> removeDataset(String knowledgeBaseId) {
- String url = serverConstant.getFastGptServer() + FastGptConstant.DELETE_DATASET_URL + knowledgeBaseId;
+ public Mono<ServiceResult> removeDataset(String knowledgeBaseId, String serverIp) {
+ String url = serverIp + FastGptConstant.DELETE_DATASET_URL + knowledgeBaseId;
return webClient.delete()
.uri(url)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
}
@Override
- public Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase) {
+ public Mono<ServiceResult> editDataset(KnowledgeBase knowledgeBase, MaaSPlatform maaSPlatform) {
KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBase.getKnowledgeBaseId());
if (knowledgeBaseRecordById == null) {
return Mono.just(new ServiceResult(new ResultHeader(500, "dataset is not exist")));
updateParam.put("avatar", "core/dataset/commonDatasetColor");
return webClient.put()
- .uri(serverConstant.getFastGptServer() + FastGptConstant.UPDATE_DATASET_URL)
+ .uri(maaSPlatform.getServerIp() + FastGptConstant.UPDATE_DATASET_URL)
.contentType(APPLICATION_JSON)
.header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
.bodyValue(updateParam)
return Mono.just(new ServiceResult(new ResultHeader(500, "update failed")));
});
}
+
+ @Override
+ public Mono<ServiceResult> uploadFiles(Flux<FilePart> fileParts, String knowledgeBaseId, String serverIp) {
+ return fileParts.flatMap(filePart -> uploadFile(filePart, knowledgeBaseId, serverIp))
+ .then(Mono.defer(() -> handleFileId(knowledgeBaseId, serverIp)))
+ .onErrorResume(e -> {
+ log.error("Error occurred during file upload: {}", e.getMessage());
+ return Mono.just(new ServiceResult(new ResultHeader(500, "file upload failed")));
+ });
+ }
+
+ @Override
+ public Mono<ServiceResult> deleteFile(String fileId, String serverIp) {
+ return webClient.delete().uri(serverIp + FastGptConstant.DELETE_FILE_URL + fileId)
+ .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE)
+ .retrieve()
+ .bodyToMono(CreateDataSetResponse.class)
+ .flatMap(response -> {
+ if (response.getCode() == 200) {
+ return Mono.fromRunnable(() -> datasetMapper.deleteFileByFileId(fileId)).then(Mono.just(new ServiceResult(new ResultHeader(200, "delete file success"))));
+ } else {
+ return Mono.just(new ServiceResult(new ResultHeader(response.getCode(), response.getStatusText())));
+ }
+ })
+ .onErrorResume(e -> {
+ log.error("Error occurred while delete dataset: {}", e.getMessage());
+ return Mono.just(new ServiceResult(new ResultHeader(500, "delete file failed")));
+ });
+ }
}
server:
port: 8084
-fastGpt:
- server: http://172.22.16.126:3000
- model: qwen2:7b
- maaSType: fastGpt
-biSheng:
- server: http://172.22.16.127:3001
- model: 3
- maaSType: biSheng
spring:
main:
allow-circular-references: true
maas_platform_name varchar(255),
operator_id varchar(255),
operator_name varchar(255),
- maas_type varchar(255)
+ maas_type varchar(255),
+ server_ip varchar(255),
+ vector_model varchar(255)
);
create table if not exists model_information(
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.onap.usecaseui.llmadaptation.mapper.ApplicationMapper">
<insert id="insertApplication">
- insert into application(application_id,
- application_name,
- application_description,
- application_type,
- knowledge_base_id,
- model_id,
- model_name,
- prompt,
- temperature,
- top_p,
- opening_remarks
- )
- values (#{application.applicationId},
+ INSERT INTO application (application_id,
+ application_name,
+ application_description,
+ application_type,
+ knowledge_base_id,
+ model_id,
+ model_name,
+ prompt,
+ temperature,
+ top_p,
+ opening_remarks)
+ VALUES (#{application.applicationId},
#{application.applicationName},
#{application.applicationDescription},
#{application.applicationType},
#{application.temperature},
#{application.top_p},
#{application.openingRemarks})
+ ON CONFLICT (application_id) DO UPDATE SET
+ application_name = EXCLUDED.application_name,
+ application_description = EXCLUDED.application_description,
+ application_type = EXCLUDED.application_type,
+ knowledge_base_id = EXCLUDED.knowledge_base_id,
+ model_id = EXCLUDED.model_id,
+ model_name = EXCLUDED.model_name,
+ prompt = EXCLUDED.prompt,
+ temperature = EXCLUDED.temperature,
+ top_p = EXCLUDED.top_p,
+ opening_remarks = EXCLUDED.opening_remarks
</insert>
<delete id="deleteApplicationById">
delete from application where application_id = #{applicationId}
</trim>
where application_id = #{application.applicationId}
</update>
+
+ <select id="getApplicationByDatasetId" resultType="org.onap.usecaseui.llmadaptation.bean.Application">
+ select application_id as applicationId,
+ application_name as applicationName,
+ application_description as applicationDescription,
+ application_type as applicationType,
+ knowledge_base_id as knowledgeBaseId,
+ model_id as largeModelId,
+ model_name as largeModelName,
+ prompt as prompt,
+ temperature as temperature,
+ top_p as top_p,
+ opening_remarks as openingRemarks
+ from application where knowledge_base_id = #{knowledgeBaseId}
+ </select>
+
</mapper>
\ No newline at end of file
</insert>
<insert id="insertFileName">
insert into file(file_id,file_name,knowledge_base_id)
- values (#{fileId},#{fileName},#{knowledgeBaseId})
+ values
+ <foreach collection="files" index="index" item="item" separator=",">
+ (#{item.fileId}, #{item.fileName}, #{knowledgeBaseId})
+ </foreach>
</insert>
+
<select id="getKnowledgeBaseRecords" resultType="org.onap.usecaseui.llmadaptation.bean.KnowledgeBase">
select knowledge_base_id as knowledgeBaseId,
knowledge_base_name as knowledgeBaseName,
to_char(update_time,'yyyy-mm-dd HH24:mi:ss') as updateTime
from knowledge_base
</select>
- <select id="getFileNamesByKnowledgeBaseId" resultType="java.lang.String">
- select file_name from file where knowledge_base_id = #{knowledgeBaseId}
- </select>
+
<select id="getKnowledgeBaseRecordById" resultType="org.onap.usecaseui.llmadaptation.bean.KnowledgeBase">
select knowledge_base_id as knowledgeBaseId,
knowledge_base_name as knowledgeBaseName,
from knowledge_base
where maas_platform_id = #{maaSPlatformId}
</select>
+ <select id="getFileNamesByKnowledgeBaseId" resultType="org.onap.usecaseui.llmadaptation.bean.File">
+ select file_id as fileId,file_name as fileName from file where knowledge_base_id = #{knowledgeBaseId}
+ </select>
<delete id="deleteKnowledgeBaseByUuid">
delete from knowledge_base where knowledge_base_id = #{knowledgeBaseId}
</trim>
where knowledge_base_id = #{knowledgeBase.knowledgeBaseId}
</update>
+
+ <delete id="deleteFileByFileId">
+ delete from file where file_id = #{fileId}
+ </delete>
+
+ <select id="getKnowledgeIdByFileId" resultType="java.lang.String">
+ select knowledge_base_id from file where file_id = #{fileId}
+ </select>
</mapper>
\ No newline at end of file
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper">
<insert id="insertMaaSPlatform">
- insert into maas_platform(maas_platform_id,maas_platform_name,operator_id,operator_name,maas_type)
+ insert into maas_platform(maas_platform_id,maas_platform_name,operator_id,operator_name,maas_type,server_ip,vector_model)
values (#{maaSPlatform.maaSPlatformId},
#{maaSPlatform.maaSPlatformName},
#{maaSPlatform.operatorId},
#{maaSPlatform.operatorName},
- #{maaSPlatform.maaSType})
+ #{maaSPlatform.maaSType},
+ #{maaSPlatform.serverIp},
+ #{maaSPlatform.vectorModel})
</insert>
<insert id="insertModel">
insert into model_information(model_id,model_name,maas_platform_id)
maas_platform_name as maaSPlatformName,
operator_id as operatorId,
operator_name as operatorName,
- maas_type as maaSType
+ maas_type as maaSType,
+ server_ip as serverIp,
+ vector_model as vectorModel
from maas_platform
</select>
<select id="getModelList" resultType="org.onap.usecaseui.llmadaptation.bean.ModelInformation">
maas_platform_name as maaSPlatformName,
operator_id as operatorId,
operator_name as operatorName,
- maas_type as maaSType
+ maas_type as maaSType,
+ server_ip as serverIp,
+ vector_model as vectorModel
from maas_platform
where maas_platform_id = #{maaSPlatformId}
</select>