fix(gemini): a current Gemini model as the pilot - #13
Open
Bayway wants to merge 1 commit into
Open
Conversation
Three faults between the provider and Gemini 3, found by pointing a duck at gemini-3.5-flash. The schema cleaner did not strip exclusiveMinimum/exclusiveMaximum. pydantic writes gt=0 that way, so every verb with a timeout_s or a duration_s carried one, and google-genai 2.x validates the declaration and refuses the keyword. The executor still enforces the bound on the way in. The default model, gemini-2.5-pro, answers 'no longer available to new users'. The default is now the gemini-pro-latest alias, on purpose: a default that 404s is worse than one that moves. Gemini 3 signs each function call with a thought_signature that the next turn must hand back on that same call, or the request is refused with a 400. ToolCall carries it as base64 text (signature, empty for every other provider) and render_contents puts the bytes back on the function_call part. Verified with a two-step run to success on gemini-3.5-flash with thought summaries on; ruff, mypy and the full suite are green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Pointing a duck at
gemini-3.5-flashwith thought summaries on found three things between the provider and a current Gemini model.clean_schemadid not stripexclusiveMinimum/exclusiveMaximum. pydantic writesgt=0that way, so every verb with atimeout_sor aduration_scarried one, and google-genai 2.x validates the function declaration and refuses the keyword outright. The executor still enforces the bound on the way in, so dropping it loses nothing.gemini-2.5-pronow answers "no longer available to new users". I set the default to thegemini-pro-latestalias — same tier, but a default that moves seemed better than one that 404s. If you would rather pin,gemini-3.1-pro-previewis what the error message recommends; happy to change it.function_callpart carries athought_signature, and the next request is refused with a 400 unless the same call comes back with it.ToolCallgrows asignature: str = ""(base64; every other provider leaves it empty and nothing reads it),parse_responsefills it,render_contentsputs the bytes back on the part.Three tests: the cleaner on both keywords, the signature round trip (bytes in, text in the transcript, bytes out), and that an unsigned call is replayed without growing an empty one. The existing model-name assertion is updated. ruff, format, mypy and the full suite are green here. Verified live with a two-step run to success on
gemini-3.5-flash.