From e1c42315dc0747081bad3ed3e970a70214986cb4 Mon Sep 17 00:00:00 2001 From: Bennet Bo Fenner Date: Tue, 15 Apr 2025 01:57:54 -0600 Subject: [PATCH] gemini: Fix "invalid argument" error when request contains no tools (#28747) When we do not have any tools, we want to set the `tools` field to `None` Release Notes: - Fixed an issue where Gemini requests would sometimes return a Bad Request ("Invalid argument...") --- crates/language_models/src/provider/google.rs | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/crates/language_models/src/provider/google.rs b/crates/language_models/src/provider/google.rs index 4da5f255d20c3484ea2c055547552527081feea5..36a01a30c2b2297434fa2571596a2502ba17cde6 100644 --- a/crates/language_models/src/provider/google.rs +++ b/crates/language_models/src/provider/google.rs @@ -417,17 +417,19 @@ pub fn into_google( top_k: None, }), safety_settings: None, - tools: Some(vec![google_ai::Tool { - function_declarations: request - .tools - .into_iter() - .map(|tool| FunctionDeclaration { - name: tool.name, - description: tool.description, - parameters: tool.input_schema, - }) - .collect(), - }]), + tools: (request.tools.len() > 0).then(|| { + vec![google_ai::Tool { + function_declarations: request + .tools + .into_iter() + .map(|tool| FunctionDeclaration { + name: tool.name, + description: tool.description, + parameters: tool.input_schema, + }) + .collect(), + }] + }), tool_config: None, } }