mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 11:19:56 +00:00
feat: 添加 Grok AI、Ollama AI
This commit is contained in:
parent
f78c4a1fb0
commit
5a7f4efa91
@ -65,7 +65,7 @@ class Setting extends AbstractModel
|
|||||||
$value['claude_key'] = $value['claude_token'];
|
$value['claude_key'] = $value['claude_token'];
|
||||||
}
|
}
|
||||||
$array = [];
|
$array = [];
|
||||||
$aiList = ['openai', 'claude', 'deepseek', 'gemini', 'zhipu', 'qianwen', 'wenxin'];
|
$aiList = ['openai', 'claude', 'deepseek', 'gemini', 'grok', 'ollama', 'zhipu', 'qianwen', 'wenxin'];
|
||||||
$fieldList = ['key', 'models', 'model', 'base_url', 'agency', 'temperature', 'system', 'secret'];
|
$fieldList = ['key', 'models', 'model', 'base_url', 'agency', 'temperature', 'system', 'secret'];
|
||||||
foreach ($aiList as $aiName) {
|
foreach ($aiList as $aiName) {
|
||||||
foreach ($fieldList as $fieldName) {
|
foreach ($fieldList as $fieldName) {
|
||||||
@ -148,27 +148,6 @@ class Setting extends AbstractModel
|
|||||||
'deepseek-chat: DeepSeek V3',
|
'deepseek-chat: DeepSeek V3',
|
||||||
'deepseek-reasoner: DeepSeek R1'
|
'deepseek-reasoner: DeepSeek R1'
|
||||||
],
|
],
|
||||||
'wenxin' => [
|
|
||||||
'ernie-4.0-8k: Ernie 4.0 8K',
|
|
||||||
'ernie-4.0-8k-latest: Ernie 4.0 8K Latest',
|
|
||||||
'ernie-4.0-turbo-128k: Ernie 4.0 Turbo 128K',
|
|
||||||
'ernie-4.0-turbo-8k: Ernie 4.0 Turbo 8K',
|
|
||||||
'ernie-3.5-128k: Ernie 3.5 128K',
|
|
||||||
'ernie-3.5-8k: Ernie 3.5 8K',
|
|
||||||
'ernie-speed-128k: Ernie Speed 128K',
|
|
||||||
'ernie-speed-8k: Ernie Speed 8K',
|
|
||||||
'ernie-lite-8k: Ernie Lite 8K',
|
|
||||||
'ernie-tiny-8k: Ernie Tiny 8K'
|
|
||||||
],
|
|
||||||
'qianwen' => [
|
|
||||||
'qwen-max: QWEN Max',
|
|
||||||
'qwen-max-latest: QWEN Max Latest',
|
|
||||||
'qwen-turbo: QWEN Turbo',
|
|
||||||
'qwen-turbo-latest: QWEN Turbo Latest',
|
|
||||||
'qwen-plus: QWEN Plus',
|
|
||||||
'qwen-plus-latest: QWEN Plus Latest',
|
|
||||||
'qwen-long: QWEN Long'
|
|
||||||
],
|
|
||||||
'gemini' => [
|
'gemini' => [
|
||||||
'gemini-2.0-flash: Gemini 2.0 Flash',
|
'gemini-2.0-flash: Gemini 2.0 Flash',
|
||||||
'gemini-2.0-flash-lite-preview-02-05: Gemini 2.0 Flash-Lite Preview',
|
'gemini-2.0-flash-lite-preview-02-05: Gemini 2.0 Flash-Lite Preview',
|
||||||
@ -177,6 +156,16 @@ class Setting extends AbstractModel
|
|||||||
'gemini-1.5-pro: Gemini 1.5 Pro',
|
'gemini-1.5-pro: Gemini 1.5 Pro',
|
||||||
'gemini-1.0-pro: Gemini 1.0 Pro'
|
'gemini-1.0-pro: Gemini 1.0 Pro'
|
||||||
],
|
],
|
||||||
|
'grok' => [
|
||||||
|
'grok-2-vision-1212: Grok 2 Vision 1212',
|
||||||
|
'grok-2-vision: Grok 2 Vision',
|
||||||
|
'grok-2-vision-latest: Grok 2 Vision Latest',
|
||||||
|
'grok-2-1212: Grok 2 1212',
|
||||||
|
'grok-2: Grok 2',
|
||||||
|
'grok-2-latest: Grok 2 Latest',
|
||||||
|
'grok-vision-beta: Grok Vision Beta',
|
||||||
|
'grok-beta: Grok Beta',
|
||||||
|
],
|
||||||
'zhipu' => [
|
'zhipu' => [
|
||||||
'glm-4: GLM-4',
|
'glm-4: GLM-4',
|
||||||
'glm-4-plus: GLM-4 Plus',
|
'glm-4-plus: GLM-4 Plus',
|
||||||
@ -188,6 +177,27 @@ class Setting extends AbstractModel
|
|||||||
'glm-4v-plus: GLM-4V Plus',
|
'glm-4v-plus: GLM-4V Plus',
|
||||||
'glm-3-turbo: GLM-3 Turbo'
|
'glm-3-turbo: GLM-3 Turbo'
|
||||||
],
|
],
|
||||||
|
'qianwen' => [
|
||||||
|
'qwen-max: QWEN Max',
|
||||||
|
'qwen-max-latest: QWEN Max Latest',
|
||||||
|
'qwen-turbo: QWEN Turbo',
|
||||||
|
'qwen-turbo-latest: QWEN Turbo Latest',
|
||||||
|
'qwen-plus: QWEN Plus',
|
||||||
|
'qwen-plus-latest: QWEN Plus Latest',
|
||||||
|
'qwen-long: QWEN Long'
|
||||||
|
],
|
||||||
|
'wenxin' => [
|
||||||
|
'ernie-4.0-8k: Ernie 4.0 8K',
|
||||||
|
'ernie-4.0-8k-latest: Ernie 4.0 8K Latest',
|
||||||
|
'ernie-4.0-turbo-128k: Ernie 4.0 Turbo 128K',
|
||||||
|
'ernie-4.0-turbo-8k: Ernie 4.0 Turbo 8K',
|
||||||
|
'ernie-3.5-128k: Ernie 3.5 128K',
|
||||||
|
'ernie-3.5-8k: Ernie 3.5 8K',
|
||||||
|
'ernie-speed-128k: Ernie Speed 128K',
|
||||||
|
'ernie-speed-8k: Ernie Speed 8K',
|
||||||
|
'ernie-lite-8k: Ernie Lite 8K',
|
||||||
|
'ernie-tiny-8k: Ernie Tiny 8K'
|
||||||
|
],
|
||||||
default => [],
|
default => [],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -597,6 +597,10 @@ class User extends AbstractModel
|
|||||||
return url("images/avatar/default_deepseek.png");
|
return url("images/avatar/default_deepseek.png");
|
||||||
case 'ai-gemini@bot.system':
|
case 'ai-gemini@bot.system':
|
||||||
return url("images/avatar/default_gemini.png");
|
return url("images/avatar/default_gemini.png");
|
||||||
|
case 'ai-grok@bot.system':
|
||||||
|
return url("images/avatar/default_grok.png");
|
||||||
|
case 'ai-ollama@bot.system':
|
||||||
|
return url("images/avatar/default_ollama.png");
|
||||||
case 'ai-zhipu@bot.system':
|
case 'ai-zhipu@bot.system':
|
||||||
return url("images/avatar/default_zhipu.png");
|
return url("images/avatar/default_zhipu.png");
|
||||||
case 'bot-manager@bot.system':
|
case 'bot-manager@bot.system':
|
||||||
|
|||||||
@ -84,10 +84,12 @@ class UserBot extends AbstractModel
|
|||||||
'ai-openai' => 'ChatGPT',
|
'ai-openai' => 'ChatGPT',
|
||||||
'ai-claude' => 'Claude',
|
'ai-claude' => 'Claude',
|
||||||
'ai-deepseek' => 'DeepSeek',
|
'ai-deepseek' => 'DeepSeek',
|
||||||
'ai-wenxin' => '文心一言',
|
|
||||||
'ai-qianwen' => '通义千问',
|
|
||||||
'ai-gemini' => 'Gemini',
|
'ai-gemini' => 'Gemini',
|
||||||
|
'ai-grok' => 'Grok',
|
||||||
|
'ai-ollama' => 'Ollama',
|
||||||
'ai-zhipu' => '智谱清言',
|
'ai-zhipu' => '智谱清言',
|
||||||
|
'ai-qianwen' => '通义千问',
|
||||||
|
'ai-wenxin' => '文心一言',
|
||||||
'bot-manager' => '机器人管理',
|
'bot-manager' => '机器人管理',
|
||||||
'meeting-alert' => '会议通知',
|
'meeting-alert' => '会议通知',
|
||||||
'okr-alert' => 'OKR提醒',
|
'okr-alert' => 'OKR提醒',
|
||||||
|
|||||||
@ -47,7 +47,7 @@
|
|||||||
</DrawerOverlay>
|
</DrawerOverlay>
|
||||||
|
|
||||||
<!--AI 机器人-->
|
<!--AI 机器人-->
|
||||||
<DrawerOverlay v-model="aibotShow" placement="right" :size="800">
|
<DrawerOverlay v-model="aibotShow" placement="right" :size="950">
|
||||||
<div class="ivu-modal-wrap-apply">
|
<div class="ivu-modal-wrap-apply">
|
||||||
<div class="ivu-modal-wrap-apply-title">
|
<div class="ivu-modal-wrap-apply-title">
|
||||||
{{ $L('AI 机器人') }}
|
{{ $L('AI 机器人') }}
|
||||||
@ -88,21 +88,31 @@
|
|||||||
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'gemini'" />
|
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'gemini'" />
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
|
<TabPane label="Grok" name="grok">
|
||||||
|
<div class="aibot-warp">
|
||||||
|
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'grok'" />
|
||||||
|
</div>
|
||||||
|
</TabPane>
|
||||||
|
<TabPane label="Ollama" name="ollama">
|
||||||
|
<div class="aibot-warp">
|
||||||
|
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'ollama'" />
|
||||||
|
</div>
|
||||||
|
</TabPane>
|
||||||
<TabPane :label="$L('智谱清言')" name="zhipu">
|
<TabPane :label="$L('智谱清言')" name="zhipu">
|
||||||
<div class="aibot-warp">
|
<div class="aibot-warp">
|
||||||
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'zhipu'" />
|
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'zhipu'" />
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
<TabPane :label="$L('文心一言')" name="wenxin">
|
|
||||||
<div class="aibot-warp">
|
|
||||||
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'wenxin'" />
|
|
||||||
</div>
|
|
||||||
</TabPane>
|
|
||||||
<TabPane :label="$L('通义千问')" name="qianwen">
|
<TabPane :label="$L('通义千问')" name="qianwen">
|
||||||
<div class="aibot-warp">
|
<div class="aibot-warp">
|
||||||
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'qianwen'" />
|
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'qianwen'" />
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
|
<TabPane :label="$L('文心一言')" name="wenxin">
|
||||||
|
<div class="aibot-warp">
|
||||||
|
<SystemAibot :type="aibotTabAction" v-if="aibotTabAction == 'wenxin'" />
|
||||||
|
</div>
|
||||||
|
</TabPane>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -279,24 +289,36 @@ export default {
|
|||||||
src: $A.mainUrl('images/avatar/default_gemini.png'),
|
src: $A.mainUrl('images/avatar/default_gemini.png'),
|
||||||
desc: `${this.$L('我是由Google开发的生成式人工智能聊天机器人。')}${this.$L('它基于同名的Gemini系列大型语言模型。')}${this.$L('是应对OpenAI公司开发的ChatGPT聊天机器人的崛起而开发的。')}`
|
desc: `${this.$L('我是由Google开发的生成式人工智能聊天机器人。')}${this.$L('它基于同名的Gemini系列大型语言模型。')}${this.$L('是应对OpenAI公司开发的ChatGPT聊天机器人的崛起而开发的。')}`
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: "grok",
|
||||||
|
label: "Grok",
|
||||||
|
src: $A.mainUrl('images/avatar/default_grok.png'),
|
||||||
|
desc: this.$L('Grok是由xAI开发的生成式人工智能聊天机器人,旨在通过实时回答用户问题来提供帮助。')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: "ollama",
|
||||||
|
label: "Ollama",
|
||||||
|
src: $A.mainUrl('images/avatar/default_ollama.png'),
|
||||||
|
desc: this.$L('Ollama 是一个轻量级、可扩展的框架,旨在让用户能够在本地机器上构建和运行大型语言模型。')
|
||||||
|
},
|
||||||
{
|
{
|
||||||
value: "zhipu",
|
value: "zhipu",
|
||||||
label: "Zhipu",
|
label: "Zhipu",
|
||||||
src: $A.mainUrl('images/avatar/default_zhipu.png'),
|
src: $A.mainUrl('images/avatar/default_zhipu.png'),
|
||||||
desc: `${this.$L('我是智谱清言,是智谱 AI 公司于2023训练的语言模型。')}${this.$L('我的任务是针对用户的问题和要求提供适当的答复和支持。')}`
|
desc: `${this.$L('我是智谱清言,是智谱 AI 公司于2023训练的语言模型。')}${this.$L('我的任务是针对用户的问题和要求提供适当的答复和支持。')}`
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: "wenxin",
|
|
||||||
label: "Wenxin",
|
|
||||||
src: $A.mainUrl('avatar/%E6%96%87%E5%BF%83.png'),
|
|
||||||
desc: this.$L('我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
value: "qianwen",
|
value: "qianwen",
|
||||||
label: "Qianwen",
|
label: "Qianwen",
|
||||||
src: $A.mainUrl('avatar/%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE.png'),
|
src: $A.mainUrl('avatar/%E9%80%9A%E4%B9%89%E5%8D%83%E9%97%AE.png'),
|
||||||
desc: this.$L('我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。')
|
desc: this.$L('我是达摩院自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。')
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: "wenxin",
|
||||||
|
label: "Wenxin",
|
||||||
|
src: $A.mainUrl('avatar/%E6%96%87%E5%BF%83.png'),
|
||||||
|
desc: this.$L('我是文心一言,英文名是ERNIE Bot。我能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。')
|
||||||
|
},
|
||||||
],
|
],
|
||||||
aibotTabAction: "openai",
|
aibotTabAction: "openai",
|
||||||
aibotShow: false,
|
aibotShow: false,
|
||||||
|
|||||||
@ -175,6 +175,32 @@ export default {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
grok: {
|
||||||
|
extraFields: [
|
||||||
|
{
|
||||||
|
prop: "key",
|
||||||
|
placeholder: "Grok API Key",
|
||||||
|
link: "https://docs.x.ai/docs/tutorial"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "models",
|
||||||
|
link: "https://docs.x.ai/docs/models"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
ollama: {
|
||||||
|
extraFields: [
|
||||||
|
{
|
||||||
|
prop: "key",
|
||||||
|
placeholder: "Ollama API Key",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: "models",
|
||||||
|
link: "https://ollama.com/models",
|
||||||
|
functions: null,
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
zhipu: {
|
zhipu: {
|
||||||
extraFields: [
|
extraFields: [
|
||||||
{
|
{
|
||||||
@ -341,6 +367,7 @@ export default {
|
|||||||
spinner: 600,
|
spinner: 600,
|
||||||
}).then(({data}) => {
|
}).then(({data}) => {
|
||||||
this.formData[prop] = data.models.join('\n');
|
this.formData[prop] = data.models.join('\n');
|
||||||
|
$A.messageSuccess('获取成功');
|
||||||
}).catch(({msg}) => {
|
}).catch(({msg}) => {
|
||||||
$A.modalError(msg || '获取失败');
|
$A.modalError(msg || '获取失败');
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user