diff --git a/api/package.json b/api/package.json index b04b049ce8..2ee9df6016 100644 --- a/api/package.json +++ b/api/package.json @@ -49,7 +49,7 @@ "@langchain/google-genai": "^0.1.11", "@langchain/google-vertexai": "^0.2.2", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.3.8", + "@librechat/agents": "^2.3.93", "@librechat/data-schemas": "*", "@waylaidwanderer/fetch-event-source": "^3.0.1", "axios": "^1.8.2", diff --git a/api/server/services/Endpoints/agents/initialize.js b/api/server/services/Endpoints/agents/initialize.js index 04cd20d072..26a476527a 100644 --- a/api/server/services/Endpoints/agents/initialize.js +++ b/api/server/services/Endpoints/agents/initialize.js @@ -99,6 +99,19 @@ const primeResources = async (req, _attachments, _tool_resources) => { } }; +/** + * @param {...string | number} values + * @returns {string | number | undefined} + */ +function optionalChainWithEmptyCheck(...values) { + for (const value of values) { + if (value !== undefined && value !== null && value !== '') { + return value; + } + } + return values[values.length - 1]; +} + /** * @param {object} params * @param {ServerRequest} params.req @@ -200,12 +213,17 @@ const initializeAgentOptions = async ({ const tokensModel = agent.provider === EModelEndpoint.azureOpenAI ? agent.model : agent.model_parameters.model; - const maxTokens = agent.model_parameters.maxOutputTokens ?? agent.model_parameters.maxTokens ?? 0; - const maxContextTokens = - agent.model_parameters.maxContextTokens ?? - agent.max_context_tokens ?? - getModelMaxTokens(tokensModel, providerEndpointMap[provider]) ?? - 4096; + const maxTokens = optionalChainWithEmptyCheck( + agent.model_parameters.maxOutputTokens, + agent.model_parameters.maxTokens, + 0, + ); + const maxContextTokens = optionalChainWithEmptyCheck( + agent.model_parameters.maxContextTokens, + agent.max_context_tokens, + getModelMaxTokens(tokensModel, providerEndpointMap[provider]), + 4096, + ); return { ...agent, tools, diff --git a/package-lock.json b/package-lock.json index d7bc3c39a0..7a9c0798dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ "@langchain/google-genai": "^0.1.11", "@langchain/google-vertexai": "^0.2.2", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.3.8", + "@librechat/agents": "^2.3.93", "@librechat/data-schemas": "*", "@waylaidwanderer/fetch-event-source": "^3.0.1", "axios": "^1.8.2", @@ -671,9 +671,9 @@ } }, "api/node_modules/@librechat/agents": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-2.3.8.tgz", - "integrity": "sha512-S8v1EmEBvE/cJ85inApFCkYay97EJ2s0goUfXGK86wPssC0EZRUJ/iYhcD61cnAQ+vRTk0a+Hn7P42Yw68V93A==", + "version": "2.3.93", + "resolved": "https://registry.npmjs.org/@librechat/agents/-/agents-2.3.93.tgz", + "integrity": "sha512-TlGpxfO+fBs+6xecNlX2mQcHh7BdAGRsBBri1DNpzAaPclMVWQGxIdUGJBqrqcnrlVLKkb4xctExxmmXe9mt0A==", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-sdk/credential-provider-node": "^3.613.0", diff --git a/packages/data-provider/src/types/assistants.ts b/packages/data-provider/src/types/assistants.ts index 932fc02077..0ecf751961 100644 --- a/packages/data-provider/src/types/assistants.ts +++ b/packages/data-provider/src/types/assistants.ts @@ -150,11 +150,12 @@ export type File = { /* Agent types */ -export type AgentParameterValue = number | null; +export type AgentParameterValue = number | string | null; export type AgentModelParameters = { model?: string; temperature: AgentParameterValue; + maxContextTokens: AgentParameterValue; max_context_tokens: AgentParameterValue; max_output_tokens: AgentParameterValue; top_p: AgentParameterValue;