diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/interceptor/AuditingInterceptor.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/interceptor/AuditingInterceptor.java index 4cc536ca7..698ea82f3 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/interceptor/AuditingInterceptor.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/interceptor/AuditingInterceptor.java @@ -24,6 +24,7 @@ import org.apache.bigtop.manager.dao.annotations.CreateTime; import org.apache.bigtop.manager.dao.annotations.UpdateBy; import org.apache.bigtop.manager.dao.annotations.UpdateTime; +import org.apache.bigtop.manager.dao.po.BasePO; import org.apache.ibatis.binding.MapperMethod; import org.apache.ibatis.executor.Executor; @@ -81,7 +82,9 @@ public Object intercept(Invocation invocation) throws Throwable { } for (Object o : objects) { - setAuditFields(o, sqlCommandType); + if (o instanceof BasePO) { + setAuditFields(o, sqlCommandType); + } } return invocation.proceed(); diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatMessagePO.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatMessagePO.java index 8d3840b9a..92ee273d3 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatMessagePO.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatMessagePO.java @@ -47,5 +47,5 @@ public class ChatMessagePO extends BasePO implements Serializable { private Long threadId; @Column(name = "is_deleted") - private Integer isDeleted; + private Boolean isDeleted; } diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java index a5951d526..92e9a30e9 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/ChatThreadPO.java @@ -48,5 +48,5 @@ public class ChatThreadPO extends BasePO implements Serializable { private Long platformId; @Column(name = "is_deleted") - private Integer isDeleted; + private Boolean isDeleted; } diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java index 2f2b89146..595e1f62a 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/po/PlatformAuthorizedPO.java @@ -43,5 +43,5 @@ public class PlatformAuthorizedPO extends BasePO implements Serializable { private Long platformId; @Column(name = "is_deleted") - private Integer isDeleted; + private Boolean isDeleted; } diff --git a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java index 2a6db4af5..9d98dfa30 100644 --- a/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java +++ b/bigtop-manager-dao/src/main/java/org/apache/bigtop/manager/dao/repository/ChatThreadDao.java @@ -27,8 +27,6 @@ public interface ChatThreadDao extends BaseDao { List findAllByUserId(@Param("userId") Long userId); - ChatThreadPO findById(Long id); - ChatThreadPO findByThreadId(@Param("id") Long id); List findAllByPlatformAuthorizedIdAndUserId( @@ -36,7 +34,7 @@ List findAllByPlatformAuthorizedIdAndUserId( void saveWithThreadInfo(ChatThreadPO chatThreadPO); - void deleteByThreadId(@Param("id") Long threadId); + void deleteByThreadId(@Param("id") Long theadId); void deleteByPlatformId(@Param("platformId") Long platformId); } diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatMessageMapper.xml b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatMessageMapper.xml index d2d7bab63..c31c397dd 100644 --- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatMessageMapper.xml +++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatMessageMapper.xml @@ -29,7 +29,7 @@ AND is_deleted = 0 - + UPDATE llm_chat_message SET is_deleted = 1 WHERE thread_id = #{threadId} diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml index 6aa763c5b..7e2cbe092 100644 --- a/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml +++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/ChatThreadMapper.xml @@ -56,13 +56,13 @@ thread_info = VALUES(thread_info) - + UPDATE llm_chat_thread SET is_deleted = 1 - WHERE platformId = #{platformId} + WHERE platform_id = #{platformId} - + UPDATE llm_chat_thread SET is_deleted = 1 WHERE id = #{id} diff --git a/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml b/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml index 15f57782a..7c6887d7e 100644 --- a/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml +++ b/bigtop-manager-dao/src/main/resources/mapper/mysql/PlatformAuthorizedMapper.xml @@ -46,7 +46,7 @@ credentials = VALUES(credentials) - + UPDATE llm_platform_authorized SET is_deleted = 1 WHERE id = #{id} diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java index 777119394..c09680a4f 100644 --- a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/controller/ChatbotController.java @@ -20,6 +20,7 @@ import org.apache.bigtop.manager.server.model.converter.PlatformConverter; import org.apache.bigtop.manager.server.model.dto.PlatformDTO; +import org.apache.bigtop.manager.server.model.req.ChatbotMessageReq; import org.apache.bigtop.manager.server.model.req.PlatformReq; import org.apache.bigtop.manager.server.model.vo.ChatMessageVO; import org.apache.bigtop.manager.server.model.vo.ChatThreadVO; @@ -66,7 +67,7 @@ public ResponseEntity> authorizedPlatforms() { return ResponseEntity.success(chatbotService.authorizedPlatforms()); } - @Operation(summary = "platforms", description = "Get authorized platforms") + @Operation(summary = "platforms", description = "Get platform auth credentials") @GetMapping("/platforms/{platformId}/auth/credential") public ResponseEntity> platformsAuthCredential(@PathVariable Long platformId) { return ResponseEntity.success(chatbotService.platformsAuthCredential(platformId)); @@ -106,8 +107,9 @@ public ResponseEntity> getAllChatThreads( @Operation(summary = "talk", description = "Talk with Chatbot") @PostMapping("platforms/{platformId}/threads/{threadId}/talk") - public SseEmitter talk(@PathVariable Long platformId, @PathVariable Long threadId, @RequestParam String message) { - return chatbotService.talk(platformId, threadId, message); + public SseEmitter talk( + @PathVariable Long platformId, @PathVariable Long threadId, @RequestBody ChatbotMessageReq messageReq) { + return chatbotService.talk(platformId, threadId, messageReq.getMessage()); } @Operation(summary = "history", description = "Get chat records") diff --git a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotMessageReq.java b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotMessageReq.java new file mode 100644 index 000000000..3bcbe0cfc --- /dev/null +++ b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/model/req/ChatbotMessageReq.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.server.model.req; + +import lombok.Data; + +import jakarta.validation.constraints.NotEmpty; + +@Data +public class ChatbotMessageReq { + @NotEmpty + private String message; +} diff --git a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql index 8d3537e82..dc67ea794 100644 --- a/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql +++ b/bigtop-manager-server/src/main/resources/ddl/MySQL-DDL-CREATE.sql @@ -328,7 +328,7 @@ CREATE TABLE `llm_platform_authorized` `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `platform_id` BIGINT(20) UNSIGNED NOT NULL, `credentials` JSON NOT NULL, - `is_deleted` TINYINT DEFAULT 0, + `is_deleted` TINYINT(1) DEFAULT 0 NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_by` BIGINT DEFAULT NULL, @@ -343,7 +343,7 @@ CREATE TABLE `llm_chat_thread` `platform_id` BIGINT(20) UNSIGNED NOT NULL, `user_id` BIGINT(20) UNSIGNED NOT NULL, `model` VARCHAR(255) NOT NULL, - `is_deleted` TINYINT DEFAULT 0, + `is_deleted` TINYINT(1) DEFAULT 0 NULL, `thread_info` JSON DEFAULT NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, @@ -361,7 +361,7 @@ CREATE TABLE `llm_chat_message` `user_id` BIGINT(20) UNSIGNED NOT NULL, `message` TEXT NOT NULL, `sender` VARCHAR(50) NOT NULL, - `is_deleted` TINYINT DEFAULT 0, + `is_deleted` TINYINT(1) DEFAULT 0 NULL, `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `create_by` BIGINT DEFAULT NULL, @@ -379,5 +379,5 @@ VALUES (1, now(), now(), 'Administrator', '21232f297a57a5a743894a0e4a801fc3', tr INSERT INTO bigtop_manager.llm_platform (id, credential, name, support_models) VALUES (1, '{"apiKey": "API Key"}', 'OpenAI', 'gpt-3.5-turbo,gpt-4,gpt-4o,gpt-3.5-turbo-16k,gpt-4-turbo-preview,gpt-4-32k,gpt-4o-mini'), -(2, '{"apiKey": "API Key"}', 'DashScope', 'qwen-max,qwen-plus,qwen-turbo'), +(2, '{"apiKey": "API Key"}', 'DashScope', 'qwen-1.8b-chat,qwen-max,qwen-plus,qwen-turbo'), (3, '{"apiKey": "API Key", "secretKey": "Secret Key"}', 'QianFan','Yi-34B-Chat,ERNIE-4.0-8K,ERNIE-3.5-128K,ERNIE-Speed-8K,Llama-2-7B-Chat,Fuyu-8B'); diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java index d5f12ba84..04148917a 100644 --- a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/controller/ChatbotControllerTest.java @@ -19,6 +19,7 @@ package org.apache.bigtop.manager.server.controller; import org.apache.bigtop.manager.server.model.dto.PlatformDTO; +import org.apache.bigtop.manager.server.model.req.ChatbotMessageReq; import org.apache.bigtop.manager.server.model.req.PlatformReq; import org.apache.bigtop.manager.server.model.vo.ChatMessageVO; import org.apache.bigtop.manager.server.model.vo.ChatThreadVO; @@ -174,12 +175,14 @@ void getAllChatThreads() { void talk() { Long platformId = 1L; Long threadId = 1L; - String message = "Hello"; + ChatbotMessageReq messageReq = new ChatbotMessageReq(); + messageReq.setMessage("Hello"); SseEmitter emitter = new SseEmitter(); - when(chatbotService.talk(eq(platformId), eq(threadId), eq(message))).thenReturn(emitter); + when(chatbotService.talk(eq(platformId), eq(threadId), eq(messageReq.getMessage()))) + .thenReturn(emitter); - SseEmitter result = chatbotController.talk(platformId, threadId, message); + SseEmitter result = chatbotController.talk(platformId, threadId, messageReq); assertEquals(emitter, result); }