From 02746ab4c531707dd909537fce03eb7172e5f3fd Mon Sep 17 00:00:00 2001 From: kaixiliu Date: Thu, 26 Dec 2024 16:10:56 +0800 Subject: Support connecting multiple maas platforms Issue-ID: USECASEUI-844 Change-Id: I9b08bee4e8ede22620853393c01e78a4c452575e Signed-off-by: kaixiliu --- .../usecaseui/llmadaptation/bean/MaaSPlatform.java | 2 + .../bean/bisheng/BiShengCreateDatasetResponse.java | 9 + .../bean/bisheng/ProcessFileResponse.java | 12 ++ .../llmadaptation/bean/bisheng/ResponseStatus.java | 12 ++ .../bean/fastgpt/CreateCollectionParam.java | 20 --- .../bean/fastgpt/CreateDataSetParam.java | 18 -- .../bean/fastgpt/CreateDataSetResponse.java | 14 -- .../fastgpt/dataset/CreateCollectionParam.java | 20 +++ .../bean/fastgpt/dataset/CreateDataSetParam.java | 18 ++ .../fastgpt/dataset/CreateDataSetResponse.java | 14 ++ .../llmadaptation/config/WebClientConfig.java | 4 +- .../llmadaptation/constant/BiShengConstant.java | 21 +++ .../llmadaptation/constant/CommonConstant.java | 5 + .../llmadaptation/constant/FastGptConstant.java | 22 +-- .../llmadaptation/constant/ServerConstant.java | 28 +++ .../controller/ApplicationController.java | 24 +-- .../controller/DatasetController.java | 25 ++- .../llmadaptation/controller/MaaSController.java | 10 +- .../llmadaptation/mapper/ApplicationMapper.java | 20 +++ .../llmadaptation/mapper/DatasetMapper.java | 28 +++ .../mapper/FastGptApplicationMapper.java | 18 -- .../llmadaptation/mapper/FastGptDatasetMapper.java | 26 --- .../llmadaptation/mapper/MaaSPlatformMapper.java | 4 + .../llmadaptation/service/ApplicationService.java | 21 +++ .../service/BiShengApplicationService.java | 17 ++ .../service/BiShengDatasetService.java | 15 ++ .../llmadaptation/service/DatasetService.java | 19 ++ .../service/FastGptApplicationService.java | 4 +- .../service/FastGptDatasetService.java | 5 +- .../llmadaptation/service/MaaSService.java | 5 +- .../service/impl/ApplicationServiceImpl.java | 138 +++++++++++++++ .../impl/BiShengApplicationServiceImpl.java | 178 +++++++++++++++++++ .../service/impl/BiShengDatasetServiceImpl.java | 191 +++++++++++++++++++++ .../service/impl/DatasetServiceImpl.java | 111 ++++++++++++ .../impl/FastGptApplicationServiceImpl.java | 103 ++++++----- .../service/impl/FastGptDatasetServiceImpl.java | 101 ++++++----- .../service/impl/MaaSServiceImpl.java | 28 ++- llm-adaptation/src/main/resources/application.yaml | 12 +- .../src/main/resources/llm-adaptation-init.sql | 3 +- .../main/resources/mapper/ApplicationMapper.xml | 75 ++++++++ .../src/main/resources/mapper/DatasetMapper.xml | 77 +++++++++ .../resources/mapper/FastGptApplicationMapper.xml | 66 ------- .../main/resources/mapper/FastGptDatasetMapper.xml | 68 -------- .../main/resources/mapper/MaaSPlatformMapper.xml | 26 ++- 44 files changed, 1246 insertions(+), 391 deletions(-) create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/BiShengCreateDatasetResponse.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ProcessFileResponse.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ResponseStatus.java delete mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateCollectionParam.java delete mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetParam.java delete mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetResponse.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateCollectionParam.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetParam.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetResponse.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/BiShengConstant.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/CommonConstant.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/ServerConstant.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/ApplicationMapper.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/DatasetMapper.java delete mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptApplicationMapper.java delete mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptDatasetMapper.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/ApplicationService.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengApplicationService.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengDatasetService.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/DatasetService.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/ApplicationServiceImpl.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengApplicationServiceImpl.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengDatasetServiceImpl.java create mode 100644 llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/DatasetServiceImpl.java create mode 100644 llm-adaptation/src/main/resources/mapper/ApplicationMapper.xml create mode 100644 llm-adaptation/src/main/resources/mapper/DatasetMapper.xml delete mode 100644 llm-adaptation/src/main/resources/mapper/FastGptApplicationMapper.xml delete mode 100644 llm-adaptation/src/main/resources/mapper/FastGptDatasetMapper.xml diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/MaaSPlatform.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/MaaSPlatform.java index 20443e9..156aa76 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/MaaSPlatform.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/MaaSPlatform.java @@ -16,6 +16,8 @@ public class MaaSPlatform { private String operatorName; + private String maaSType; + private List modelList; } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/BiShengCreateDatasetResponse.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/BiShengCreateDatasetResponse.java new file mode 100644 index 0000000..3047376 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/BiShengCreateDatasetResponse.java @@ -0,0 +1,9 @@ +package org.onap.usecaseui.llmadaptation.bean.bisheng; + +import com.alibaba.fastjson2.JSONObject; +import lombok.Data; + +@Data +public class BiShengCreateDatasetResponse extends ResponseStatus { + private JSONObject data; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ProcessFileResponse.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ProcessFileResponse.java new file mode 100644 index 0000000..829f8cd --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ProcessFileResponse.java @@ -0,0 +1,12 @@ +package org.onap.usecaseui.llmadaptation.bean.bisheng; + +import com.alibaba.fastjson2.JSONObject; +import lombok.Data; + +import java.util.List; + + +@Data +public class ProcessFileResponse extends ResponseStatus{ + private List data; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ResponseStatus.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ResponseStatus.java new file mode 100644 index 0000000..90c64b6 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/bisheng/ResponseStatus.java @@ -0,0 +1,12 @@ +package org.onap.usecaseui.llmadaptation.bean.bisheng; + +import lombok.Data; + +@Data +public class ResponseStatus { + private int status_code; + + private String status_message; + + private String detail; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateCollectionParam.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateCollectionParam.java deleted file mode 100644 index 33b40b2..0000000 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateCollectionParam.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.onap.usecaseui.llmadaptation.bean.fastgpt; - -import lombok.Data; - -@Data -public class CreateCollectionParam { - private String trainingType; - - private String datasetId; - - private int chunkSize; - - private String chunkSplitter; - - private String fileId; - - private String name; - - private String qaPrompt; -} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetParam.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetParam.java deleted file mode 100644 index 481773c..0000000 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetParam.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.onap.usecaseui.llmadaptation.bean.fastgpt; - -import lombok.Data; - -@Data -public class CreateDataSetParam { - private String type; - - private String avatar; - - private String name; - - private String intro; - - private String agentModel; - - private String vectorModel; -} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetResponse.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetResponse.java deleted file mode 100644 index 444c81a..0000000 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/CreateDataSetResponse.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.onap.usecaseui.llmadaptation.bean.fastgpt; - -import lombok.Data; - -@Data -public class CreateDataSetResponse { - private int code; - - private String statusText; - - private String message; - - private Object data; -} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateCollectionParam.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateCollectionParam.java new file mode 100644 index 0000000..12b5277 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateCollectionParam.java @@ -0,0 +1,20 @@ +package org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset; + +import lombok.Data; + +@Data +public class CreateCollectionParam { + private String trainingType; + + private String datasetId; + + private int chunkSize; + + private String chunkSplitter; + + private String fileId; + + private String name; + + private String qaPrompt; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetParam.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetParam.java new file mode 100644 index 0000000..b22b90a --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetParam.java @@ -0,0 +1,18 @@ +package org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset; + +import lombok.Data; + +@Data +public class CreateDataSetParam { + private String type; + + private String avatar; + + private String name; + + private String intro; + + private String agentModel; + + private String vectorModel; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetResponse.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetResponse.java new file mode 100644 index 0000000..eaff56f --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/bean/fastgpt/dataset/CreateDataSetResponse.java @@ -0,0 +1,14 @@ +package org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset; + +import lombok.Data; + +@Data +public class CreateDataSetResponse { + private int code; + + private String statusText; + + private String message; + + private Object data; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/config/WebClientConfig.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/config/WebClientConfig.java index d0a6926..8434b6b 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/config/WebClientConfig.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/config/WebClientConfig.java @@ -31,8 +31,8 @@ public class WebClientConfig { public WebClient getWebClient() { HttpClient httpClient = HttpClient.create() .tcpConfiguration(tcpClient -> tcpClient - .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)) - .responseTimeout(Duration.ofSeconds(10)); + .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 50000)) + .responseTimeout(Duration.ofSeconds(50)); return WebClient.builder().clientConnector(new ReactorClientHttpConnector(httpClient)).build(); } } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/BiShengConstant.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/BiShengConstant.java new file mode 100644 index 0000000..3a9a3bc --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/BiShengConstant.java @@ -0,0 +1,21 @@ +package org.onap.usecaseui.llmadaptation.constant; + +public class BiShengConstant { + public static final String COOKIE_VALUE = "access_token_cookie=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJ1c2VyX25hbWVcIjogXCJyb290XCIsIFwidXNlcl9pZFwiOiAxLCBcInJvbGVcIjogXCJhZG1pblwifSIsImlhdCI6MTczMzEyMjYwMSwibmJmIjoxNzMzMTIyNjAxLCJqdGkiOiI3YzAwNTMyYy1hOGI2LTQwM2YtYmVjMi1mZjAyODU1NjNhMGUiLCJleHAiOjIwNDg0ODI2MDEsInR5cGUiOiJhY2Nlc3MiLCJmcmVzaCI6ZmFsc2V9.K7H2Yoc8h5qv55ciOtfiQZhInWkt7VH5Uq7OGdsxhek"; + + public static final String CREATE_DATASET_URL = "/api/v1/knowledge/create"; + + public static final String UPLOAD_FILE_URL = "/api/v1/knowledge/upload"; + + public static final String PROCESS_FILE_URL = "/api/v1/knowledge/process"; + + public static final String DATASET_V2_URL = "/api/v2/filelib/"; + + public static final String APPLICATION_URL = "/api/v1/assistant"; + + public static final String APPLICATION_CHAT_URL = "/api/v2/assistant/chat/completions"; + + public static final String DELETE_APPLICATION = "/api/v1/assistant/delete?assistant_id="; + + public static final String GET_APPLICATION_URL = "/api/v1/assistant/info/"; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/CommonConstant.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/CommonConstant.java new file mode 100644 index 0000000..a61484a --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/CommonConstant.java @@ -0,0 +1,5 @@ +package org.onap.usecaseui.llmadaptation.constant; + +public class CommonConstant { + public static final String COOKIE = "Cookie"; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/FastGptConstant.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/FastGptConstant.java index 7aefa8f..a4fb335 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/FastGptConstant.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/FastGptConstant.java @@ -1,29 +1,29 @@ package org.onap.usecaseui.llmadaptation.constant; public class FastGptConstant { - public static final String COOKIE = "Cookie"; + public static final String COOKIE_VALUE = "fastgpt_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYmEiLCJ0ZWFtSWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYzAiLCJ0bWJJZCI6IjY3MWY1NDYwYzhmNzdhMWMwZjNlNTJjMiIsImlzUm9vdCI6dHJ1ZSwiZXhwIjoxNzM1NTIzMzY0LCJpYXQiOjE3MzQ5MTg1NjR9.GPomC4qSnz3ADnEIo4sgl8jROaCsomEh9J6kfVAZuBQ"; - public static final String COOKIE_VALUE = "fastgpt_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYmEiLCJ0ZWFtSWQiOiI2NzFmNTQ2MGM4Zjc3YTFjMGYzZTUyYzAiLCJ0bWJJZCI6IjY3MWY1NDYwYzhmNzdhMWMwZjNlNTJjMiIsImlzUm9vdCI6dHJ1ZSwiZXhwIjoxNzMzMjc0Mzc2LCJpYXQiOjE3MzI2Njk1NzZ9.NdJ_ShISQOa1f5AvGsfq8Zrh4g4e2JwtX1TZ2iCLN6I"; + public static final String CREATE_DATASET_URL = "/api/core/dataset/create"; - public static final String CREATE_DATASET_URL = "http://172.22.16.126:3000/api/core/dataset/create"; + public static final String UPLOAD_FILE_URL = "/api/common/file/upload"; - public static final String UPLOAD_FILE_URL = "http://172.22.16.126:3000/api/common/file/upload"; + public static final String CRATE_COLLECTION_URL = "/api/core/dataset/collection/create/fileId"; - public static final String CRATE_COLLECTION_URL = "http://172.22.16.126:3000/api/core/dataset/collection/create/fileId"; + public static final String UPDATE_DATASET_URL = "/api/core/dataset/update"; - public static final String DELETE_DATASET_URL = "http://172.22.16.126:3000/api/core/dataset/delete?id="; + public static final String DELETE_DATASET_URL = "/api/core/dataset/delete?id="; - public static final String CREATE_APPLICATION = "http://172.22.16.126:3000/api/core/app/create"; + public static final String CREATE_APPLICATION = "/api/core/app/create"; - public static final String UPDATE_APPLICATION = "http://172.22.16.126:3000/api/core/app/update?appId="; + public static final String UPDATE_APPLICATION = "/api/core/app/update?appId="; - public static final String PUBLISH_APPLICATION = "http://172.22.16.126:3000/api/core/app/version/publish?appId="; + public static final String PUBLISH_APPLICATION = "/api/core/app/version/publish?appId="; public static final String CREATE_APP_PARAM_FILE_URL = "classpath:Param/createApplication.json"; public static final String PUBLISH_APP_PARAM_FILE_URL = "classpath:Param/publishApplication.json"; - public static final String APPLICATION_CHAT_URL = "http://172.22.16.126:3000/api/v1/chat/completions"; + public static final String APPLICATION_CHAT_URL = "/api/v1/chat/completions"; - public static final String DELETE_APPLICATION = "http://172.22.16.126:3000/api/core/app/del?appId="; + public static final String DELETE_APPLICATION = "/api/core/app/del?appId="; } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/ServerConstant.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/ServerConstant.java new file mode 100644 index 0000000..efc6012 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/constant/ServerConstant.java @@ -0,0 +1,28 @@ +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; +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/ApplicationController.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/ApplicationController.java index f10495e..a6493de 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/ApplicationController.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/ApplicationController.java @@ -2,9 +2,8 @@ package org.onap.usecaseui.llmadaptation.controller; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; -import org.onap.usecaseui.llmadaptation.bean.Application; -import org.onap.usecaseui.llmadaptation.bean.ServiceResult; -import org.onap.usecaseui.llmadaptation.service.FastGptApplicationService; +import org.onap.usecaseui.llmadaptation.bean.*; +import org.onap.usecaseui.llmadaptation.service.ApplicationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; @@ -15,32 +14,37 @@ import reactor.core.publisher.Mono; @RestController @RequestMapping("/api/usecaseui-llm-adaptation/v1/application") public class ApplicationController { - @Autowired - private FastGptApplicationService fastGptApplicationService; + private ApplicationService applicationService; @PostMapping(value = "/create", produces = MediaType.APPLICATION_JSON_VALUE) public Mono createApplication(@RequestBody Application application) { - return fastGptApplicationService.createApplication(application); + return applicationService.createApplication(application); + } @DeleteMapping(value = "/delete/{applicationId}", produces = MediaType.APPLICATION_JSON_VALUE) public Mono removeKnowledgeBase(@PathVariable("applicationId") String applicationId) { - return fastGptApplicationService.removeApplication(applicationId); + return applicationService.removeApplication(applicationId); } @PostMapping(value = "/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux streamData(@RequestBody JSONObject question) { - return fastGptApplicationService.chat(question); + return applicationService.chat(question); } @GetMapping(value = {"/query"}, produces = MediaType.APPLICATION_JSON_VALUE) public ServiceResult getApplications() { - return fastGptApplicationService.getApplications(); + return applicationService.getApplications(); } @GetMapping(value = {"/queryById/{applicationId}"}, produces = MediaType.APPLICATION_JSON_VALUE) public ServiceResult getApplications(@PathVariable("applicationId") String applicationId) { - return fastGptApplicationService.getApplicationById(applicationId); + return applicationService.getApplicationById(applicationId); + } + + @PostMapping(value = "/edit", produces = MediaType.APPLICATION_JSON_VALUE) + public Mono editDataset(@RequestBody Application application) { + return applicationService.editApplication(application); } } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/DatasetController.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/DatasetController.java index 5425cd6..af2a672 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/DatasetController.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/DatasetController.java @@ -4,8 +4,8 @@ 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.mapper.FastGptDatasetMapper; -import org.onap.usecaseui.llmadaptation.service.FastGptDatasetService; +import org.onap.usecaseui.llmadaptation.mapper.DatasetMapper; +import org.onap.usecaseui.llmadaptation.service.DatasetService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.http.codec.multipart.FilePart; @@ -19,36 +19,43 @@ import java.util.List; @RestController @RequestMapping("/api/usecaseui-llm-adaptation/v1/knowledgeBase") public class DatasetController { + @Autowired - private FastGptDatasetService fastGptDatasetService; + private DatasetMapper datasetMapper; @Autowired - private FastGptDatasetMapper fastGptDatasetMapper; + private DatasetService datasetService; + @PostMapping(value = "/create", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Mono handleFileUpload(@RequestPart("files") Flux fileParts, @RequestPart("metaData") String metaData) { - return fastGptDatasetService.createDataset(fileParts, metaData); + return datasetService.createDataset(fileParts, metaData); } @DeleteMapping(value = "/delete/{knowledgeBaseId}", produces = MediaType.APPLICATION_JSON_VALUE) public Mono removeKnowledgeBase(@PathVariable("knowledgeBaseId") String knowledgeBaseId) { - return fastGptDatasetService.removeDataset(knowledgeBaseId); + return datasetService.removeDataset(knowledgeBaseId); } @GetMapping(value = {"/query"}, produces = MediaType.APPLICATION_JSON_VALUE) public ServiceResult getKnowledgeBaseRecord() { - return fastGptDatasetService.getDataSetRecord(); + return datasetService.getDataSetRecord(); } @GetMapping(value = {"/queryById/{knowledgeBaseId}"}, produces = MediaType.APPLICATION_JSON_VALUE) public ServiceResult getKnowledgeBaseRecordById(@PathVariable("knowledgeBaseId") String knowledgeBaseId) { - return fastGptDatasetService.geDatasetById(knowledgeBaseId); + return datasetService.geDatasetById(knowledgeBaseId); } @GetMapping(value = {"/queryByMaaSId/{maaSPlatformId}"}, produces = MediaType.APPLICATION_JSON_VALUE) public ServiceResult getKnowledgeBaseRecordByMaaSId(@PathVariable("maaSPlatformId") String maaSPlatformId) { - List knowledgeBaseByMaaSId = fastGptDatasetMapper.getKnowledgeBaseByMaaSId(maaSPlatformId); + List knowledgeBaseByMaaSId = datasetMapper.getKnowledgeBaseByMaaSId(maaSPlatformId); return new ServiceResult(new ResultHeader(200, "success"), knowledgeBaseByMaaSId); } + + @PostMapping(value = "/edit", produces = MediaType.APPLICATION_JSON_VALUE) + public Mono editDataset(@RequestBody KnowledgeBase knowledgeBase) { + return datasetService.editDataset(knowledgeBase); + } } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/MaaSController.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/MaaSController.java index 4418287..2884f7b 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/MaaSController.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/controller/MaaSController.java @@ -2,12 +2,10 @@ package org.onap.usecaseui.llmadaptation.controller; import lombok.extern.slf4j.Slf4j; import org.onap.usecaseui.llmadaptation.bean.*; -import org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper; import org.onap.usecaseui.llmadaptation.service.MaaSService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; -import reactor.core.publisher.Mono; import java.util.List; @@ -16,9 +14,6 @@ import java.util.List; @RequestMapping("/api/usecaseui-llm-adaptation/v1/") public class MaaSController { - @Autowired - private MaaSPlatformMapper maaSPlatformMapper; - @Autowired private MaaSService maaSService; @@ -30,9 +25,6 @@ public class MaaSController { @PostMapping(value = "/maas/register", produces = MediaType.APPLICATION_JSON_VALUE) public ServiceResult registerMaaSPlatform(@RequestBody MaaSPlatform maaSPlatform) { - maaSPlatformMapper.insertMaaSPlatform(maaSPlatform); - maaSPlatformMapper.insertModel(maaSPlatform.getMaaSPlatformId(), maaSPlatform.getModelList()); - return new ServiceResult(new ResultHeader(200, "success")); + return maaSService.registerMaaSPlatform(maaSPlatform); } - } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/ApplicationMapper.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/ApplicationMapper.java new file mode 100644 index 0000000..0937eed --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/ApplicationMapper.java @@ -0,0 +1,20 @@ +package org.onap.usecaseui.llmadaptation.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.onap.usecaseui.llmadaptation.bean.Application; + +import java.util.List; + +@Mapper +public interface ApplicationMapper { + List getAllApplication(); + + int insertApplication(@Param(value = "application") Application application); + + int deleteApplicationById(@Param(value = "applicationId") String applicationId); + + Application getApplicationById(@Param(value = "applicationId") String applicationId); + + int updateApplication(@Param(value = "application") Application application); +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/DatasetMapper.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/DatasetMapper.java new file mode 100644 index 0000000..5882061 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/DatasetMapper.java @@ -0,0 +1,28 @@ +package org.onap.usecaseui.llmadaptation.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase; + +import java.util.List; + +@Mapper +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); + + List getKnowledgeBaseRecords(); + + List getFileNamesByKnowledgeBaseId(@Param(value = "knowledgeBaseId") String knowledgeBaseId); + + KnowledgeBase getKnowledgeBaseRecordById(@Param(value = "knowledgeBaseId") String knowledgeBaseId); + + int deleteKnowledgeBaseByUuid(@Param(value = "knowledgeBaseId") String knowledgeBaseId); + + List getKnowledgeBaseByMaaSId(@Param(value = "maaSPlatformId") String maaSPlatformId); + + int deleteFileById(@Param(value = "knowledgeBaseId") String knowledgeBaseId); + + int updateKnowledgeBase(@Param(value = "knowledgeBase") KnowledgeBase knowledgeBase); +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptApplicationMapper.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptApplicationMapper.java deleted file mode 100644 index f3b6506..0000000 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptApplicationMapper.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.onap.usecaseui.llmadaptation.mapper; - -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.onap.usecaseui.llmadaptation.bean.Application; - -import java.util.List; - -@Mapper -public interface FastGptApplicationMapper { - List getAllApplication(); - - int insertApplication(@Param(value = "application") Application application); - - int deleteApplicationById(@Param(value = "applicationId") String applicationId); - - Application getApplicationById(@Param(value = "applicationId") String applicationId); -} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptDatasetMapper.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptDatasetMapper.java deleted file mode 100644 index 4114f1a..0000000 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/FastGptDatasetMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.onap.usecaseui.llmadaptation.mapper; - -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase; - -import java.util.List; - -@Mapper -public interface FastGptDatasetMapper { - int insertKnowledgeBaseRecord(@Param(value = "knowledgeBase") KnowledgeBase knowledgeBase); - - int insertFileName(@Param(value = "fileId") String fileId,@Param(value = "fileName") String fileName,@Param(value = "knowledgeBaseId") String knowledgeBaseId); - - List getKnowledgeBaseRecords(); - - List getFileNamesByKnowledgeBaseId(@Param(value = "knowledgeBaseId") String knowledgeBaseId); - - KnowledgeBase getKnowledgeBaseRecordById(@Param(value = "knowledgeBaseId") String knowledgeBaseId); - - int deleteKnowledgeBaseByUuid(@Param(value = "knowledgeBaseId") String knowledgeBaseId); - - List getKnowledgeBaseByMaaSId(@Param(value = "maaSPlatformId") String maaSPlatformId); - - int deleteFileById(@Param(value = "knowledgeBaseId") String knowledgeBaseId); -} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/MaaSPlatformMapper.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/MaaSPlatformMapper.java index bfe4089..d4eb21b 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/MaaSPlatformMapper.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/mapper/MaaSPlatformMapper.java @@ -18,4 +18,8 @@ public interface MaaSPlatformMapper { List getMaaSPlatforms(); List getModelList(@Param(value = "maaSPlatformId") String maaSPlatformId); + + MaaSPlatform getMaaSPlatformById(@Param(value = "maaSPlatformId") String maaSPlatformId); + + ModelInformation getModelById(@Param(value = "modelId") String modelId); } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/ApplicationService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/ApplicationService.java new file mode 100644 index 0000000..636832e --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/ApplicationService.java @@ -0,0 +1,21 @@ +package org.onap.usecaseui.llmadaptation.service; + +import com.alibaba.fastjson2.JSONObject; +import org.onap.usecaseui.llmadaptation.bean.Application; +import org.onap.usecaseui.llmadaptation.bean.ServiceResult; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +public interface ApplicationService { + Mono createApplication(Application application); + + Flux chat(JSONObject question); + + Mono removeApplication(String applicationId); + + ServiceResult getApplications(); + + ServiceResult getApplicationById(String applicationId); + + Mono editApplication(Application application); +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengApplicationService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengApplicationService.java new file mode 100644 index 0000000..8f600c4 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengApplicationService.java @@ -0,0 +1,17 @@ +package org.onap.usecaseui.llmadaptation.service; + +import com.alibaba.fastjson2.JSONObject; +import org.onap.usecaseui.llmadaptation.bean.Application; +import org.onap.usecaseui.llmadaptation.bean.ServiceResult; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +public interface BiShengApplicationService { + Mono createApplication(Application application); + + Flux chat(JSONObject question); + + Mono removeApplication(String applicationId); + + Mono editApplication(Application application); +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengDatasetService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengDatasetService.java new file mode 100644 index 0000000..27716d7 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/BiShengDatasetService.java @@ -0,0 +1,15 @@ +package org.onap.usecaseui.llmadaptation.service; + +import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase; +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 createDataset(Flux fileParts, String metaData); + + Mono removeDataset(String knowledgeBaseId); + + Mono editDataset(KnowledgeBase knowledgeBase); +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/DatasetService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/DatasetService.java new file mode 100644 index 0000000..f213362 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/DatasetService.java @@ -0,0 +1,19 @@ +package org.onap.usecaseui.llmadaptation.service; + +import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase; +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 DatasetService { + Mono createDataset(Flux fileParts, String metaData); + + Mono removeDataset(String knowledgeBaseId); + + ServiceResult getDataSetRecord(); + + ServiceResult geDatasetById(String knowledgeBaseId); + + Mono editDataset(KnowledgeBase knowledgeBase); +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptApplicationService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptApplicationService.java index 19e6c11..6d09e6f 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptApplicationService.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptApplicationService.java @@ -13,7 +13,5 @@ public interface FastGptApplicationService { Mono removeApplication(String applicationId); - ServiceResult getApplications(); - - ServiceResult getApplicationById(String applicationId); + Mono editApplication(Application application); } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptDatasetService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptDatasetService.java index 901b1e0..47356b8 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptDatasetService.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/FastGptDatasetService.java @@ -1,5 +1,6 @@ package org.onap.usecaseui.llmadaptation.service; +import org.onap.usecaseui.llmadaptation.bean.KnowledgeBase; import org.onap.usecaseui.llmadaptation.bean.ServiceResult; import org.springframework.http.codec.multipart.FilePart; import reactor.core.publisher.Flux; @@ -10,7 +11,5 @@ public interface FastGptDatasetService { Mono removeDataset(String knowledgeBaseId); - ServiceResult getDataSetRecord(); - - ServiceResult geDatasetById(String knowledgeBaseId); + Mono editDataset(KnowledgeBase knowledgeBase); } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/MaaSService.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/MaaSService.java index 0517887..026666a 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/MaaSService.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/MaaSService.java @@ -1,10 +1,13 @@ package org.onap.usecaseui.llmadaptation.service; +import org.onap.usecaseui.llmadaptation.bean.MaaSPlatform; import org.onap.usecaseui.llmadaptation.bean.Operator; -import reactor.core.publisher.Mono; +import org.onap.usecaseui.llmadaptation.bean.ServiceResult; import java.util.List; public interface MaaSService { List getAllMaaSPlatform(); + + ServiceResult registerMaaSPlatform(MaaSPlatform maaSPlatform); } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/ApplicationServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/ApplicationServiceImpl.java new file mode 100644 index 0000000..ae9a515 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/ApplicationServiceImpl.java @@ -0,0 +1,138 @@ +package org.onap.usecaseui.llmadaptation.service.impl; + +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.mapper.ApplicationMapper; +import org.onap.usecaseui.llmadaptation.mapper.DatasetMapper; +import org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper; +import org.onap.usecaseui.llmadaptation.service.ApplicationService; +import org.onap.usecaseui.llmadaptation.service.BiShengApplicationService; +import org.onap.usecaseui.llmadaptation.service.FastGptApplicationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.List; + +@Slf4j +@Service +public class ApplicationServiceImpl implements ApplicationService { + @Autowired + private ApplicationMapper applicationMapper; + + @Autowired + private DatasetMapper datasetMapper; + + @Autowired + private FastGptApplicationService fastGptApplicationService; + + @Autowired + private BiShengApplicationService biShengApplicationService; + + @Autowired + private MaaSPlatformMapper maaSPlatformMapper; + + @Autowired + private ServerConstant serverConstant; + + @Override + public Mono createApplication(Application application) { + List applications = applicationMapper.getAllApplication(); + if (!CollectionUtils.isEmpty(applications)) { + List collect = applications.stream().filter(app -> app.getApplicationName().equals(application.getApplicationName())).toList(); + if (!collect.isEmpty()) { + return Mono.just(new ServiceResult(new ResultHeader(500, "name exists"), applications)); + } + } + MaaSPlatform maaSPlatformById = maaSPlatformMapper.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); + } + return biShengApplicationService.createApplication(application); + } + + @Override + public Mono removeApplication(String applicationId) { + String maaSType = getMaaSType(applicationId); + String fastGptType = serverConstant.getFastGptType(); + if (fastGptType.equals(maaSType)) { + return fastGptApplicationService.removeApplication(applicationId); + } + return biShengApplicationService.removeApplication(applicationId); + } + + @Override + public Flux chat(JSONObject question) { + String applicationId = question.getString("applicationId"); + String maaSType = getMaaSType(applicationId); + String fastGptType = serverConstant.getFastGptType(); + if (fastGptType.equals(maaSType)) { + return fastGptApplicationService.chat(question); + } + return biShengApplicationService.chat(question); + } + + @Override + public ServiceResult getApplications() { + List allApplication = applicationMapper.getAllApplication(); + if (CollectionUtils.isEmpty(allApplication)) { + return new ServiceResult(new ResultHeader(500, "no application"), allApplication); + } + allApplication.forEach(application -> { + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(application.getKnowledgeBaseId()); + if (knowledgeBaseRecordById != null) { + application.setOperatorId(knowledgeBaseRecordById.getOperatorId()); + application.setOperatorName(knowledgeBaseRecordById.getOperatorName()); + application.setMaaSPlatformId(knowledgeBaseRecordById.getMaaSPlatformId()); + application.setMaaSPlatformName(knowledgeBaseRecordById.getMaaSPlatformName()); + application.setKnowledgeBaseName(knowledgeBaseRecordById.getKnowledgeBaseName()); + } + }); + return new ServiceResult(new ResultHeader(200, "success"), allApplication); + } + + @Override + public ServiceResult getApplicationById(String applicationId) { + Application application = applicationMapper.getApplicationById(applicationId); + if (application == null) { + return new ServiceResult(new ResultHeader(500, "no application"), application); + } + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(application.getKnowledgeBaseId()); + application.setOperatorId(knowledgeBaseRecordById.getOperatorId()); + application.setOperatorName(knowledgeBaseRecordById.getOperatorName()); + application.setMaaSPlatformId(knowledgeBaseRecordById.getMaaSPlatformId()); + application.setMaaSPlatformName(knowledgeBaseRecordById.getMaaSPlatformName()); + application.setKnowledgeBaseName(knowledgeBaseRecordById.getKnowledgeBaseName()); + return new ServiceResult(new ResultHeader(200, "success"), application); + } + + @Override + public Mono editApplication(Application application) { + MaaSPlatform maaSPlatformById = maaSPlatformMapper.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); + } + return biShengApplicationService.editApplication(application); + } + + private String getMaaSType(String applicationId) { + Application applicationById = applicationMapper.getApplicationById(applicationId); + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(applicationById.getKnowledgeBaseId()); + MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBaseRecordById.getMaaSPlatformId()); + return maaSPlatformById.getMaaSType(); + } +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengApplicationServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengApplicationServiceImpl.java new file mode 100644 index 0000000..737fc66 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengApplicationServiceImpl.java @@ -0,0 +1,178 @@ +package org.onap.usecaseui.llmadaptation.service.impl; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.onap.usecaseui.llmadaptation.bean.Application; +import org.onap.usecaseui.llmadaptation.bean.ResultHeader; +import org.onap.usecaseui.llmadaptation.bean.ServiceResult; +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; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.ArrayList; +import java.util.List; + +import static org.springframework.http.MediaType.APPLICATION_JSON; + +@Slf4j +@Service +public class BiShengApplicationServiceImpl implements BiShengApplicationService { + @Autowired + private ApplicationMapper applicationMapper; + + @Autowired + private WebClient webClient; + + @Autowired + private ServerConstant serverConstant; + + @Override + public Mono createApplication(Application application) { + 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) + .contentType(APPLICATION_JSON) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .bodyValue(createParam) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(createResponse -> { + JSONObject data = createResponse.getData(); + if (data == null) { + return Mono.just(new ServiceResult(new ResultHeader(createResponse.getStatus_code(), createResponse.getStatus_message()))); + } + String applicationId = data.getString("id"); + data.put("model_name", application.getLargeModelId()); + data.put("temperature", application.getTemperature() / 10); + List list = new ArrayList<>(); + list.add(Integer.valueOf(application.getKnowledgeBaseId())); + data.put("knowledge_list", list); + data.put("guide_word", application.getOpeningRemarks()); + data.put("update_time", TimeUtil.getNowTime()); + return webClient.put() + .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_URL) + .contentType(APPLICATION_JSON) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .bodyValue(data) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(updateResponse -> { + application.setApplicationId(applicationId); + applicationMapper.insertApplication(application); + return Mono.just(new ServiceResult(new ResultHeader(200, "Application created successfully"))); + }); + }).onErrorResume(e -> { + log.error("Error occurred while creating application: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "Application creation failed"))); + }); + } + + @Override + public Flux chat(JSONObject question) { + JSONObject param = new JSONObject(); + param.put("model", question.getString("applicationId")); + param.put("temperature", 0); + param.put("stream", true); + JSONObject message = new JSONObject(); + message.put("role", "user"); + message.put("content", question.getString("question")); + JSONArray jsonArray = new JSONArray(); + jsonArray.add(message); + param.put("messages", jsonArray); + return webClient.post() + .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_CHAT_URL) + .bodyValue(param) + .retrieve() + .bodyToFlux(String.class) + .flatMap(response -> { + if("[DONE]".equals(response)){ + return Flux.just(response); + } + JSONArray choices = JSONObject.parseObject(response).getJSONArray("choices"); + String jsonString = JSONObject.toJSONString(choices.get(0)); + JSONObject jsonObject = JSONObject.parseObject(jsonString); + String string = jsonObject.getJSONObject("delta").getString("content"); + return Flux.just(string); + }) + .onErrorResume(e -> { + log.error("An error occurred {}", e.getMessage()); + return Flux.just("Network Error"); + }); + } + + @Override + public Mono removeApplication(String applicationId) { + String url = serverConstant.getBiShengServer() + BiShengConstant.DELETE_APPLICATION + applicationId; + return webClient.post() + .uri(url) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(response -> { + if (response.getStatus_code() == 200) { + return Mono.fromRunnable(() -> { + try { + applicationMapper.deleteApplicationById(applicationId); + } catch (Exception dbException) { + throw new RuntimeException("Database operation failed", dbException); + } + }).then(Mono.just(new ServiceResult(new ResultHeader(200, "delete success")))); + } else { + return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatus_message()))); + } + }) + .onErrorResume(e -> { + log.error("Error occurred while delete dataset: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "delete failed"))); + }); + } + + @Override + public Mono editApplication(Application application) { + String url = serverConstant.getBiShengServer() + BiShengConstant.GET_APPLICATION_URL + application.getApplicationId(); + return webClient.get() + .uri(url) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(createResponse -> { + JSONObject data = createResponse.getData(); + if (data == null) { + return Mono.just(new ServiceResult(new ResultHeader(createResponse.getStatus_code(), createResponse.getStatus_message()))); + } + data.put("desc", application.getApplicationDescription()); + data.put("name", application.getApplicationName()); + data.put("update_time", TimeUtil.getNowTime()); + List list = new ArrayList<>(); + list.add(Integer.valueOf(application.getKnowledgeBaseId())); + data.put("knowledge_list", list); + return webClient.put() + .uri(serverConstant.getBiShengServer() + BiShengConstant.APPLICATION_URL) + .contentType(APPLICATION_JSON) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .bodyValue(data) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(updateResponse -> { + applicationMapper.updateApplication(application); + return Mono.just(new ServiceResult(new ResultHeader(200, "Application update successfully"))); + }); + }).onErrorResume(e -> { + log.error("Error occurred while update application: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "Application update failed"))); + }); + } +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengDatasetServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengDatasetServiceImpl.java new file mode 100644 index 0000000..bc1cec0 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/BiShengDatasetServiceImpl.java @@ -0,0 +1,191 @@ +package org.onap.usecaseui.llmadaptation.service.impl; + +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.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 org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.http.ContentDisposition; +import org.springframework.http.MediaType; +import org.springframework.http.client.MultipartBodyBuilder; +import org.springframework.http.codec.multipart.FilePart; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.UUID; + +import static org.springframework.http.MediaType.APPLICATION_JSON; + +@Slf4j +@Service +public class BiShengDatasetServiceImpl implements BiShengDatasetService { + + @Autowired + private WebClient webClient; + + @Autowired + private DatasetMapper datasetMapper; + + @Autowired + private ServerConstant serverConstant; + + @Override + public Mono createDataset(Flux fileParts, String metaData) { + 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("name", knowledgeBase.getKnowledgeBaseName()); + return webClient.post() + .uri(serverConstant.getBiShengServer() + BiShengConstant.CREATE_DATASET_URL) + .contentType(APPLICATION_JSON) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .bodyValue(createParam) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(response -> { + if (response.getStatus_code() != 200) { + return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatus_message()))); + } + int knowledgeBaseId = response.getData().getIntValue("id"); + return fileParts.flatMap(filePart -> processFile(filePart, knowledgeBaseId)) + .then(Mono.defer(() -> { + knowledgeBase.setKnowledgeBaseId(String.valueOf(knowledgeBaseId)); + datasetMapper.insertKnowledgeBaseRecord(knowledgeBase); + return Mono.just(new ServiceResult(new ResultHeader(200, "create success"))); + })).onErrorResume(e -> { + log.error("Error occurred during file upload: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "file upload failed"))); + }); + }).onErrorResume(e -> { + log.error("Error occurred while creating dataset: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "create failed"))); + }); + } + + private Mono processFile(FilePart filePart, int knowledgeBaseId) { + String filename = filePart.filename(); + Flux content = filePart.content(); + MultipartBodyBuilder builder = new MultipartBodyBuilder(); + builder.asyncPart("file", content, DataBuffer.class) + .headers(headers -> { + ContentDisposition contentDisposition = ContentDisposition + .builder("form-data") + .name("file") + .filename(filename) + .build(); + headers.setContentDisposition(contentDisposition); + headers.setContentType(MediaType.TEXT_PLAIN); + }); + return webClient.post() + .uri(serverConstant.getBiShengServer() + BiShengConstant.UPLOAD_FILE_URL) + .contentType(MediaType.MULTIPART_FORM_DATA) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .body(BodyInserters.fromMultipartData(builder.build())) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(response -> { + if (response.getStatus_code() != 200) { + log.error("response is {}", response); + return Mono.empty(); + } + String filePath = response.getData().getString("file_path"); + JSONObject processParam = new JSONObject(); + processParam.put("knowledge_id", knowledgeBaseId); + JSONArray jsonArray = new JSONArray(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("file_path", filePath); + jsonArray.add(jsonObject); + processParam.put("file_list", jsonArray); + return webClient.post() + .uri(serverConstant.getBiShengServer() + 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)); + } + return Mono.empty(); + }); + }); + } + + @Override + public Mono removeDataset(String knowledgeBaseId) { + return webClient.delete() + .uri(serverConstant.getBiShengServer() + BiShengConstant.DATASET_V2_URL + knowledgeBaseId) + .header(CommonConstant.COOKIE, BiShengConstant.COOKIE_VALUE) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(response -> { + if (response.getStatus_code() == 200) { + return Mono.fromRunnable(() -> { + try { + datasetMapper.deleteKnowledgeBaseByUuid(knowledgeBaseId); + datasetMapper.deleteFileById(knowledgeBaseId); + } catch (Exception dbException) { + throw new RuntimeException("Database operation failed", dbException); + } + }).then(Mono.just(new ServiceResult(new ResultHeader(200, "delete success")))); + } else { + return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatus_message()))); + } + }) + .onErrorResume(e -> { + log.error("Error occurred while delete dataset: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "delete failed"))); + }); + } + + @Override + public Mono editDataset(KnowledgeBase knowledgeBase) { + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBase.getKnowledgeBaseId()); + if (knowledgeBaseRecordById == null) { + return Mono.just(new ServiceResult(new ResultHeader(500, "dataset is not exist"))); + } + JSONObject updateParam = new JSONObject(); + updateParam.put("knowledge_id", knowledgeBase.getKnowledgeBaseId()); + updateParam.put("name", knowledgeBase.getKnowledgeBaseName()); + updateParam.put("description", knowledgeBase.getKnowledgeBaseDescription()); + updateParam.put("model", serverConstant.getBiShengModel()); + + return webClient.put() + .uri(serverConstant.getBiShengServer() + BiShengConstant.DATASET_V2_URL) + .contentType(APPLICATION_JSON) + .bodyValue(updateParam) + .retrieve() + .bodyToMono(BiShengCreateDatasetResponse.class) + .flatMap(response -> { + if (response.getStatus_code() == 200) { + return Mono.fromRunnable(() -> { + knowledgeBase.setUpdateTime(TimeUtil.getNowTime()); + datasetMapper.updateKnowledgeBase(knowledgeBase); + }).then(Mono.just(new ServiceResult(new ResultHeader(200, "update success")))); + } else { + return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatus_message()))); + } + }) + .onErrorResume(e -> { + log.error("Error occurred while delete dataset: {}", e.getMessage()); + return Mono.just(new ServiceResult(new ResultHeader(500, "update failed"))); + }); + } +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/DatasetServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/DatasetServiceImpl.java new file mode 100644 index 0000000..0a6feb5 --- /dev/null +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/DatasetServiceImpl.java @@ -0,0 +1,111 @@ +package org.onap.usecaseui.llmadaptation.service.impl; + +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.mapper.DatasetMapper; +import org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper; +import org.onap.usecaseui.llmadaptation.service.BiShengDatasetService; +import org.onap.usecaseui.llmadaptation.service.DatasetService; +import org.onap.usecaseui.llmadaptation.service.FastGptDatasetService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.codec.multipart.FilePart; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.List; + +@Slf4j +@Service +public class DatasetServiceImpl implements DatasetService { + + @Autowired + private DatasetMapper datasetMapper; + + @Autowired + private FastGptDatasetService fastGptDatasetService; + + @Autowired + private BiShengDatasetService biShengDatasetService; + + @Autowired + private MaaSPlatformMapper maaSPlatformMapper; + + @Autowired + private ServerConstant serverConstant; + + @Override + public Mono createDataset(Flux fileParts, String metaData) { + KnowledgeBase knowledgeBase = JSONObject.parseObject(metaData, KnowledgeBase.class); + List knowledgeBaseRecords = datasetMapper.getKnowledgeBaseRecords(); + if (!CollectionUtils.isEmpty(knowledgeBaseRecords)) { + List collect = knowledgeBaseRecords.stream().filter(base -> base.getKnowledgeBaseName().equals(knowledgeBase.getKnowledgeBaseName())).toList(); + if (!collect.isEmpty()) { + return Mono.just(new ServiceResult(new ResultHeader(200, "name exists"), knowledgeBaseRecords)); + } + } + MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBase.getMaaSPlatformId()); + String maaSType = maaSPlatformById.getMaaSType(); + String fastGptType = serverConstant.getFastGptType(); + if (fastGptType.equals(maaSType)) { + return fastGptDatasetService.createDataset(fileParts, metaData); + } + return biShengDatasetService.createDataset(fileParts, metaData); + } + + @Override + public Mono removeDataset(String knowledgeBaseId) { + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBaseId); + MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBaseRecordById.getMaaSPlatformId()); + String maaSType = maaSPlatformById.getMaaSType(); + String fastGptType = serverConstant.getFastGptType(); + if (fastGptType.equals(maaSType)) { + return fastGptDatasetService.removeDataset(knowledgeBaseId); + } + return biShengDatasetService.removeDataset(knowledgeBaseId); + } + + @Override + public ServiceResult getDataSetRecord() { + List knowledgeBaseRecords = datasetMapper.getKnowledgeBaseRecords(); + if (CollectionUtils.isEmpty(knowledgeBaseRecords)) { + return new ServiceResult(new ResultHeader(500, "get datasets failed"), knowledgeBaseRecords); + } + + knowledgeBaseRecords.forEach(knowledgeBase -> { + List fileNamesByKnowledgeBaseId = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId()); + knowledgeBase.setFilesName(fileNamesByKnowledgeBaseId); + }); + return new ServiceResult(new ResultHeader(200, "success"), knowledgeBaseRecords); + } + + @Override + public ServiceResult geDatasetById(String knowledgeBaseId) { + KnowledgeBase knowledgeBase = datasetMapper.getKnowledgeBaseRecordById(knowledgeBaseId); + if (knowledgeBase == null) { + return new ServiceResult(new ResultHeader(500, "get dataset failed")); + } + List fileNamesByKnowledgeBaseId = datasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId()); + knowledgeBase.setFilesName(fileNamesByKnowledgeBaseId); + + return new ServiceResult(new ResultHeader(200, "success"), knowledgeBase); + } + + @Override + public Mono editDataset(KnowledgeBase knowledgeBase) { + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBase.getKnowledgeBaseId()); + MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(knowledgeBaseRecordById.getMaaSPlatformId()); + String maaSType = maaSPlatformById.getMaaSType(); + String fastGptType = serverConstant.getFastGptType(); + if (fastGptType.equals(maaSType)) { + return fastGptDatasetService.editDataset(knowledgeBase); + } + return biShengDatasetService.editDataset(knowledgeBase); + } +} diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptApplicationServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptApplicationServiceImpl.java index d8f68ad..14f30ad 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptApplicationServiceImpl.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptApplicationServiceImpl.java @@ -5,20 +5,19 @@ import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.onap.usecaseui.llmadaptation.bean.Application; -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.fastgpt.CreateDataSetResponse; +import org.onap.usecaseui.llmadaptation.bean.fastgpt.dataset.CreateDataSetResponse; 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.mapper.FastGptApplicationMapper; -import org.onap.usecaseui.llmadaptation.mapper.FastGptDatasetMapper; +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; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -39,16 +38,17 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService private ResourceLoader resourceLoader; @Autowired - private FastGptApplicationMapper fastGptApplicationMapper; + private ApplicationMapper applicationMapper; @Autowired private WebClient webClient; @Autowired - private FastGptDatasetMapper fastGptDatasetMapper; + private ServerConstant serverConstant; private final ObjectMapper objectMapper = new ObjectMapper(); + @Override public Mono createApplication(Application application) { try (InputStream inputStream = resourceLoader.getResource(FastGptConstant.CREATE_APP_PARAM_FILE_URL).getInputStream()) { CreateApplicationParam createApplicationParam = objectMapper.readValue(inputStream, CreateApplicationParam.class); @@ -68,9 +68,9 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService private Mono createApplication(CreateApplicationParam createApplicationParam, Application application) { return webClient.post() - .uri(FastGptConstant.CREATE_APPLICATION) + .uri(serverConstant.getFastGptServer() + FastGptConstant.CREATE_APPLICATION) .contentType(APPLICATION_JSON) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .bodyValue(createApplicationParam) .retrieve() .bodyToMono(CreateDataSetResponse.class) @@ -85,7 +85,7 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService private Mono handleApplicationResponse(CreateDataSetResponse createDataSetResponse, Application application) { String data = String.valueOf(createDataSetResponse.getData()); application.setApplicationId(data); - String url = FastGptConstant.UPDATE_APPLICATION + data; + String url = serverConstant.getFastGptServer() + FastGptConstant.UPDATE_APPLICATION + data; UpdateApplicationParam updateApplicationParam = new UpdateApplicationParam(); updateApplicationParam.setAvatar("/imgs/app/avatar/simple.svg"); updateApplicationParam.setDefaultPermission(0); @@ -95,7 +95,7 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService return webClient.put() .uri(url) .contentType(APPLICATION_JSON) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .bodyValue(updateApplicationParam) .retrieve() .bodyToMono(CreateDataSetResponse.class) @@ -113,18 +113,18 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService publishApplicationParam.setVersionName(TimeUtil.getNowTime()); publishApplicationParam.getChatConfig().setWelcomeText(application.getOpeningRemarks()); setApplicationParameters(application, publishApplicationParam); - String publishUrl = FastGptConstant.PUBLISH_APPLICATION + data; + String publishUrl = serverConstant.getFastGptServer() + FastGptConstant.PUBLISH_APPLICATION + data; return webClient.post() .uri(publishUrl) .contentType(APPLICATION_JSON) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .bodyValue(publishApplicationParam) .retrieve() .bodyToMono(CreateDataSetResponse.class) .flatMap(response -> { if (response.getCode() == 200) { - fastGptApplicationMapper.insertApplication(application); + applicationMapper.insertApplication(application); return Mono.just(new ServiceResult(new ResultHeader(200, "Application created successfully"))); } return Mono.just(new ServiceResult(new ResultHeader(500, response.getStatusText()))); @@ -166,8 +166,8 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService }); } + @Override public Flux chat(JSONObject question) { - log.info(JSONObject.toJSONString(question)); ChatParam chatParam = new ChatParam(); chatParam.setAppId(question.getString("applicationId")); chatParam.setStream(true); @@ -186,9 +186,9 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService chatParam.setMessages(messages); AtomicBoolean isDone = new AtomicBoolean(false); return webClient.post() - .uri(FastGptConstant.APPLICATION_CHAT_URL) + .uri(serverConstant.getFastGptServer() + FastGptConstant.APPLICATION_CHAT_URL) .contentType(APPLICATION_JSON) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .bodyValue(chatParam) .retrieve() .bodyToFlux(String.class).flatMap(response -> parseAndTransform(response, isDone)) @@ -210,7 +210,7 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService JSONObject choice = choices.getJSONObject(0); if ("stop".equals(choice.getString("finish_reason"))) { isDone.set(true); - return Flux.empty(); + return Flux.just("[DONE]"); } String string = choice.getJSONObject("delta").getString("content"); isDone.set(false); @@ -218,21 +218,21 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService return Flux.just(string); } + @Override public Mono removeApplication(String applicationId) { - String url = FastGptConstant.DELETE_APPLICATION + applicationId; - + String url = serverConstant.getFastGptServer() + FastGptConstant.DELETE_APPLICATION + applicationId; return webClient.delete() .uri(url) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .retrieve() .bodyToMono(CreateDataSetResponse.class) .flatMap(response -> { if (response.getCode() == 200) { return Mono.fromRunnable(() -> { try { - fastGptApplicationMapper.deleteApplicationById(applicationId); + applicationMapper.deleteApplicationById(applicationId); } catch (Exception dbException) { - throw new RuntimeException("Database operation failed", dbException); // 抛出新异常 + throw new RuntimeException("Database operation failed", dbException); } }).then(Mono.just(new ServiceResult(new ResultHeader(200, "delete success")))); } else { @@ -245,35 +245,34 @@ public class FastGptApplicationServiceImpl implements FastGptApplicationService }); } - public ServiceResult getApplications() { - List allApplication = fastGptApplicationMapper.getAllApplication(); - if (CollectionUtils.isEmpty(allApplication)) { - return new ServiceResult(new ResultHeader(200, "no application"), allApplication); - } - allApplication.forEach(application -> { - KnowledgeBase knowledgeBaseRecordById = fastGptDatasetMapper.getKnowledgeBaseRecordById(application.getKnowledgeBaseId()); - if (knowledgeBaseRecordById != null) { - application.setOperatorId(knowledgeBaseRecordById.getOperatorId()); - application.setOperatorName(knowledgeBaseRecordById.getOperatorName()); - application.setMaaSPlatformId(knowledgeBaseRecordById.getMaaSPlatformId()); - application.setMaaSPlatformName(knowledgeBaseRecordById.getMaaSPlatformName()); - application.setKnowledgeBaseName(knowledgeBaseRecordById.getKnowledgeBaseName()); - } - }); - return new ServiceResult(new ResultHeader(200, "success"), allApplication); - } + @Override + public Mono 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()); - public ServiceResult getApplicationById(String applicationId) { - Application application = fastGptApplicationMapper.getApplicationById(applicationId); - if (application == null) { - return new ServiceResult(new ResultHeader(200, "no application"), application); - } - KnowledgeBase knowledgeBaseRecordById = fastGptDatasetMapper.getKnowledgeBaseRecordById(application.getKnowledgeBaseId()); - application.setOperatorId(knowledgeBaseRecordById.getOperatorId()); - application.setOperatorName(knowledgeBaseRecordById.getOperatorName()); - application.setMaaSPlatformId(knowledgeBaseRecordById.getMaaSPlatformId()); - application.setMaaSPlatformName(knowledgeBaseRecordById.getMaaSPlatformName()); - application.setKnowledgeBaseName(knowledgeBaseRecordById.getKnowledgeBaseName()); - return new ServiceResult(new ResultHeader(200, "success"), application); + 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"))); + }); } + } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptDatasetServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptDatasetServiceImpl.java index 0cc1528..df8787d 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptDatasetServiceImpl.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/FastGptDatasetServiceImpl.java @@ -7,11 +7,13 @@ 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.fastgpt.CreateCollectionParam; -import org.onap.usecaseui.llmadaptation.bean.fastgpt.CreateDataSetParam; -import org.onap.usecaseui.llmadaptation.bean.fastgpt.CreateDataSetResponse; +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.mapper.FastGptDatasetMapper; +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 org.springframework.beans.factory.annotation.Autowired; @@ -21,13 +23,11 @@ import org.springframework.http.MediaType; import org.springframework.http.client.MultipartBodyBuilder; import org.springframework.http.codec.multipart.FilePart; import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; -import java.util.List; import static org.springframework.http.MediaType.APPLICATION_JSON; @@ -35,25 +35,29 @@ import static org.springframework.http.MediaType.APPLICATION_JSON; @Service public class FastGptDatasetServiceImpl implements FastGptDatasetService { @Autowired - private FastGptDatasetMapper fastGptDatasetMapper; + private DatasetMapper datasetMapper; @Autowired private WebClient webClient; + @Autowired + private ServerConstant serverConstant; + + @Override public Mono createDataset(Flux fileParts, String metaData) { KnowledgeBase knowledgeBase = JSONObject.parseObject(metaData, KnowledgeBase.class); knowledgeBase.setUpdateTime(TimeUtil.getNowTime()); CreateDataSetParam dataSetParam = new CreateDataSetParam(); - dataSetParam.setAgentModel("qwen2:7b"); + dataSetParam.setAgentModel(serverConstant.getFastGptModel()); dataSetParam.setType("dataset"); dataSetParam.setAvatar("core/dataset/commonDatasetColor"); dataSetParam.setVectorModel("m3e"); dataSetParam.setIntro(knowledgeBase.getKnowledgeBaseDescription()); dataSetParam.setName(knowledgeBase.getKnowledgeBaseName()); return webClient.post() - .uri(FastGptConstant.CREATE_DATASET_URL) + .uri(serverConstant.getFastGptServer() + FastGptConstant.CREATE_DATASET_URL) .contentType(APPLICATION_JSON) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .bodyValue(dataSetParam) .retrieve() .bodyToMono(CreateDataSetResponse.class) @@ -63,7 +67,7 @@ public class FastGptDatasetServiceImpl implements FastGptDatasetService { return fileParts.flatMap(filePart -> uploadFile(filePart, knowledgeBaseId)) .then(Mono.defer(() -> { knowledgeBase.setKnowledgeBaseId(knowledgeBaseId); - fastGptDatasetMapper.insertKnowledgeBaseRecord(knowledgeBase); + datasetMapper.insertKnowledgeBaseRecord(knowledgeBase); return Mono.just(new ServiceResult(new ResultHeader(200, "create success"))); })) .onErrorResume(e -> { @@ -99,9 +103,9 @@ public class FastGptDatasetServiceImpl implements FastGptDatasetService { }); return webClient.post() - .uri(FastGptConstant.UPLOAD_FILE_URL) + .uri(serverConstant.getFastGptServer() + FastGptConstant.UPLOAD_FILE_URL) .contentType(MediaType.MULTIPART_FORM_DATA) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .body(BodyInserters.fromMultipartData(builder.build())) .retrieve() .bodyToMono(CreateDataSetResponse.class) @@ -116,15 +120,15 @@ public class FastGptDatasetServiceImpl implements FastGptDatasetService { CreateCollectionParam createCollectionParam = getCreateCollectionParam(knowledgeBaseId, fileId); return webClient.post() - .uri(FastGptConstant.CRATE_COLLECTION_URL) + .uri(serverConstant.getFastGptServer() + FastGptConstant.CRATE_COLLECTION_URL) .contentType(APPLICATION_JSON) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .bodyValue(createCollectionParam) .retrieve() .bodyToMono(CreateDataSetResponse.class) .flatMap(responseData -> { if (responseData.getCode() == 200) { - fastGptDatasetMapper.insertFileName(fileId, filename, knowledgeBaseId); + datasetMapper.insertFileName(fileId, filename, knowledgeBaseId); } return Mono.empty(); }); @@ -144,21 +148,22 @@ public class FastGptDatasetServiceImpl implements FastGptDatasetService { return createCollectionParam; } + @Override public Mono removeDataset(String knowledgeBaseId) { - String url = FastGptConstant.DELETE_DATASET_URL + knowledgeBaseId; + String url = serverConstant.getFastGptServer() + FastGptConstant.DELETE_DATASET_URL + knowledgeBaseId; return webClient.delete() .uri(url) - .header(FastGptConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) .retrieve() .bodyToMono(CreateDataSetResponse.class) .flatMap(response -> { if (response.getCode() == 200) { return Mono.fromRunnable(() -> { try { - fastGptDatasetMapper.deleteKnowledgeBaseByUuid(knowledgeBaseId); - fastGptDatasetMapper.deleteFileById(knowledgeBaseId); + datasetMapper.deleteKnowledgeBaseByUuid(knowledgeBaseId); + datasetMapper.deleteFileById(knowledgeBaseId); } catch (Exception dbException) { - throw new RuntimeException("Database operation failed", dbException); // 抛出新异常 + throw new RuntimeException("Database operation failed", dbException); } }).then(Mono.just(new ServiceResult(new ResultHeader(200, "delete success")))); } else { @@ -171,28 +176,38 @@ public class FastGptDatasetServiceImpl implements FastGptDatasetService { }); } - public ServiceResult getDataSetRecord() { - List knowledgeBaseRecords = fastGptDatasetMapper.getKnowledgeBaseRecords(); - if (CollectionUtils.isEmpty(knowledgeBaseRecords)) { - return new ServiceResult(new ResultHeader(200, "get datasets failed"), knowledgeBaseRecords); - } - - knowledgeBaseRecords.forEach(knowledgeBase -> { - List fileNamesByKnowledgeBaseId = fastGptDatasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId()); - knowledgeBase.setFilesName(fileNamesByKnowledgeBaseId); - }); - return new ServiceResult(new ResultHeader(200, "success"), knowledgeBaseRecords); - } - - public ServiceResult geDatasetById(String knowledgeBaseId) { - KnowledgeBase knowledgeBase = fastGptDatasetMapper.getKnowledgeBaseRecordById(knowledgeBaseId); - if (knowledgeBase == null) { - return new ServiceResult(new ResultHeader(200, "get dataset failed")); + @Override + public Mono editDataset(KnowledgeBase knowledgeBase) { + KnowledgeBase knowledgeBaseRecordById = datasetMapper.getKnowledgeBaseRecordById(knowledgeBase.getKnowledgeBaseId()); + if (knowledgeBaseRecordById == null) { + return Mono.just(new ServiceResult(new ResultHeader(500, "dataset is not exist"))); } - List fileNamesByKnowledgeBaseId = fastGptDatasetMapper.getFileNamesByKnowledgeBaseId(knowledgeBase.getKnowledgeBaseId()); - knowledgeBase.setFilesName(fileNamesByKnowledgeBaseId); - - return new ServiceResult(new ResultHeader(200, "success"), knowledgeBase); + JSONObject updateParam = new JSONObject(); + updateParam.put("id", knowledgeBase.getKnowledgeBaseId()); + updateParam.put("name", knowledgeBase.getKnowledgeBaseName()); + updateParam.put("intro", knowledgeBase.getKnowledgeBaseDescription()); + updateParam.put("avatar", "core/dataset/commonDatasetColor"); + + return webClient.put() + .uri(serverConstant.getFastGptServer() + FastGptConstant.UPDATE_DATASET_URL) + .contentType(APPLICATION_JSON) + .header(CommonConstant.COOKIE, FastGptConstant.COOKIE_VALUE) + .bodyValue(updateParam) + .retrieve() + .bodyToMono(CreateDataSetResponse.class) + .flatMap(response -> { + if (response.getCode() == 200) { + return Mono.fromRunnable(() -> { + knowledgeBase.setUpdateTime(TimeUtil.getNowTime()); + datasetMapper.updateKnowledgeBase(knowledgeBase); + }).then(Mono.just(new ServiceResult(new ResultHeader(200, "update 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, "update failed"))); + }); } - } diff --git a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/MaaSServiceImpl.java b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/MaaSServiceImpl.java index 10ee028..6823e1a 100644 --- a/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/MaaSServiceImpl.java +++ b/llm-adaptation/src/main/java/org/onap/usecaseui/llmadaptation/service/impl/MaaSServiceImpl.java @@ -1,21 +1,13 @@ package org.onap.usecaseui.llmadaptation.service.impl; -import com.alibaba.fastjson2.JSONObject; -import io.netty.util.internal.StringUtil; import lombok.extern.slf4j.Slf4j; -import org.onap.usecaseui.llmadaptation.bean.MaaSPlatform; -import org.onap.usecaseui.llmadaptation.bean.ModelInformation; -import org.onap.usecaseui.llmadaptation.bean.Operator; -import org.onap.usecaseui.llmadaptation.bean.fastgpt.CreateDataSetResponse; +import org.onap.usecaseui.llmadaptation.bean.*; import org.onap.usecaseui.llmadaptation.mapper.MaaSPlatformMapper; import org.onap.usecaseui.llmadaptation.service.MaaSService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; -import reactor.core.publisher.Mono; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -49,4 +41,22 @@ public class MaaSServiceImpl implements MaaSService { }); return operatorList; } + + @Override + public ServiceResult registerMaaSPlatform(MaaSPlatform maaSPlatform) { + MaaSPlatform maaSPlatformById = maaSPlatformMapper.getMaaSPlatformById(maaSPlatform.getMaaSPlatformId()); + if (maaSPlatformById != null) { + return new ServiceResult(new ResultHeader(500, maaSPlatform.getMaaSPlatformName() + "already exists")); + } + List modelList = maaSPlatform.getModelList(); + for (ModelInformation model : modelList) { + ModelInformation modelById = maaSPlatformMapper.getModelById(model.getModelId()); + if (modelById != null) { + return new ServiceResult(new ResultHeader(500, model.getModelName() + " already exists")); + } + } + maaSPlatformMapper.insertMaaSPlatform(maaSPlatform); + maaSPlatformMapper.insertModel(maaSPlatform.getMaaSPlatformId(), maaSPlatform.getModelList()); + return new ServiceResult(new ResultHeader(200, "register success")); + } } diff --git a/llm-adaptation/src/main/resources/application.yaml b/llm-adaptation/src/main/resources/application.yaml index 1b19cc1..ec234d9 100644 --- a/llm-adaptation/src/main/resources/application.yaml +++ b/llm-adaptation/src/main/resources/application.yaml @@ -1,6 +1,13 @@ 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 @@ -20,5 +27,4 @@ mybatis: logging: level: - org.springframework.web: DEBUG - com.yourpackage: TRACE \ No newline at end of file + org.springframework.web: DEBUG \ No newline at end of file diff --git a/llm-adaptation/src/main/resources/llm-adaptation-init.sql b/llm-adaptation/src/main/resources/llm-adaptation-init.sql index b8a56e4..f46a9eb 100644 --- a/llm-adaptation/src/main/resources/llm-adaptation-init.sql +++ b/llm-adaptation/src/main/resources/llm-adaptation-init.sql @@ -4,7 +4,8 @@ create table if not exists maas_platform( maas_platform_id varchar(255) primary key, maas_platform_name varchar(255), operator_id varchar(255), - operator_name varchar(255) + operator_name varchar(255), + maas_type varchar(255) ); create table if not exists model_information( diff --git a/llm-adaptation/src/main/resources/mapper/ApplicationMapper.xml b/llm-adaptation/src/main/resources/mapper/ApplicationMapper.xml new file mode 100644 index 0000000..ce0fcc4 --- /dev/null +++ b/llm-adaptation/src/main/resources/mapper/ApplicationMapper.xml @@ -0,0 +1,75 @@ + + + + + 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.knowledgeBaseId}, + #{application.largeModelId}, + #{application.largeModelName}, + #{application.prompt}, + #{application.temperature}, + #{application.top_p}, + #{application.openingRemarks}) + + + delete from application where application_id = #{applicationId} + + + + + + + + update application + + application_name = #{application.applicationName}, + application_description = #{application.applicationDescription}, + + where application_id = #{application.applicationId} + + \ No newline at end of file diff --git a/llm-adaptation/src/main/resources/mapper/DatasetMapper.xml b/llm-adaptation/src/main/resources/mapper/DatasetMapper.xml new file mode 100644 index 0000000..d6a89cd --- /dev/null +++ b/llm-adaptation/src/main/resources/mapper/DatasetMapper.xml @@ -0,0 +1,77 @@ + + + + + insert into knowledge_base(knowledge_base_id, + knowledge_base_name, + knowledge_base_description, + operator_id, + operator_name, + maas_platform_id, + maas_platform_name, + update_time) + values (#{knowledgeBase.knowledgeBaseId}, + #{knowledgeBase.knowledgeBaseName}, + #{knowledgeBase.knowledgeBaseDescription}, + #{knowledgeBase.operatorId}, + #{knowledgeBase.operatorName}, + #{knowledgeBase.maaSPlatformId}, + #{knowledgeBase.maaSPlatformName}, + to_timestamp(#{knowledgeBase.updateTime},'yyyy-MM-dd HH24:mi:ss')) + + + insert into file(file_id,file_name,knowledge_base_id) + values (#{fileId},#{fileName},#{knowledgeBaseId}) + + + + + + + + delete from knowledge_base where knowledge_base_id = #{knowledgeBaseId} + + + delete from file where knowledge_base_id = #{knowledgeBaseId} + + + + update knowledge_base + + knowledge_base_description = #{knowledgeBase.knowledgeBaseDescription}, + knowledge_base_name = #{knowledgeBase.knowledgeBaseName}, + update_time = to_timestamp(#{knowledgeBase.updateTime},'yyyy-MM-dd HH24:mi:ss'), + + where knowledge_base_id = #{knowledgeBase.knowledgeBaseId} + + \ No newline at end of file diff --git a/llm-adaptation/src/main/resources/mapper/FastGptApplicationMapper.xml b/llm-adaptation/src/main/resources/mapper/FastGptApplicationMapper.xml deleted file mode 100644 index 31ed447..0000000 --- a/llm-adaptation/src/main/resources/mapper/FastGptApplicationMapper.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - - - 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.knowledgeBaseId}, - #{application.largeModelId}, - #{application.largeModelName}, - #{application.prompt}, - #{application.temperature}, - #{application.top_p}, - #{application.openingRemarks}) - - - delete from application where application_id = #{applicationId} - - - - - - \ No newline at end of file diff --git a/llm-adaptation/src/main/resources/mapper/FastGptDatasetMapper.xml b/llm-adaptation/src/main/resources/mapper/FastGptDatasetMapper.xml deleted file mode 100644 index 836ced9..0000000 --- a/llm-adaptation/src/main/resources/mapper/FastGptDatasetMapper.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - insert into knowledge_base(knowledge_base_id, - knowledge_base_name, - knowledge_base_description, - operator_id, - operator_name, - maas_platform_id, - maas_platform_name, - update_time) - values (#{knowledgeBase.knowledgeBaseId}, - #{knowledgeBase.knowledgeBaseName}, - #{knowledgeBase.knowledgeBaseDescription}, - #{knowledgeBase.operatorId}, - #{knowledgeBase.operatorName}, - #{knowledgeBase.maaSPlatformId}, - #{knowledgeBase.maaSPlatformName}, - to_timestamp(#{knowledgeBase.updateTime},'yyyy-MM-dd HH24:mi:ss')) - - - insert into file(file_id,file_name,knowledge_base_id) - values (#{fileId},#{fileName},#{knowledgeBaseId}) - - - - - - - - delete from knowledge_base where knowledge_base_id = #{knowledgeBaseId} - - - delete from file where knowledge_base_id = #{knowledgeBaseId} - - - \ No newline at end of file diff --git a/llm-adaptation/src/main/resources/mapper/MaaSPlatformMapper.xml b/llm-adaptation/src/main/resources/mapper/MaaSPlatformMapper.xml index b8d8354..69ce9e6 100644 --- a/llm-adaptation/src/main/resources/mapper/MaaSPlatformMapper.xml +++ b/llm-adaptation/src/main/resources/mapper/MaaSPlatformMapper.xml @@ -4,26 +4,28 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into maas_platform(maas_platform_id,maas_platform_name,operator_id,operator_name) + insert into maas_platform(maas_platform_id,maas_platform_name,operator_id,operator_name,maas_type) values (#{maaSPlatform.maaSPlatformId}, #{maaSPlatform.maaSPlatformName}, #{maaSPlatform.operatorId}, - #{maaSPlatform.operatorName}) + #{maaSPlatform.operatorName}, + #{maaSPlatform.maaSType}) insert into model_information(model_id,model_name,maas_platform_id) values (#{item.modelId}, - #{item.modelName}, - #{maaSPlatformId}) + #{item.modelName}, + #{maaSPlatformId}) + + \ No newline at end of file -- cgit