Fix GeminiModel to handle empty tools in Vertex AI mode #1040
+11
−26
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.
Description
GeminiModelfails with 400 INVALID_ARGUMENT when no tools are provided in Vertex AI mode (GOOGLE_GENAI_USE_VERTEXAI=True). This issue does not occur with the standard Gemini API.Root Cause:
The current implementation always sends a
toolsfield with an emptyfunction_declarationsarray. Vertex AI strictly enforces the protooneofdefinition and rejects empty arrays, while the standard API accepts them.Solution:
Modified
_format_request_configto only includetoolswhen tools are provided:Changes:
src/strands/models/gemini.py: Updated_format_request_configto conditionally settoolstests/strands/models/test_gemini.py: Updated unit tests to remove emptytoolsarrays from expected configsNote:
This is a validation difference between the standard Gemini API and Vertex AI. While it may be a Gemini API inconsistency, the SDK must support both deployment modes. Omitting the
toolsfield when no tools are provided works correctly for both backends.Related Issues
#1039
Documentation PR
Type of Change
Bug fix
Testing
How have you tested the change? Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli
hatch run prepareChecklist
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.