From 738d04fac41726ff3f228a14ecb7e5800cd77524 Mon Sep 17 00:00:00 2001 From: Dustin Healy <54083382+dustinhealy@users.noreply.github.com> Date: Tue, 1 Jul 2025 15:00:18 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8D=20feat:=20Add=20Google=20Search=20?= =?UTF-8?q?Grounding=20Toggle=20(#8174)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ✨ feat: Add Google Search Grounding Feature and Update Agent Tool Initialization - Introduced a new grounding option in the Google configuration to enable real-time web search results. - Updated the agent initialization to concatenate additional tools from options. - Enhanced translation files to include descriptions for the new grounding feature. - Modified relevant schemas and parameter settings to support the grounding functionality. * 🔑 chore: Update @librechat/agents dependency to version 2.4.50 * ✅ fix: Ensure tools array is initialized before concatenation in initializeAgent function * chore: Update version of librechat-data-provider to 0.7.899 and add GOOGLE_TOOL_CONFLICT error type * fix: Adjust label class for better text wrapping in DynamicSwitch component * fix: Handle Google tool conflict error and update error messages in translation * fix: Restore grounding setting in googleCol2 configuration --------- Co-authored-by: Danny Avila --- api/package.json | 2 +- api/server/services/Endpoints/agents/agent.js | 10 +++++++++- client/src/components/Messages/Content/Error.tsx | 1 + .../SidePanel/Parameters/DynamicSwitch.tsx | 2 +- client/src/locales/en/translation.json | 3 +++ package-lock.json | 12 ++++++------ packages/api/package.json | 2 +- packages/api/src/endpoints/google/llm.ts | 10 ++++++++++ packages/data-provider/package.json | 2 +- packages/data-provider/src/config.ts | 4 ++++ packages/data-provider/src/parameterSettings.ts | 15 +++++++++++++++ packages/data-provider/src/schemas.ts | 6 ++++++ packages/data-schemas/src/types/convo.ts | 1 + 13 files changed, 59 insertions(+), 11 deletions(-) diff --git a/api/package.json b/api/package.json index fd002d58ce..6621b37fd9 100644 --- a/api/package.json +++ b/api/package.json @@ -48,7 +48,7 @@ "@langchain/google-genai": "^0.2.13", "@langchain/google-vertexai": "^0.2.13", "@langchain/textsplitters": "^0.1.0", - "@librechat/agents": "^2.4.49", + "@librechat/agents": "^2.4.50", "@librechat/api": "*", "@librechat/data-schemas": "*", "@node-saml/passport-saml": "^5.0.0", diff --git a/api/server/services/Endpoints/agents/agent.js b/api/server/services/Endpoints/agents/agent.js index a3523605db..469cacd0e4 100644 --- a/api/server/services/Endpoints/agents/agent.js +++ b/api/server/services/Endpoints/agents/agent.js @@ -140,6 +140,14 @@ const initializeAgent = async ({ agent.provider = options.provider; } + if ( + (agent.provider === Providers.GOOGLE || agent.provider === Providers.VERTEXAI) && + options?.tools?.length && + tools?.length + ) { + throw new Error(`{ "type": "${ErrorTypes.GOOGLE_TOOL_CONFLICT}"}`); + } + /** @type {import('@librechat/agents').ClientOptions} */ agent.model_parameters = { ...options.llmConfig }; if (options.configOptions) { @@ -162,10 +170,10 @@ const initializeAgent = async ({ return { ...agent, - tools, attachments, resendFiles, toolContextMap, + tools: options.tools ?? tools, maxContextTokens: (agentMaxContextTokens - maxTokens) * 0.9, }; }; diff --git a/client/src/components/Messages/Content/Error.tsx b/client/src/components/Messages/Content/Error.tsx index 8a9391ccda..77580a3737 100644 --- a/client/src/components/Messages/Content/Error.tsx +++ b/client/src/components/Messages/Content/Error.tsx @@ -62,6 +62,7 @@ const errorMessages = { const { info } = json; return info; }, + [ErrorTypes.GOOGLE_TOOL_CONFLICT]: 'com_error_google_tool_conflict', [ViolationTypes.BAN]: 'Your account has been temporarily banned due to violations of our service.', invalid_api_key: diff --git a/client/src/components/SidePanel/Parameters/DynamicSwitch.tsx b/client/src/components/SidePanel/Parameters/DynamicSwitch.tsx index a603ffe89d..eff11f3453 100644 --- a/client/src/components/SidePanel/Parameters/DynamicSwitch.tsx +++ b/client/src/components/SidePanel/Parameters/DynamicSwitch.tsx @@ -50,7 +50,7 @@ function DynamicSwitch({