diff --git a/api/server/controllers/agents/client.js b/api/server/controllers/agents/client.js index d19ddf08b6..c02e147110 100644 --- a/api/server/controllers/agents/client.js +++ b/api/server/controllers/agents/client.js @@ -26,7 +26,6 @@ const { VisionModes, ContentTypes, EModelEndpoint, - KnownEndpoints, PermissionTypes, isAgentsEndpoint, AgentCapabilities, @@ -76,8 +75,6 @@ const payloadParser = ({ req, agent, endpoint }) => { return req.body.endpointOption.model_parameters; }; -const legacyContentEndpoints = new Set([KnownEndpoints.groq, KnownEndpoints.deepseek]); - const noSystemModelRegex = [/\b(o1-preview|o1-mini|amazon\.titan-text)\b/gi]; function createTokenCounter(encoding) { @@ -718,9 +715,6 @@ class AgentClient extends BaseClient { this.indexTokenCountMap, toolSet, ); - if (legacyContentEndpoints.has(this.options.agent.endpoint?.toLowerCase())) { - initialMessages = formatContentStrings(initialMessages); - } /** * @@ -784,6 +778,9 @@ class AgentClient extends BaseClient { } let messages = _messages; + if (agent.useLegacyContent === true) { + messages = formatContentStrings(messages); + } if ( agent.model_parameters?.clientOptions?.defaultHeaders?.['anthropic-beta']?.includes( 'prompt-caching', diff --git a/api/server/services/Endpoints/agents/agent.js b/api/server/services/Endpoints/agents/agent.js index 7b13e753bd..b5be8ec913 100644 --- a/api/server/services/Endpoints/agents/agent.js +++ b/api/server/services/Endpoints/agents/agent.js @@ -186,10 +186,11 @@ const initializeAgent = async ({ return { ...agent, + tools, attachments, resendFiles, toolContextMap, - tools, + useLegacyContent: !!options.useLegacyContent, maxContextTokens: (agentMaxContextTokens - maxTokens) * 0.9, }; }; diff --git a/api/server/services/Endpoints/custom/initialize.js b/api/server/services/Endpoints/custom/initialize.js index 4fcbe76ea6..58da9f10dd 100644 --- a/api/server/services/Endpoints/custom/initialize.js +++ b/api/server/services/Endpoints/custom/initialize.js @@ -139,6 +139,9 @@ const initializeClient = async ({ req, res, endpointOption, optionsOnly, overrid ); clientOptions.modelOptions.user = req.user.id; const options = getOpenAIConfig(apiKey, clientOptions, endpoint); + if (options != null) { + options.useLegacyContent = true; + } if (!customOptions.streamRate) { return options; } @@ -156,6 +159,7 @@ const initializeClient = async ({ req, res, endpointOption, optionsOnly, overrid } return { + useLegacyContent: true, llmConfig: modelOptions, }; } diff --git a/api/server/services/Endpoints/openAI/initialize.js b/api/server/services/Endpoints/openAI/initialize.js index e86596181a..bfa228f378 100644 --- a/api/server/services/Endpoints/openAI/initialize.js +++ b/api/server/services/Endpoints/openAI/initialize.js @@ -65,19 +65,20 @@ const initializeClient = async ({ const isAzureOpenAI = endpoint === EModelEndpoint.azureOpenAI; /** @type {false | TAzureConfig} */ const azureConfig = isAzureOpenAI && req.app.locals[EModelEndpoint.azureOpenAI]; - + let serverless = false; if (isAzureOpenAI && azureConfig) { const { modelGroupMap, groupMap } = azureConfig; const { azureOptions, baseURL, headers = {}, - serverless, + serverless: _serverless, } = mapModelToAzureConfig({ modelName, modelGroupMap, groupMap, }); + serverless = _serverless; clientOptions.reverseProxyUrl = baseURL ?? clientOptions.reverseProxyUrl; clientOptions.headers = resolveHeaders( @@ -143,6 +144,9 @@ const initializeClient = async ({ clientOptions = Object.assign({ modelOptions }, clientOptions); clientOptions.modelOptions.user = req.user.id; const options = getOpenAIConfig(apiKey, clientOptions); + if (options != null && serverless === true) { + options.useLegacyContent = true; + } const streamRate = clientOptions.streamRate; if (!streamRate) { return options;