diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index bd4581a40..a002a8c31 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -284,6 +284,8 @@ class SystemController extends AbstractController 'gemini_key', 'gemini_model', 'gemini_agency', + 'zhipu_key', + 'zhipu_model', ]; if ($type == 'save') { @@ -329,12 +331,19 @@ class SystemController extends AbstractController WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => "设置成功"], $botUser->userid, true, false, true); } } + if ($backup['zhipu_key'] != $setting['zhipu_key']) { + $botUser = User::botGetOrCreate('ai-zhipu'); + if ($botUser && $dialog = WebSocketDialog::checkUserDialog($botUser, $user->userid)) { + WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => "设置成功"], $botUser->userid, true, false, true); + } + } } // $setting['openai_model'] = $setting['openai_model'] ?: 'gpt-3.5-turbo'; $setting['wenxin_model'] = $setting['wenxin_model'] ?: 'eb-instant'; $setting['qianwen_model'] = $setting['qianwen_model'] ?: 'qwen-v1'; $setting['gemini_model'] = $setting['gemini_model'] ?: 'gemini-1.0-pro'; + $setting['zhipu_model'] = $setting['zhipu_model'] ?: 'glm-4'; if (env("SYSTEM_SETTING") == 'disabled') { foreach ($keys as $item) { if (strlen($setting[$item]) > 12) { diff --git a/app/Models/User.php b/app/Models/User.php index 7f3fbc978..d6f49158b 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -577,6 +577,8 @@ class User extends AbstractModel return url("images/avatar/default_claude.png"); case 'ai-gemini@bot.system': return url("images/avatar/default_gemini.png"); + case 'ai-zhipu@bot.system': + return url("images/avatar/default_zhipu.png"); case 'bot-manager@bot.system': return url("images/avatar/default_bot.png"); case 'meeting-alert@bot.system': diff --git a/app/Models/UserBot.php b/app/Models/UserBot.php index d082ffdc1..b311acd5e 100644 --- a/app/Models/UserBot.php +++ b/app/Models/UserBot.php @@ -65,6 +65,7 @@ class UserBot extends AbstractModel 'ai-wenxin' => '文心一言', 'ai-qianwen' => '通义千问', 'ai-gemini' => 'Gemini', + 'ai-zhipu' => '智谱清言', 'bot-manager' => '机器人管理', 'meeting-alert' => '会议通知', 'okr-alert' => 'OKR提醒', @@ -126,6 +127,7 @@ class UserBot extends AbstractModel 'ai-claude@bot.system', 'ai-wenxin@bot.system', 'ai-gemini@bot.system', + 'ai-zhipu@bot.system', 'ai-qianwen@bot.system' => [ [ 'key' => '%3A.clear', diff --git a/app/Tasks/BotReceiveMsgTask.php b/app/Tasks/BotReceiveMsgTask.php index e48bc3a94..5fb63ba37 100644 --- a/app/Tasks/BotReceiveMsgTask.php +++ b/app/Tasks/BotReceiveMsgTask.php @@ -456,6 +456,22 @@ class BotReceiveMsgTask extends AbstractTask $error = 'The client version is low (required version ≥ v0.29.12).'; } break; + // 智谱清言 机器人 + case 'ai-zhipu@bot.system': + $setting = Base::setting('aibotSetting'); + $webhookUrl = "{$serverUrl}/ai/zhipu/send"; + $extras = [ + 'zhipu_key' => $setting['zhipu_key'], + 'zhipu_model' => $setting['zhipu_model'], + 'server_url' => $serverUrl, + ]; + if (empty($extras['zhipu_key'])) { + $error = 'Robot disabled.'; + } elseif (in_array($this->client['platform'], ['win', 'mac', 'web']) + && !Base::judgeClientVersion("0.29.11", $this->client['version'])) { + $error = 'The client version is low (required version ≥ v0.29.12).'; + } + break; // 其他机器人 default: $userBot = UserBot::whereBotId($botUser->userid)->first(); diff --git a/public/images/avatar/default_zhipu.png b/public/images/avatar/default_zhipu.png new file mode 100644 index 000000000..991a3b9ab Binary files /dev/null and b/public/images/avatar/default_zhipu.png differ diff --git a/resources/assets/js/pages/manage/application.vue b/resources/assets/js/pages/manage/application.vue index 2b3649fa6..6257d28e6 100644 --- a/resources/assets/js/pages/manage/application.vue +++ b/resources/assets/js/pages/manage/application.vue @@ -47,7 +47,7 @@ - +
{{ $L('AI 机器人') }} @@ -93,6 +93,11 @@
+ +
+ +
+
@@ -275,6 +280,12 @@ export default { src: $A.mainUrl('avatar/%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE.png'), desc: this.$L('我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。') }, + { + value: "zhipu", + label: "Zhipu", + src: $A.mainUrl('images/avatar/default_zhipu.png'), + desc: `${this.$L('我是ChatGLM,是基于智谱 AI 公司于2023年训练的语言模型开发的')}${this.$L('我的任务是针对用户的问题和要求提供适当的答复和支持。')}` + }, ], aibotTabAction: "opanai", aibotShow: false, diff --git a/resources/assets/js/pages/manage/setting/components/SystemAibot.vue b/resources/assets/js/pages/manage/setting/components/SystemAibot.vue index 625abbbaf..4a78e9eb6 100644 --- a/resources/assets/js/pages/manage/setting/components/SystemAibot.vue +++ b/resources/assets/js/pages/manage/setting/components/SystemAibot.vue @@ -92,6 +92,23 @@ +
+

智谱清言

+
+ + + + + + + + +
+