Merge commit 'e3ce3bcfbe1d251c791fddbf2627b35669bdd2df' into pro

This commit is contained in:
kuaifan 2024-02-28 15:15:59 +08:00
commit 236b57864b
8 changed files with 63 additions and 3 deletions

View File

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

View File

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

View File

@ -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();

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -88,6 +88,11 @@
<SystemAibot type="Qianwen" v-if="aibotTabAction == 'qianwen'" />
</div>
</TabPane>
<TabPane label="Gemini" name="gemini">
<div class="aibot-warp">
<SystemAibot type="Gemini" v-if="aibotTabAction == 'gemini'" />
</div>
</TabPane>
</Tabs>
</div>
</div>
@ -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,

View File

@ -73,6 +73,26 @@
</FormItem>
</div>
</div>
<div class="block-setting-box" v-if="type=='all' || type=='Gemini'">
<h3>Gemini</h3>
<div class="form-box">
<FormItem label="API Key" prop="gemini_key">
<Input :maxlength="255" v-model="formData.gemini_key" type="password" placeholder="API Key"/>
<div class="form-tip">{{$L('获取方式')}} <a href="https://ai.google.dev/tutorials/setup?hl=zh-cn" target="_blank">https://ai.google.dev/tutorials/setup?hl=zh-cn</a></div>
</FormItem>
<FormItem :label="$L('模型')" prop="gemini_model">
<Select v-model="formData.gemini_model" placement="top">
<Option value="gemini-1.0-pro">gemini-1.0-pro</Option>
<!-- <Option value="gemini-pro-vision">gemini-pro-vision</Option> -->
</Select>
<div class="form-tip">{{$L('查看说明')}} <a href="https://ai.google.dev/models?hl=zh-cn" target="_blank">https://ai.google.dev/models?hl=zh-cn</a></div>
</FormItem>
<FormItem :label="$L('使用代理')" prop="gemini_agency">
<Input :maxlength="500" v-model="formData.gemini_agency" :placeholder="$L('支持 http 或 socks 代理')"/>
<div class="form-tip">{{$L('例如http://proxy.com 或 socks5://proxy.com')}}</div>
</FormItem>
</div>
</div>
</Form>
<div class="setting-footer">
<Button :loading="loadIng > 0" type="primary" @click="submitForm">{{ $L('提交') }}</Button>

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB