diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index 874f127aa..2e2033b20 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -271,7 +271,10 @@ class SystemController extends AbstractController 'wenxin_secret', 'wenxin_model', 'qianwen_key', - 'qianwen_model' + 'qianwen_model', + 'gemini_key', + 'gemini_model', + 'gemini_agency', ]; if ($type == 'save') { @@ -311,11 +314,18 @@ class SystemController extends AbstractController WebSocketDialogMsg::sendMsg(null, $dialog->id, 'text', ['text' => "设置成功"], $botUser->userid, true, false, true); } } + if ($backup['gemini_key'] != $setting['gemini_key']) { + $botUser = User::botGetOrCreate('ai-gemini'); + 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'; if (env("SYSTEM_SETTING") == 'disabled') { foreach ($keys as $item) { if (strlen($setting[$item]) > 12) { diff --git a/app/Models/UserBot.php b/app/Models/UserBot.php index c28d297b8..bd6a560a1 100644 --- a/app/Models/UserBot.php +++ b/app/Models/UserBot.php @@ -57,6 +57,7 @@ class UserBot extends AbstractModel 'ai-claude' => 'Claude', 'ai-wenxin' => '文心一言', 'ai-qianwen' => '通义千问', + 'ai-gemini' => 'Gemini', 'bot-manager' => '机器人管理', 'meeting-alert' => '会议通知', 'okr-alert' => 'OKR提醒', @@ -117,6 +118,7 @@ class UserBot extends AbstractModel 'ai-openai@bot.system', 'ai-claude@bot.system', 'ai-wenxin@bot.system', + 'ai-gemini@bot.system', 'ai-qianwen@bot.system' => [ [ 'key' => '%3A.clear', diff --git a/app/Tasks/BotReceiveMsgTask.php b/app/Tasks/BotReceiveMsgTask.php index 54d8bc426..fbc7eddde 100644 --- a/app/Tasks/BotReceiveMsgTask.php +++ b/app/Tasks/BotReceiveMsgTask.php @@ -438,6 +438,23 @@ class BotReceiveMsgTask extends AbstractTask $error = 'The client version is low (required version ≥ v0.29.12).'; } break; + // Gemini 机器人 + case 'ai-gemini@bot.system': + $setting = Base::setting('aibotSetting'); + $webhookUrl = "{$serverUrl}/ai/gemini/send"; + $extras = [ + 'gemini_key' => $setting['gemini_key'], + 'gemini_model' => $setting['gemini_model'], + 'gemini_agency' => $setting['gemini_agency'], + 'server_url' => $serverUrl, + ]; + if (empty($extras['gemini_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/docker-compose.yml b/docker-compose.yml index 62299c412..a36c89335 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -170,7 +170,7 @@ services: ai: container_name: "dootask-ai-${APP_ID}" - image: "kuaifan/dooai:0.1.2" + image: "kuaifan/dooai:0.1.4" networks: extnetwork: ipv4_address: "${APP_IPPR}.12" diff --git a/public/images/avatar/default_gemini.png b/public/images/avatar/default_gemini.png new file mode 100644 index 000000000..04000dba2 Binary files /dev/null and b/public/images/avatar/default_gemini.png differ diff --git a/resources/assets/js/pages/manage/application.vue b/resources/assets/js/pages/manage/application.vue index 8a493e89d..8066b6541 100644 --- a/resources/assets/js/pages/manage/application.vue +++ b/resources/assets/js/pages/manage/application.vue @@ -88,6 +88,11 @@ + +
+ +
+
@@ -255,7 +260,7 @@ export default { { value: "wenxin", label: "Wenxin", - src: $A.apiUrl('../avatar/Wenxin.png'), + src: $A.apiUrl('../avatar/%E6%96%87%E5%BF%83.png'), desc: this.$L('我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。') }, { @@ -264,6 +269,12 @@ export default { src: $A.apiUrl('../avatar/%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE.png'), desc: this.$L('我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。') }, + { + value: "gemini", + label: "Gemini", + src: $A.apiUrl('../images/avatar/default_gemini.png'), + desc: this.$L('我是一个由 Google 训练的大型语言模型,旨在帮助人们并回答他们的问题。') + }, ], 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 8be95e158..33f013763 100644 --- a/resources/assets/js/pages/manage/setting/components/SystemAibot.vue +++ b/resources/assets/js/pages/manage/setting/components/SystemAibot.vue @@ -73,6 +73,26 @@ +
+

Gemini

+
+ + + + + + + + + + +
{{$L('例如:http://proxy.com 或 socks5://proxy.com')}}
+
+
+