diff --git a/src/renderer/components/icons/ProviderIcon.tsx b/src/renderer/components/icons/ProviderIcon.tsx index 0aceb77af4..1ef0338ee0 100644 --- a/src/renderer/components/icons/ProviderIcon.tsx +++ b/src/renderer/components/icons/ProviderIcon.tsx @@ -130,6 +130,13 @@ export default function ProviderIcon(props: { className?: string; size?: number; {provider === ModelProviderEnum.VercelAIGateway && ( )} + {provider === ModelProviderEnum.DaoXE && ( + <> + + + + + )} {provider === ModelProviderEnum.XAI && ( <> diff --git a/src/shared/models/index.ts b/src/shared/models/index.ts index 304c6909a5..1da094e6eb 100644 --- a/src/shared/models/index.ts +++ b/src/shared/models/index.ts @@ -30,6 +30,7 @@ export const aiProviderNameHash: Record = { [ModelProviderEnum.OpenRouter]: 'OpenRouter API', [ModelProviderEnum.Bedrock]: 'AWS Bedrock', [ModelProviderEnum.VercelAIGateway]: 'Vercel AI Gateway', + [ModelProviderEnum.DaoXE]: 'DaoXE', [ModelProviderEnum.Custom]: 'Custom Provider', } @@ -150,6 +151,11 @@ export const AIModelProviderMenuOptionList = [ label: aiProviderNameHash[ModelProviderEnum.VercelAIGateway], disabled: false, }, + { + value: ModelProviderEnum.DaoXE, + label: aiProviderNameHash[ModelProviderEnum.DaoXE], + disabled: false, + }, { value: ModelProviderEnum.ChatGLM6B, label: aiProviderNameHash[ModelProviderEnum.ChatGLM6B], diff --git a/src/shared/providers/definitions/daoxe.ts b/src/shared/providers/definitions/daoxe.ts new file mode 100644 index 0000000000..2d7db6a874 --- /dev/null +++ b/src/shared/providers/definitions/daoxe.ts @@ -0,0 +1,36 @@ +import { ModelProviderEnum, ModelProviderType } from '../../types' +import { defineProvider } from '../registry' +import DaoXE from './models/daoxe' + +export const daoxeProvider = defineProvider({ + id: ModelProviderEnum.DaoXE, + name: 'DaoXE', + type: ModelProviderType.OpenAI, + description: 'OpenAI-compatible multi-model API gateway', + urls: { + website: 'https://daoxe.com/', + docs: 'https://github.com/seven7763/DaoXE-AI', + models: 'https://daoxe.com/pricing', + }, + defaultSettings: { + apiHost: 'https://daoxe.com/v1', + }, + createModel: (config) => { + return new DaoXE( + { + apiKey: config.effectiveApiKey, + apiHost: config.formattedApiHost || 'https://daoxe.com/v1', + model: config.model, + temperature: config.settings.temperature, + topP: config.settings.topP, + maxOutputTokens: config.settings.maxTokens, + useProxy: config.providerSetting.useProxy, + stream: config.settings.stream, + }, + config.dependencies + ) + }, + getDisplayName: (modelId, providerSettings) => { + return `DaoXE (${providerSettings?.models?.find((model) => model.modelId === modelId)?.nickname || modelId})` + }, +}) diff --git a/src/shared/providers/definitions/models/daoxe.ts b/src/shared/providers/definitions/models/daoxe.ts new file mode 100644 index 0000000000..e4fdf2955a --- /dev/null +++ b/src/shared/providers/definitions/models/daoxe.ts @@ -0,0 +1,5 @@ +import OpenAICompatible from '../../../models/openai-compatible' + +export default class DaoXE extends OpenAICompatible { + public name = 'DaoXE' +} diff --git a/src/shared/providers/index.ts b/src/shared/providers/index.ts index 06742110e7..a9f548fe59 100644 --- a/src/shared/providers/index.ts +++ b/src/shared/providers/index.ts @@ -17,6 +17,7 @@ import './definitions/minimax' import './definitions/moonshot' import './definitions/siliconflow' import './definitions/openrouter' +import './definitions/daoxe' import './definitions/ollama' import './definitions/lmstudio' import './definitions/azure' diff --git a/src/shared/types/provider.ts b/src/shared/types/provider.ts index 8f12db4f03..625795524d 100644 --- a/src/shared/types/provider.ts +++ b/src/shared/types/provider.ts @@ -27,6 +27,7 @@ export enum ModelProviderEnum { OpenRouter = 'openrouter', Bedrock = 'bedrock', VercelAIGateway = 'vercel-ai-gateway', + DaoXE = 'daoxe', Custom = 'custom', } diff --git a/src/shared/utils/llm_utils.ts b/src/shared/utils/llm_utils.ts index 2df5666a1a..da56b5e081 100644 --- a/src/shared/utils/llm_utils.ts +++ b/src/shared/utils/llm_utils.ts @@ -129,6 +129,7 @@ export function isOpenAICompatible(providerId: string, _modelId: string) { ModelProviderEnum.OpenAI, ModelProviderEnum.SiliconFlow, ModelProviderEnum.OpenRouter, + ModelProviderEnum.DaoXE, ModelProviderEnum.Ollama, ModelProviderEnum.ChatGLM6B, ModelProviderEnum.XAI,