feat: add doubao provider

This commit is contained in:
kangfenmao 2024-08-13 19:41:01 +08:00
parent 77c0952635
commit 4485a00395
8 changed files with 67 additions and 29 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -352,6 +352,7 @@ export const SYSTEM_MODELS: Record<string, SystemModel[]> = {
enabled: true enabled: true
} }
], ],
doubao: [],
aihubmix: [ aihubmix: [
{ {
id: 'gpt-4o-mini', id: 'gpt-4o-mini',

View File

@ -3,6 +3,7 @@ import ChatGLMModelLogo from '@renderer/assets/images/models/chatglm.jpeg'
import ChatGPTModelLogo from '@renderer/assets/images/models/chatgpt.jpeg' import ChatGPTModelLogo from '@renderer/assets/images/models/chatgpt.jpeg'
import ClaudeModelLogo from '@renderer/assets/images/models/claude.png' import ClaudeModelLogo from '@renderer/assets/images/models/claude.png'
import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png' import DeepSeekModelLogo from '@renderer/assets/images/models/deepseek.png'
import DoubaoModelLogo from '@renderer/assets/images/models/doubao.png'
import EmbeddingModelLogo from '@renderer/assets/images/models/embedding.png' import EmbeddingModelLogo from '@renderer/assets/images/models/embedding.png'
import GeminiModelLogo from '@renderer/assets/images/models/gemini.png' import GeminiModelLogo from '@renderer/assets/images/models/gemini.png'
import GemmaModelLogo from '@renderer/assets/images/models/gemma.jpeg' import GemmaModelLogo from '@renderer/assets/images/models/gemma.jpeg'
@ -18,6 +19,7 @@ import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.j
import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png'
import DashScopeProviderLogo from '@renderer/assets/images/providers/dashscope.png' import DashScopeProviderLogo from '@renderer/assets/images/providers/dashscope.png'
import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png' import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png'
import DoubaoProviderLogo from '@renderer/assets/images/providers/doubao.png'
import GeminiProviderLogo from '@renderer/assets/images/providers/gemini.png' import GeminiProviderLogo from '@renderer/assets/images/providers/gemini.png'
import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' import GroqProviderLogo from '@renderer/assets/images/providers/groq.png'
import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.jpeg' import MoonshotProviderLogo from '@renderer/assets/images/providers/moonshot.jpeg'
@ -62,6 +64,8 @@ export function getProviderLogo(providerId: string) {
return GeminiProviderLogo return GeminiProviderLogo
case 'stepfun': case 'stepfun':
return StepFunProviderLogo return StepFunProviderLogo
case 'doubao':
return DoubaoProviderLogo
default: default:
return undefined return undefined
} }
@ -90,7 +94,8 @@ export function getModelLogo(modelId: string) {
embedding: EmbeddingModelLogo, embedding: EmbeddingModelLogo,
bison: PalmModelLogo, bison: PalmModelLogo,
palm: PalmModelLogo, palm: PalmModelLogo,
step: StepModelLogo step: StepModelLogo,
'ep-202': DoubaoModelLogo
} }
for (const key in logoMap) { for (const key in logoMap) {
@ -115,6 +120,18 @@ export const PROVIDER_CONFIG = {
models: 'https://platform.openai.com/docs/models' models: 'https://platform.openai.com/docs/models'
} }
}, },
gemini: {
api: {
url: 'https://generativelanguage.googleapis.com',
editable: false
},
websites: {
official: 'https://gemini.google.com/',
apiKey: 'https://aistudio.google.com/app/apikey',
docs: 'https://ai.google.dev/gemini-api/docs',
models: 'https://ai.google.dev/gemini-api/docs/models/gemini'
}
},
silicon: { silicon: {
api: { api: {
url: 'https://cloud.siliconflow.cn', url: 'https://cloud.siliconflow.cn',
@ -199,6 +216,30 @@ export const PROVIDER_CONFIG = {
models: 'https://dashscope.console.aliyun.com/model' models: 'https://dashscope.console.aliyun.com/model'
} }
}, },
stepfun: {
api: {
url: 'https://api.stepfun.com',
editable: false
},
websites: {
official: 'https://platform.stepfun.com/',
apiKey: 'https://platform.stepfun.com/interface-key',
docs: 'https://platform.stepfun.com/docs/overview/concept',
models: 'https://platform.stepfun.com/docs/llm/text'
}
},
doubao: {
api: {
url: 'https://ark.cn-beijing.volces.com/api/v3/',
editable: true
},
websites: {
official: 'https://console.volcengine.com/ark/',
apiKey: 'https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey',
docs: 'https://www.volcengine.com/docs/82379/1182403',
models: 'https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint'
}
},
openrouter: { openrouter: {
api: { api: {
url: 'https://openrouter.ai/api/v1/', url: 'https://openrouter.ai/api/v1/',
@ -257,29 +298,5 @@ export const PROVIDER_CONFIG = {
docs: 'https://doc.aihubmix.com/', docs: 'https://doc.aihubmix.com/',
models: 'https://aihubmix.com/models' models: 'https://aihubmix.com/models'
} }
},
gemini: {
api: {
url: 'https://generativelanguage.googleapis.com',
editable: false
},
websites: {
official: 'https://gemini.google.com/',
apiKey: 'https://aistudio.google.com/app/apikey',
docs: 'https://ai.google.dev/gemini-api/docs',
models: 'https://ai.google.dev/gemini-api/docs/models/gemini'
}
},
stepfun: {
api: {
url: 'https://api.stepfun.com',
editable: false
},
websites: {
official: 'https://platform.stepfun.com/',
apiKey: 'https://platform.stepfun.com/interface-key',
docs: 'https://platform.stepfun.com/docs/overview/concept',
models: 'https://platform.stepfun.com/docs/llm/text'
}
} }
} }

View File

@ -119,7 +119,8 @@ const resources = {
dashscope: 'DashScope', dashscope: 'DashScope',
anthropic: 'Anthropic', anthropic: 'Anthropic',
aihubmix: 'AiHubMix', aihubmix: 'AiHubMix',
stepfun: 'StepFun' stepfun: 'StepFun',
doubao: 'Doubao'
}, },
settings: { settings: {
title: 'Settings', title: 'Settings',
@ -338,7 +339,8 @@ const resources = {
dashscope: '阿里云灵积', dashscope: '阿里云灵积',
anthropic: 'Anthropic', anthropic: 'Anthropic',
aihubmix: 'AiHubMix', aihubmix: 'AiHubMix',
stepfun: '阶跃星辰' stepfun: '阶跃星辰',
doubao: '豆包'
}, },
settings: { settings: {
title: '设置', title: '设置',

View File

@ -67,9 +67,9 @@ const MessageItem: FC<Props> = ({ message, index, showMenu, onDeleteMessage }) =
const getUserName = useCallback(() => { const getUserName = useCallback(() => {
if (message.id === 'assistant') return assistant?.name if (message.id === 'assistant') return assistant?.name
if (message.role === 'assistant') return upperFirst(message.modelId) if (message.role === 'assistant') return upperFirst(model.name || model.id)
return userName || t('common.you') return userName || t('common.you')
}, [assistant?.name, message.id, message.modelId, message.role, t, userName]) }, [assistant?.name, message.id, message.role, model.id, model.name, t, userName])
const fontFamily = useMemo(() => { const fontFamily = useMemo(() => {
return messageFont === 'serif' ? FONT_FAMILY.replace('sans-serif', 'serif').replace('Ubuntu, ', '') : FONT_FAMILY return messageFont === 'serif' ? FONT_FAMILY.replace('sans-serif', 'serif').replace('Ubuntu, ', '') : FONT_FAMILY

View File

@ -112,6 +112,15 @@ const initialState: LlmState = {
isSystem: true, isSystem: true,
enabled: false enabled: false
}, },
{
id: 'doubao',
name: 'doubao',
apiKey: '',
apiHost: 'https://ark.cn-beijing.volces.com/api/v3/',
models: SYSTEM_MODELS.doubao.filter((m) => m.enabled),
isSystem: true,
enabled: false
},
{ {
id: 'aihubmix', id: 'aihubmix',
name: 'AiHubMix', name: 'AiHubMix',

View File

@ -321,6 +321,15 @@ const migrateConfig = {
models: SYSTEM_MODELS.stepfun.filter((m) => m.enabled), models: SYSTEM_MODELS.stepfun.filter((m) => m.enabled),
isSystem: true, isSystem: true,
enabled: false enabled: false
},
{
id: 'doubao',
name: 'doubao',
apiKey: '',
apiHost: 'https://ark.cn-beijing.volces.com/api/v3/',
models: SYSTEM_MODELS.doubao.filter((m) => m.enabled),
isSystem: true,
enabled: false
} }
] ]
} }