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',