diff --git a/packages/api/src/endpoints/openai/llm.ts b/packages/api/src/endpoints/openai/llm.ts index 40f03ac821..617ec4f2be 100644 --- a/packages/api/src/endpoints/openai/llm.ts +++ b/packages/api/src/endpoints/openai/llm.ts @@ -1,10 +1,12 @@ import { ProxyAgent } from 'undici'; import { Providers } from '@librechat/agents'; -import { KnownEndpoints, removeNullishValues } from 'librechat-data-provider'; +import type { AnthropicClientOptions } from '@librechat/agents'; +import { KnownEndpoints, removeNullishValues, EModelEndpoint } from 'librechat-data-provider'; import type { BindToolsInput } from '@langchain/core/language_models/chat_models'; import type { AzureOpenAIInput } from '@langchain/openai'; import type { OpenAI } from 'openai'; import type * as t from '~/types'; +import { getLLMConfig as getAnthropicLLMConfig } from '~/endpoints/anthropic/llm'; import { sanitizeModelName, constructAzureURL } from '~/utils/azure'; import { createFetch } from '~/utils/generators'; import { isEnabled } from '~/utils/common'; @@ -233,12 +235,30 @@ export function getOpenAIConfig( dropParams, } = options; - const { llmConfig, tools } = getOpenAILLMConfig({ - streaming, - modelOptions: _modelOptions, - addParams, - dropParams, - }); + let llmConfig: + | (Partial & Partial & Partial) + | AnthropicClientOptions; + let tools: BindToolsInput[]; + + if (options.customParams?.defaultParamsEndpoint === EModelEndpoint.anthropic) { + const anthropicResult = getAnthropicLLMConfig(apiKey, { + modelOptions: _modelOptions, + userId: options.userId || '', + proxy: options.proxy, + reverseProxyUrl: options.reverseProxyUrl, + }); + llmConfig = anthropicResult.llmConfig; + tools = anthropicResult.tools; + } else { + const openaiResult = getOpenAILLMConfig({ + streaming, + modelOptions: _modelOptions, + addParams, + dropParams, + }); + llmConfig = openaiResult.llmConfig; + tools = openaiResult.tools; + } let useOpenRouter = false; const configOptions: t.OpenAIConfiguration = {}; diff --git a/packages/api/src/types/openai.ts b/packages/api/src/types/openai.ts index 8953283a39..62f4f7330d 100644 --- a/packages/api/src/types/openai.ts +++ b/packages/api/src/types/openai.ts @@ -22,6 +22,10 @@ export interface OpenAIConfigOptions { streaming?: boolean; addParams?: Record; dropParams?: string[]; + customParams?: { + defaultParamsEndpoint?: string; + }; + userId?: string; } export type OpenAIConfiguration = OpenAIClientOptions['configuration'];