| const { Providers } = require('@librechat/agents'); |
| const { EModelEndpoint } = require('librechat-data-provider'); |
| const { getCustomEndpointConfig } = require('@librechat/api'); |
| const initAnthropic = require('~/server/services/Endpoints/anthropic/initialize'); |
| const getBedrockOptions = require('~/server/services/Endpoints/bedrock/options'); |
| const initOpenAI = require('~/server/services/Endpoints/openAI/initialize'); |
| const initCustom = require('~/server/services/Endpoints/custom/initialize'); |
| const initGoogle = require('~/server/services/Endpoints/google/initialize'); |
|
|
| |
| |
| |
| |
| function isKnownCustomProvider(provider) { |
| return [Providers.XAI, Providers.DEEPSEEK, Providers.OPENROUTER].includes( |
| provider?.toLowerCase() || '', |
| ); |
| } |
|
|
| const providerConfigMap = { |
| [Providers.XAI]: initCustom, |
| [Providers.DEEPSEEK]: initCustom, |
| [Providers.OPENROUTER]: initCustom, |
| [EModelEndpoint.openAI]: initOpenAI, |
| [EModelEndpoint.google]: initGoogle, |
| [EModelEndpoint.azureOpenAI]: initOpenAI, |
| [EModelEndpoint.anthropic]: initAnthropic, |
| [EModelEndpoint.bedrock]: getBedrockOptions, |
| }; |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| function getProviderConfig({ provider, appConfig }) { |
| let getOptions = providerConfigMap[provider]; |
| let overrideProvider = provider; |
| |
| let customEndpointConfig; |
|
|
| if (!getOptions && providerConfigMap[provider.toLowerCase()] != null) { |
| overrideProvider = provider.toLowerCase(); |
| getOptions = providerConfigMap[overrideProvider]; |
| } else if (!getOptions) { |
| customEndpointConfig = getCustomEndpointConfig({ endpoint: provider, appConfig }); |
| if (!customEndpointConfig) { |
| throw new Error(`Provider ${provider} not supported`); |
| } |
| getOptions = initCustom; |
| overrideProvider = Providers.OPENAI; |
| } |
|
|
| if (isKnownCustomProvider(overrideProvider) && !customEndpointConfig) { |
| customEndpointConfig = getCustomEndpointConfig({ endpoint: provider, appConfig }); |
| if (!customEndpointConfig) { |
| throw new Error(`Provider ${provider} not supported`); |
| } |
| } |
|
|
| return { |
| getOptions, |
| overrideProvider, |
| customEndpointConfig, |
| }; |
| } |
|
|
| module.exports = { |
| getProviderConfig, |
| }; |
|
|