fix(gemini): support snake_case for google_search tool parameters #18451
+77
−14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Relevant issues
Fixes #18171
Pre-Submission checklist
Please complete all items before asking a LiteLLM maintainer to review your PR
tests/litellm/directory, Adding at least 1 test is a hard requirement - see detailsmake test-unitType
🐛 Bug Fix
Changes
Summary
Adds snake_case support for Gemini/Vertex AI tool parameters to align with:
google_maps,url_context)When users follow Google's Gemini API documentation and use
{"google_search": {}}, the tool parameter is ignored, causing a 400 error. This violates LiteLLM's core principle: "Call all LLM APIs using the OpenAI format".Solution
Accept both
snake_caseandcamelCasevariants for tool names:google_search→googleSearchgoogle_search_retrieval→googleSearchRetrievalenterprise_web_search→enterpriseWebSearchMaintains backward compatibility - existing
googleSearchcalls continue to work.Files Modified
litellm/llms/vertex_ai/gemini/vertex_and_google_ai_studio_gemini.pygoogle_maps(line 502-504)tests/litellm/llms/vertex_ai/gemini/test_transformation.pyUsers following official Google documentation should not receive errors. LiteLLM's job is to translate Python-style input → provider-native format, not force users to learn provider-specific naming conventions.
Documentation References
Google's Official Docs:
google_searchTool(google_search=GoogleSearch())Python Standards:
LiteLLM Design Principle:
Note: This PR reopens the discussion from #18189. The implementation includes the same fixes with additional formatting improvements.