From bc0c76d4268c0b61ee878b58a6ed703637e0909a Mon Sep 17 00:00:00 2001 From: modelsell Date: Tue, 28 Jul 2026 01:20:57 +0800 Subject: [PATCH] feat: add Modelsell provider preset --- .../components/icons/ProviderIcon.tsx | 10 +++++ .../settings/provider/providerIcons.tsx | 1 + src/shared/models/index.test.ts | 1 + src/shared/models/index.ts | 1 + src/shared/providers/definitions/modelsell.ts | 40 +++++++++++++++++++ src/shared/providers/index.ts | 1 + src/shared/types/provider.ts | 1 + 7 files changed, 55 insertions(+) create mode 100644 src/shared/providers/definitions/modelsell.ts diff --git a/src/renderer/components/icons/ProviderIcon.tsx b/src/renderer/components/icons/ProviderIcon.tsx index 0aceb77af4..832869b3ed 100644 --- a/src/renderer/components/icons/ProviderIcon.tsx +++ b/src/renderer/components/icons/ProviderIcon.tsx @@ -41,6 +41,16 @@ export default function ProviderIcon(props: { className?: string; size?: number; /> )} + {provider === ModelProviderEnum.Modelsell && ( + + )} {provider === ModelProviderEnum.Azure && ( <> { [ModelProviderEnum.MiniMaxCN, 'MiniMax-M2.5', 'https://api.minimaxi.com/v1'], [ModelProviderEnum.Moonshot, 'kimi-k2.5', 'https://api.moonshot.ai/v1'], [ModelProviderEnum.MoonshotCN, 'kimi-k2.5', 'https://api.moonshot.cn/v1'], + [ModelProviderEnum.Modelsell, 'test-model', 'https://modelsell.com/v1'], ])('returns OpenAI-compatible model instances for %s', (provider, modelId, apiHost) => { const sessionSettings: SessionSettings = { provider, diff --git a/src/shared/models/index.ts b/src/shared/models/index.ts index 304c6909a5..a6e9d31e0e 100644 --- a/src/shared/models/index.ts +++ b/src/shared/models/index.ts @@ -28,6 +28,7 @@ export const aiProviderNameHash: Record = { [ModelProviderEnum.Perplexity]: 'Perplexity API', [ModelProviderEnum.XAI]: 'xAI API', [ModelProviderEnum.OpenRouter]: 'OpenRouter API', + [ModelProviderEnum.Modelsell]: 'Modelsell API', [ModelProviderEnum.Bedrock]: 'AWS Bedrock', [ModelProviderEnum.VercelAIGateway]: 'Vercel AI Gateway', [ModelProviderEnum.Custom]: 'Custom Provider', diff --git a/src/shared/providers/definitions/modelsell.ts b/src/shared/providers/definitions/modelsell.ts new file mode 100644 index 0000000000..fda52fe526 --- /dev/null +++ b/src/shared/providers/definitions/modelsell.ts @@ -0,0 +1,40 @@ +import { ModelProviderEnum, ModelProviderType } from '../../types' +import { defineProvider } from '../registry' +import OpenAI from './models/openai' + +export const modelsellProvider = defineProvider({ + id: ModelProviderEnum.Modelsell, + name: 'Modelsell', + type: ModelProviderType.OpenAI, + description: 'Access multiple AI models through the Modelsell OpenAI-compatible API.', + urls: { + website: 'https://modelsell.com', + apiKey: 'https://modelsell.com/console/token', + docs: 'https://modelsell.com/docs/api-reference', + models: 'https://modelsell.com/v1/models', + }, + defaultSettings: { + apiHost: 'https://modelsell.com/v1', + models: [], + }, + createModel: (config) => { + return new OpenAI( + { + apiKey: config.effectiveApiKey, + apiHost: config.formattedApiHost, + model: config.model, + dalleStyle: config.settings.dalleStyle || 'vivid', + temperature: config.settings.temperature, + topP: config.settings.topP, + maxOutputTokens: config.settings.maxTokens, + injectDefaultMetadata: config.globalSettings.injectDefaultMetadata, + useProxy: false, + stream: config.settings.stream, + }, + config.dependencies + ) + }, + getDisplayName: (modelId, providerSettings) => { + return `Modelsell (${providerSettings?.models?.find((model) => model.modelId === modelId)?.nickname || modelId})` + }, +}) diff --git a/src/shared/providers/index.ts b/src/shared/providers/index.ts index 06742110e7..357e2534a1 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/modelsell' 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..abf46a2820 100644 --- a/src/shared/types/provider.ts +++ b/src/shared/types/provider.ts @@ -25,6 +25,7 @@ export enum ModelProviderEnum { Perplexity = 'perplexity', XAI = 'xAI', OpenRouter = 'openrouter', + Modelsell = 'modelsell', Bedrock = 'bedrock', VercelAIGateway = 'vercel-ai-gateway', Custom = 'custom',