mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-12 19:35:50 +00:00
feat: 添加 DeepSeek AI
This commit is contained in:
parent
80313f613e
commit
d973451bdc
@ -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', 'gemini', 'zhipu', 'qianwen', 'wenxin'];
|
$aiList = ['openai', 'claude', 'deepseek', 'gemini', 'zhipu', 'qianwen', 'wenxin'];
|
||||||
$fieldList = ['key', 'model', 'base_url', 'agency', 'system', 'secret'];
|
$fieldList = ['key', 'model', 'base_url', 'agency', 'system', 'secret'];
|
||||||
foreach ($aiList as $aiName) {
|
foreach ($aiList as $aiName) {
|
||||||
foreach ($fieldList as $fieldName) {
|
foreach ($fieldList as $fieldName) {
|
||||||
@ -73,6 +73,7 @@ class Setting extends AbstractModel
|
|||||||
$array[$key] = $value[$key] ?: match ($key) {
|
$array[$key] = $value[$key] ?: match ($key) {
|
||||||
'openai_model' => 'gpt-4o-mini',
|
'openai_model' => 'gpt-4o-mini',
|
||||||
'claude_model' => 'claude-3-5-sonnet-latest',
|
'claude_model' => 'claude-3-5-sonnet-latest',
|
||||||
|
'deepseek_model' => 'deepseek-chat',
|
||||||
'gemini_model' => 'gemini-1.5-flash',
|
'gemini_model' => 'gemini-1.5-flash',
|
||||||
'zhipu_model' => 'glm-4',
|
'zhipu_model' => 'glm-4',
|
||||||
'qianwen_model' => 'qwen-turbo',
|
'qianwen_model' => 'qwen-turbo',
|
||||||
|
|||||||
@ -593,6 +593,8 @@ class User extends AbstractModel
|
|||||||
return url("images/avatar/default_openai.png");
|
return url("images/avatar/default_openai.png");
|
||||||
case 'ai-claude@bot.system':
|
case 'ai-claude@bot.system':
|
||||||
return url("images/avatar/default_claude.png");
|
return url("images/avatar/default_claude.png");
|
||||||
|
case 'ai-deepseek@bot.system':
|
||||||
|
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-zhipu@bot.system':
|
case 'ai-zhipu@bot.system':
|
||||||
|
|||||||
@ -83,6 +83,7 @@ class UserBot extends AbstractModel
|
|||||||
'approval-alert' => '审批',
|
'approval-alert' => '审批',
|
||||||
'ai-openai' => 'ChatGPT',
|
'ai-openai' => 'ChatGPT',
|
||||||
'ai-claude' => 'Claude',
|
'ai-claude' => 'Claude',
|
||||||
|
'ai-deepseek' => 'DeepSeek',
|
||||||
'ai-wenxin' => '文心一言',
|
'ai-wenxin' => '文心一言',
|
||||||
'ai-qianwen' => '通义千问',
|
'ai-qianwen' => '通义千问',
|
||||||
'ai-gemini' => 'Gemini',
|
'ai-gemini' => 'Gemini',
|
||||||
|
|||||||
@ -47,7 +47,7 @@
|
|||||||
</DrawerOverlay>
|
</DrawerOverlay>
|
||||||
|
|
||||||
<!--AI 机器人-->
|
<!--AI 机器人-->
|
||||||
<DrawerOverlay v-model="aibotShow" placement="right" :size="720">
|
<DrawerOverlay v-model="aibotShow" placement="right" :size="800">
|
||||||
<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 机器人') }}
|
||||||
@ -78,6 +78,11 @@
|
|||||||
<SystemAibot type="Claude" v-if="aibotTabAction == 'claude'" />
|
<SystemAibot type="Claude" v-if="aibotTabAction == 'claude'" />
|
||||||
</div>
|
</div>
|
||||||
</TabPane>
|
</TabPane>
|
||||||
|
<TabPane label="DeepSeek" name="deepseek">
|
||||||
|
<div class="aibot-warp">
|
||||||
|
<SystemAibot type="DeepSeek" v-if="aibotTabAction == 'deepseek'" />
|
||||||
|
</div>
|
||||||
|
</TabPane>
|
||||||
<TabPane label="Gemini" name="gemini">
|
<TabPane label="Gemini" name="gemini">
|
||||||
<div class="aibot-warp">
|
<div class="aibot-warp">
|
||||||
<SystemAibot type="Gemini" v-if="aibotTabAction == 'gemini'" />
|
<SystemAibot type="Gemini" v-if="aibotTabAction == 'gemini'" />
|
||||||
@ -262,6 +267,12 @@ export default {
|
|||||||
src: $A.mainUrl('images/avatar/default_claude.png'),
|
src: $A.mainUrl('images/avatar/default_claude.png'),
|
||||||
desc: this.$L('我是Claude,一个由Anthropic公司创造出来的AI助手机器人。我的工作是帮助人类,与人对话并给出解答。')
|
desc: this.$L('我是Claude,一个由Anthropic公司创造出来的AI助手机器人。我的工作是帮助人类,与人对话并给出解答。')
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: "deepseek",
|
||||||
|
label: "DeepSeek",
|
||||||
|
src: $A.mainUrl('images/avatar/default_deepseek.png'),
|
||||||
|
desc: this.$L('DeepSeek大语言模型算法是北京深度求索人工智能基础技术研究有限公司推出的深度合成服务算法。')
|
||||||
|
},
|
||||||
{
|
{
|
||||||
value: "gemini",
|
value: "gemini",
|
||||||
label: "Gemini",
|
label: "Gemini",
|
||||||
|
|||||||
@ -18,14 +18,16 @@
|
|||||||
type="password"
|
type="password"
|
||||||
:placeholder="$L(field.placeholder)"/>
|
:placeholder="$L(field.placeholder)"/>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="field.type === 'select'">
|
<template v-else-if="field.type === 'auto-complete'">
|
||||||
<Select v-model="formData[field.prop]" transfer>
|
<AutoComplete
|
||||||
<Option v-for="option in field.options"
|
v-model="formData[field.prop]"
|
||||||
:key="option.value"
|
:data="field.data"
|
||||||
:value="option.value">
|
:placeholder="$L(field.placeholder)"
|
||||||
{{ option.value }}
|
:filter-method="field.noFilter ? null : filterMethod"
|
||||||
</Option>
|
@on-blur="field.noFilter = true"
|
||||||
</Select>
|
@on-keyup="field.noFilter = false"
|
||||||
|
transfer>
|
||||||
|
</AutoComplete>
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="field.type === 'textarea'">
|
<template v-else-if="field.type === 'textarea'">
|
||||||
<Input
|
<Input
|
||||||
@ -90,17 +92,19 @@ export default {
|
|||||||
{
|
{
|
||||||
label: '模型',
|
label: '模型',
|
||||||
prop: 'openai_model',
|
prop: 'openai_model',
|
||||||
type: 'select',
|
type: 'auto-complete',
|
||||||
options: [
|
data: [
|
||||||
{ value: 'gpt-4' },
|
'gpt-4',
|
||||||
{ value: 'gpt-4-turbo' },
|
'gpt-4-turbo',
|
||||||
{ value: 'gpt-4o' },
|
'gpt-4o',
|
||||||
{ value: 'gpt-4o-mini' },
|
'gpt-4o-mini',
|
||||||
{ value: 'gpt-3.5-turbo' },
|
'gpt-3.5-turbo',
|
||||||
{ value: 'gpt-3.5-turbo-16k' },
|
'gpt-3.5-turbo-16k',
|
||||||
{ value: 'gpt-3.5-turbo-0125' },
|
'gpt-3.5-turbo-0125',
|
||||||
{ value: 'gpt-3.5-turbo-1106' }
|
'gpt-3.5-turbo-1106'
|
||||||
],
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
tipPrefix: '查看说明',
|
tipPrefix: '查看说明',
|
||||||
link: 'https://platform.openai.com/docs/models'
|
link: 'https://platform.openai.com/docs/models'
|
||||||
},
|
},
|
||||||
@ -138,18 +142,20 @@ export default {
|
|||||||
{
|
{
|
||||||
label: '模型',
|
label: '模型',
|
||||||
prop: 'claude_model',
|
prop: 'claude_model',
|
||||||
type: 'select',
|
type: 'auto-complete',
|
||||||
options: [
|
data: [
|
||||||
{ value: 'claude-3-5-sonnet-latest' },
|
'claude-3-5-sonnet-latest',
|
||||||
{ value: 'claude-3-5-sonnet-20241022' },
|
'claude-3-5-sonnet-20241022',
|
||||||
{ value: 'claude-3-5-haiku-latest' },
|
'claude-3-5-haiku-latest',
|
||||||
{ value: 'claude-3-5-haiku-20241022' },
|
'claude-3-5-haiku-20241022',
|
||||||
{ value: 'claude-3-opus-latest' },
|
'claude-3-opus-latest',
|
||||||
{ value: 'claude-3-opus-20240229' },
|
'claude-3-opus-20240229',
|
||||||
{ value: 'claude-3-haiku-20240307' },
|
'claude-3-haiku-20240307',
|
||||||
{ value: 'claude-2.1' },
|
'claude-2.1',
|
||||||
{ value: 'claude-2.0' }
|
'claude-2.0'
|
||||||
],
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
tipPrefix: '查看说明',
|
tipPrefix: '查看说明',
|
||||||
link: 'https://docs.anthropic.com/en/docs/about-claude/models'
|
link: 'https://docs.anthropic.com/en/docs/about-claude/models'
|
||||||
},
|
},
|
||||||
@ -168,6 +174,44 @@ export default {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
DeepSeek: {
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
label: 'API Key',
|
||||||
|
prop: 'deepseek_key',
|
||||||
|
type: 'password',
|
||||||
|
placeholder: 'DeepSeek API Key',
|
||||||
|
tipPrefix: '访问DeepSeek网站查看',
|
||||||
|
link: 'https://platform.deepseek.com/api_keys'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '模型',
|
||||||
|
prop: 'deepseek_model',
|
||||||
|
type: 'auto-complete',
|
||||||
|
data: [
|
||||||
|
'deepseek-chat',
|
||||||
|
'deepseek-reasoner'
|
||||||
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
|
tipPrefix: '查看说明',
|
||||||
|
link: 'https://api-docs.deepseek.com/zh-cn/quick_start/pricing'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '使用代理',
|
||||||
|
prop: 'deepseek_agency',
|
||||||
|
placeholder: '支持 http 或 socks 代理',
|
||||||
|
tip: '例如:http://proxy.com 或 socks5://proxy.com'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '默认提示词',
|
||||||
|
prop: 'deepseek_system',
|
||||||
|
type: 'textarea',
|
||||||
|
placeholder: '请输入默认提示词',
|
||||||
|
tip: '例如:你是一个人开发的AI助手'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
Gemini: {
|
Gemini: {
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
@ -180,13 +224,15 @@ export default {
|
|||||||
{
|
{
|
||||||
label: '模型',
|
label: '模型',
|
||||||
prop: 'gemini_model',
|
prop: 'gemini_model',
|
||||||
type: 'select',
|
type: 'auto-complete',
|
||||||
options: [
|
data: [
|
||||||
{ value: 'gemini-1.5-flash' },
|
'gemini-1.5-flash',
|
||||||
{ value: 'gemini-1.5-flash-8b' },
|
'gemini-1.5-flash-8b',
|
||||||
{ value: 'gemini-1.5-pro' },
|
'gemini-1.5-pro',
|
||||||
{ value: 'gemini-1.0-pro' },
|
'gemini-1.0-pro',
|
||||||
],
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
tipPrefix: '查看说明',
|
tipPrefix: '查看说明',
|
||||||
link: 'https://ai.google.dev/models/gemini'
|
link: 'https://ai.google.dev/models/gemini'
|
||||||
},
|
},
|
||||||
@ -217,18 +263,20 @@ export default {
|
|||||||
{
|
{
|
||||||
label: '模型',
|
label: '模型',
|
||||||
prop: 'zhipu_model',
|
prop: 'zhipu_model',
|
||||||
type: 'select',
|
type: 'auto-complete',
|
||||||
options: [
|
data: [
|
||||||
{ value: 'glm-4' },
|
'glm-4',
|
||||||
{ value: 'glm-4-plus' },
|
'glm-4-plus',
|
||||||
{ value: 'glm-4-air' },
|
'glm-4-air',
|
||||||
{ value: 'glm-4-airx' },
|
'glm-4-airx',
|
||||||
{ value: 'glm-4-long' },
|
'glm-4-long',
|
||||||
{ value: 'glm-4-flash' },
|
'glm-4-flash',
|
||||||
{ value: 'glm-4v' },
|
'glm-4v',
|
||||||
{ value: 'glm-4v-plus' },
|
'glm-4v-plus',
|
||||||
{ value: 'glm-3-turbo' }
|
'glm-3-turbo'
|
||||||
],
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
tipPrefix: '查看说明',
|
tipPrefix: '查看说明',
|
||||||
link: 'https://open.bigmodel.cn/dev/api'
|
link: 'https://open.bigmodel.cn/dev/api'
|
||||||
},
|
},
|
||||||
@ -259,16 +307,18 @@ export default {
|
|||||||
{
|
{
|
||||||
label: '模型',
|
label: '模型',
|
||||||
prop: 'qianwen_model',
|
prop: 'qianwen_model',
|
||||||
type: 'select',
|
type: 'auto-complete',
|
||||||
options: [
|
data: [
|
||||||
{ value: 'qwen-turbo' },
|
'qwen-turbo',
|
||||||
{ value: 'qwen-turbo-latest' },
|
'qwen-turbo-latest',
|
||||||
{ value: 'qwen-plus' },
|
'qwen-plus',
|
||||||
{ value: 'qwen-plus-latest' },
|
'qwen-plus-latest',
|
||||||
{ value: 'qwen-max' },
|
'qwen-max',
|
||||||
{ value: 'qwen-max-latest' },
|
'qwen-max-latest',
|
||||||
{ value: 'qwen-long' },
|
'qwen-long',
|
||||||
],
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
tipPrefix: '查看说明',
|
tipPrefix: '查看说明',
|
||||||
link: 'https://help.aliyun.com/zh/model-studio/getting-started/models'
|
link: 'https://help.aliyun.com/zh/model-studio/getting-started/models'
|
||||||
},
|
},
|
||||||
@ -306,19 +356,21 @@ export default {
|
|||||||
{
|
{
|
||||||
label: '模型',
|
label: '模型',
|
||||||
prop: 'wenxin_model',
|
prop: 'wenxin_model',
|
||||||
type: 'select',
|
type: 'auto-complete',
|
||||||
options: [
|
data: [
|
||||||
{ value: 'ernie-4.0-8k' },
|
'ernie-4.0-8k',
|
||||||
{ value: 'ernie-4.0-8k-latest' },
|
'ernie-4.0-8k-latest',
|
||||||
{ value: 'ernie-4.0-turbo-128k' },
|
'ernie-4.0-turbo-128k',
|
||||||
{ value: 'ernie-4.0-turbo-8k' },
|
'ernie-4.0-turbo-8k',
|
||||||
{ value: 'ernie-3.5-128k' },
|
'ernie-3.5-128k',
|
||||||
{ value: 'ernie-3.5-8k' },
|
'ernie-3.5-8k',
|
||||||
{ value: 'ernie-speed-128k' },
|
'ernie-speed-128k',
|
||||||
{ value: 'ernie-speed-8k' },
|
'ernie-speed-8k',
|
||||||
{ value: 'ernie-lite-8k' },
|
'ernie-lite-8k',
|
||||||
{ value: 'ernie-tiny-8k' },
|
'ernie-tiny-8k',
|
||||||
],
|
],
|
||||||
|
noFilter: true,
|
||||||
|
placeholder: '请输入模型名称',
|
||||||
tipPrefix: '查看说明',
|
tipPrefix: '查看说明',
|
||||||
link: 'https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Blfmc9dlf'
|
link: 'https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Blfmc9dlf'
|
||||||
},
|
},
|
||||||
@ -347,6 +399,9 @@ export default {
|
|||||||
...mapState(['formOptions']),
|
...mapState(['formOptions']),
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
filterMethod(value, option) {
|
||||||
|
return option.toUpperCase().indexOf(value.toUpperCase()) !== -1;
|
||||||
|
},
|
||||||
submitForm() {
|
submitForm() {
|
||||||
this.$refs.formData.validate((valid) => {
|
this.$refs.formData.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
Loading…
x
Reference in New Issue
Block a user