feat:添加智谱清言机器人

This commit is contained in:
zzw 2024-05-15 14:22:17 +08:00
parent b86edcfa96
commit a6a18a0ee4
No known key found for this signature in database
GPG Key ID: 7EF784097403E91E
8 changed files with 58 additions and 1 deletions

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -47,7 +47,7 @@
</DrawerOverlay>
<!--AI 机器人-->
<DrawerOverlay v-model="aibotShow" placement="right" :size="600">
<DrawerOverlay v-model="aibotShow" placement="right" :size="650">
<div class="ivu-modal-wrap-apply">
<div class="ivu-modal-wrap-apply-title">
{{ $L('AI 机器人') }}
@ -93,6 +93,11 @@
<SystemAibot type="Qianwen" v-if="aibotTabAction == 'qianwen'" />
</div>
</TabPane>
<TabPane :label="$L('智谱清言')" name="zhipu">
<div class="aibot-warp">
<SystemAibot type="Zhipu" v-if="aibotTabAction == 'zhipu'" />
</div>
</TabPane>
</Tabs>
</div>
</div>
@ -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,

View File

@ -92,6 +92,23 @@
</FormItem>
</div>
</div>
<div class="block-setting-box" v-if="type=='all' || type=='Zhipu'">
<h3>智谱清言</h3>
<div class="form-box">
<FormItem label="API Key" prop="zhipu_key">
<Input :maxlength="255" v-model="formData.zhipu_key" type="password" placeholder="API Key"/>
<div class="form-tip">{{$L('获取方式')}} <a href="https://open.bigmodel.cn/usercenter/apikeys" target="_blank">https://open.bigmodel.cn/usercenter/apikeys</a></div>
</FormItem>
<FormItem :label="$L('模型')" prop="zhipu_model">
<Select v-model="formData.zhipu_model" placement="top">
<Option value="glm-4">glm-4</Option>
<Option value="glm-4v">glm-4v</Option>
<Option value="glm-3-turbo">glm-3-turbo</Option>
</Select>
<div class="form-tip">{{$L('查看说明')}} <a href="https://open.bigmodel.cn/dev/howuse/model" target="_blank">https://open.bigmodel.cn/dev/howuse/model</a></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: 17 KiB