From 57e17e0dda8eaf3b32a684d5401244da9f378e17 Mon Sep 17 00:00:00 2001
From: ageerle <32251822+ageerle@users.noreply.github.com>
Date: 星期二, 08 四月 2025 09:12:50 +0800
Subject: [PATCH] Merge pull request #58 from winkeylucky/winkey-0407-02

---
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java                     |   10 +++++
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java                |   11 +++++
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java                |   10 +++++
 ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java                            |    1 
 ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/domain/request/ChatRequest.java |   10 +++++
 ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java         |   21 ++++++----
 script/sql/update/updatdata20250407-2.sql                                                          |   14 +++++++
 7 files changed, 68 insertions(+), 9 deletions(-)

diff --git a/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java b/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
index 1b5b2fa..e399e88 100644
--- a/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
+++ b/ruoyi-admin/src/main/java/org/ruoyi/controller/KnowledgeController.java
@@ -78,7 +78,6 @@
             sb.append("\n####").append(prompt);
         }
         sb.append( (nearestList.size() > 0 ? "\n\n娉ㄦ剰锛氬洖绛旈棶棰樻椂锛岄』涓ユ牸鏍规嵁鎴戠粰浣犵殑绯荤粺涓婁笅鏂囧唴瀹瑰師鏂囪繘琛屽洖绛旓紝璇蜂笉瑕佽嚜宸卞彂鎸�,鍥炵瓟鏃朵繚鎸佸師鏉ユ枃鏈殑娈佃惤灞傜骇" : ""));
-        message.setRole(Message.Role.USER.getName());
         message.setContent(sb.toString());
         return sseService.sseChat(chatRequest, request);
     }
diff --git a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/domain/request/ChatRequest.java b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/domain/request/ChatRequest.java
index 35f5269..65f76ff 100644
--- a/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/domain/request/ChatRequest.java
+++ b/ruoyi-common/ruoyi-common-chat/src/main/java/org/ruoyi/common/chat/domain/request/ChatRequest.java
@@ -40,6 +40,16 @@
     private String kid;
 
     private String userId;
+
+    /**
+     * 1 鑱旂綉鎼滅储
+     */
+    private int chat_type;
+
+    /**
+     * 搴旂敤ID
+     */
+    private String appId;
 //
 
 //
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java
index 79f2772..8734eaa 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/ChatGpts.java
@@ -97,5 +97,15 @@
      */
     private String updateIp;
 
+    /**
+     * 妯″瀷鍚嶇О
+     */
+    private String modelName;
+
+
+    /**
+     * 妯″瀷system
+     */
+    private String systemPrompt;
 
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java
index 0192093..dd08528 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/bo/ChatGptsBo.java
@@ -84,4 +84,14 @@
      */
     private String updateIp;
 
+    /**
+     * 妯″瀷鍚嶇О
+     */
+    private String modelName;
+
+    /**
+     * 妯″瀷system
+     */
+    private String systemPrompt;
+
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java
index 9d73241..b633179 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/domain/vo/ChatGptsVo.java
@@ -96,5 +96,16 @@
     @ExcelProperty(value = "鏇存柊IP")
     private String updateIp;
 
+    /**
+     * 妯″瀷鍚嶇О
+     */
+    @ExcelProperty(value = "妯″瀷鍚嶇О")
+    private String modelName;
+
+    /**
+     * 妯″瀷system
+     */
+    private String systemPrompt;
+
 
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java
index 3f35e53..7310b23 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/ruoyi/system/service/impl/SseServiceImpl.java
@@ -44,6 +44,7 @@
 import org.ruoyi.system.domain.SysModel;
 import org.ruoyi.system.domain.bo.ChatMessageBo;
 import org.ruoyi.system.domain.request.translation.TranslationRequest;
+import org.ruoyi.system.domain.vo.ChatGptsVo;
 import org.ruoyi.system.listener.SSEEventSourceListener;
 import org.ruoyi.system.service.*;
 import org.springframework.core.io.InputStreamResource;
@@ -87,6 +88,8 @@
     private final ISysModelService sysModelService;
 
     private final ConfigService configService;
+
+    private final IChatGptsService chatGptsService;
 
     static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
 
@@ -132,20 +135,22 @@
                 chatMessageBo.setContent(chatString);
 
                 String model = chatRequest.getModel();
