fix(tools): Return schema validation feedback to models#6368
Open
faiqali1 wants to merge 5 commits into
Open
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
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.
Please ensure you have read the contribution guide before creating a pull request.
Link to Issue or Description of Change
1. Link to an existing issue (if applicable):
set_model_responseerror responses are treated as final output, bypassing ReflectAndRetryToolPlugin retry #45252. Or, if no issue exists, describe the change:
Problem:
When
output_schemais used with tools, ADK adds the internalset_model_responsetool so the model can submit its final structured output. If the model calls this tool with invalid structured data, Pydantic validation currently fails without returning the validation details to the model. This prevents the model from learning what was wrong and retrying with corrected arguments.Solution:
Update
SetModelResponseToolto catch Pydantic validation errors and return the validation message as a tool error response. The flow now only promotesset_model_responseinto the final model response when validation succeeds, so invalid structured output is sent back to the model for correction instead of being treated as final output.Testing Plan
Unit Tests:
Passed targeted unit tests:
Result:
Also ran pre-commit on changed files:
Result:
Manual End-to-End (E2E) Tests:
Not run yet. Suggested manual test:
output_schemaand tools.set_model_responsecall with invalid schema data, such as a string for an integer field or a missing required field.Checklist
Additional context
This behavior is similar to structured-output retry patterns used by libraries such as Instructor: validation failures are returned to the model with enough detail for the model to correct its next structured-output attempt.
This contribution was developed with AI assistance (Codex GPT-5.5).