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 @@