-                // 濡傛灉鏄痝pts绯诲垪妯″瀷
-                if (chatRequest.getModel().startsWith("gpt-4-gizmo")) {
-                    model = "gpt-4-gizmo";
-                }
                 SysModel sysModel = sysModelService.selectModelByName(model);
                 if (sysModel == null) {
                     // 濡傛灉妯″瀷涓嶅瓨鍦ㄩ粯璁や娇鐢╰oken鎵h垂鏂瑰紡
                     processByToken(chatRequest.getModel(), chatString, chatMessageBo);
                 } else {
                     openAiStreamClient = chatConfig.createOpenAiStreamClient(sysModel.getApiHost(), sysModel.getApiKey());
-                    // 妯″瀷璁剧疆榛樿鎻愮ず璇�
-                    if (StringUtils.isNotEmpty(sysModel.getSystemPrompt())) {
-                        Message sysMessage = Message.builder().content(sysModel.getSystemPrompt()).role(Message.Role.SYSTEM).build();
-                        messages.add(sysMessage);
+                    if (StringUtils.isNotEmpty(chatRequest.getAppId())) { // 璁剧疆搴旂敤鐨勭郴缁熻鑹蹭负鎻忚堪
+                        ChatGptsVo chatGptsVo = chatGptsService.queryById(Long.valueOf(chatRequest.getAppId()));
+                        Message sysMessage = Message.builder().content(chatGptsVo.getSystemPrompt()).role(Message.Role.SYSTEM).build();
+                        messages.add(0,sysMessage);
+                    } else {
+                        // 妯″瀷璁剧疆榛樿鎻愮ず璇�
+                        if (StringUtils.isNotEmpty(sysModel.getSystemPrompt())) {
+                            Message sysMessage = Message.builder().content(sysModel.getSystemPrompt()).role(Message.Role.SYSTEM).build();
+                            messages.add(0,sysMessage);
+                        }
                     }
                     // 璁¤垂绫诲瀷: 1 token鎵h垂 2 娆℃暟鎵h垂
                     if ("2".equals(sysModel.getModelType())) {
diff --git a/script/sql/update/updatdata20250407-2.sql b/script/sql/update/updatdata20250407-2.sql
new file mode 100644
index 0000000..8ba9911
--- /dev/null
+++ b/script/sql/update/updatdata20250407-2.sql
@@ -0,0 +1,14 @@
+SET FOREIGN_KEY_CHECKS=0;
+
+ALTER TABLE `ruoyi-org`.`chat_gpts` ADD COLUMN `model_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '妯″瀷鍚嶇О' AFTER `tenant_id`;
+
+ALTER TABLE `ruoyi-org`.`chat_gpts` ADD COLUMN `system_prompt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '绯荤粺鎻愮ず璇�' AFTER `model_name`;
+
+INSERT INTO `ruoyi-ai`.`chat_gpts` (`id`, `gid`, `name`, `logo`, `info`, `author_id`, `author_name`, `use_cnt`, `bad`, `type`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`, `model_name`, `system_prompt`) VALUES (1810602934286237698, 'gpt-4-gizmo-g-RQAWjtI6u', '缈昏瘧鍔╂墜', 'https://external-content.duckduckgo.com/ip3/chat.openai.com.ico', '涓嫳鍜岃嫳涓炕璇戜笓瀹�', 'winkey', 'winkey', 0, 0, 'vector', 103, '2024-07-09 17:12:34', '1', '1', '2025-04-07 21:44:11', 'Ms. Smith, the AI-powered Language Teacher, is a revolutionary GPT-based bot that offers personalized language learning experiences in over 20 languages, including Spanish, German, French, English, Chinese, Korean, Japanese, and more\n', NULL, '0', '127.0.0.1', 0, 'deepseek-r1:1.5b', '浣犳槸涓�浣嶇簿閫氬悇鍥借瑷�鐨勭炕璇戝ぇ甯圽r\n\r\n璇峰皢鐢ㄦ埛杈撳叆璇嶈缈昏瘧鎴愯嫳鏂囨垨涓枃\r\n\r\n==绀轰緥杈撳嚭==\r\n**鍘熸枃** : <杩欓噷鏄剧ず瑕佺炕璇戠殑鍘熸枃淇℃伅>\r\n**缈昏瘧** : <杩欓噷鏄剧ず缈昏瘧鎴愯嫳璇殑缁撴灉>\r\n==绀轰緥缁撴潫==\r\n\r\n娉ㄦ剰锛氳涓ユ牸鎸夌ず渚嬭繘琛岃緭鍑猴紝杩斿洖markdown鏍煎紡');
+INSERT INTO `ruoyi-ai`.`chat_gpts` (`id`, `gid`, `name`, `logo`, `info`, `author_id`, `author_name`, `use_cnt`, `bad`, `type`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`, `model_name`, `system_prompt`) VALUES (1811668415990931458, 'gpt-4-gizmo-g-XbReEL4Uq', '娓呭寳鍏ㄧ鍖荤敓', 'https://external-content.duckduckgo.com/ip3/chat.openai.com.ico', '瀵屾湁鍚屾儏蹇冪殑鍏ㄧ鍖荤敓鎻愪緵鍋ュ悍鎸囧', NULL, NULL, 0, 0, NULL, 103, '2024-07-12 15:46:24', '1', '1', '2024-07-12 15:46:24', NULL, NULL, '0', NULL, 0, 'deepseek-r1:1.5b', '瀵屾湁鍚屾儏蹇冪殑鍏ㄧ鍖荤敓鎻愪緵鍋ュ悍鎸囧');
+INSERT INTO `ruoyi-ai`.`chat_gpts` (`id`, `gid`, `name`, `logo`, `info`, `author_id`, `author_name`, `use_cnt`, `bad`, `type`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`, `model_name`, `system_prompt`) VALUES (1811670922074988545, 'gpt-4-gizmo-g-AphhNRLxt', '鎻愮ず璇嶄紭鍖�', 'https://external-content.duckduckgo.com/ip3/chat.openai.com.ico', '鎿呴暱涓篜rompt 鎻愬崌娓呮櫚搴﹀拰鍒涢�犲姏鐨勫ぇ甯�', NULL, NULL, 0, 0, NULL, 103, '2024-07-12 15:56:22', '1', '1', '2024-07-12 15:56:22', NULL, NULL, '0', NULL, 0, 'deepseek-r1:1.5b', '鎿呴暱涓篜rompt 鎻愬崌娓呮櫚搴﹀拰鍒涢�犲姏鐨勫ぇ甯�');
+INSERT INTO `ruoyi-ai`.`chat_gpts` (`id`, `gid`, `name`, `logo`, `info`, `author_id`, `author_name`, `use_cnt`, `bad`, `type`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`, `model_name`, `system_prompt`) VALUES (1811815442062188545, 'gpt-4-gizmo-g-ThuHxKi7e', '灏忕孩涔︽枃妗堢敓鎴愬櫒', 'https://external-content.duckduckgo.com/ip3/chat.openai.com.ico', '灏忕孩涔︽枃妗堢敓鎴愬櫒', NULL, NULL, 0, 0, NULL, 103, '2024-07-13 01:30:38', '1', '1', '2024-07-13 01:30:38', NULL, NULL, '0', NULL, 0, 'deepseek-r1:1.5b', '灏忕孩涔︽枃妗堢敓鎴愬櫒');
+INSERT INTO `ruoyi-ai`.`chat_gpts` (`id`, `gid`, `name`, `logo`, `info`, `author_id`, `author_name`, `use_cnt`, `bad`, `type`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`, `model_name`, `system_prompt`) VALUES (1811817605668741121, 'gpt-4-gizmo-g-AsQCd3k8', '涓浗娉曞緥鍔╂墜', 'https://external-content.duckduckgo.com/ip3/chat.openai.com.ico', '鍏ㄩ潰鎺屾彙涓浗娉曞緥鐨勬櫤鑳藉姪鎵嬶紝鍙府鍔╄捣鑽夋枃涔︼紝鍒嗘瀽妗堜欢锛岃繘琛屾硶寰嬪挩璇�', NULL, NULL, 0, 0, NULL, 103, '2024-07-13 01:39:14', '1', '1', '2024-07-13 01:39:14', NULL, NULL, '2', NULL, 0, 'deepseek-r1:1.5b', '鍏ㄩ潰鎺屾彙涓浗娉曞緥鐨勬櫤鑳藉姪鎵嬶紝鍙府鍔╄捣鑽夋枃涔︼紝鍒嗘瀽妗堜欢锛岃繘琛屾硶寰嬪挩璇�');
+INSERT INTO `ruoyi-ai`.`chat_gpts` (`id`, `gid`, `name`, `logo`, `info`, `author_id`, `author_name`, `use_cnt`, `bad`, `type`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`, `model_name`, `system_prompt`) VALUES (1811817605668741122, 'gpt-4-gizmo-g-IXwub6dJu', '鑻辫鑰佸笀', 'https://external-content.duckduckgo.com/ip3/chat.openai.com.ico', '鑻辫瀛︿範GPT鏄竴涓笓闂ㄨ璁℃潵甯姪鐢ㄦ埛鎻愰珮浠栦滑鐨勮嫳璇妧鑳界殑浜哄伐鏅鸿兘鍔╂墜', NULL, NULL, 0, 0, NULL, NULL, NULL, '', '', NULL, NULL, NULL, '0', NULL, 0, 'deepseek-r1:1.5b', '鑻辫瀛︿範GPT鏄竴涓笓闂ㄨ璁℃潵甯姪鐢ㄦ埛鎻愰珮浠栦滑鐨勮嫳璇妧鑳界殑浜哄伐鏅鸿兘鍔╂墜');
+
+SET FOREIGN_KEY_CHECKS=1;
\ No newline at end of file

--
Gitblit v1.9.3