fix(openai): normalize tool_choice inputs across providers (fix #34129) #34135
+81
−41
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.
PR Title
fix(openai): normalize tool_choice inputs across providers (fix #34129)
PR Description
Summary
normalize_tool_choiceto canonicalize user-providedtool_choicevalues (e.g."any"->"required",True->"required"), and demonstrate usage in the OpenAI adapter by calling it fromChatOpenAI.bind_tools.Files changed
tool_choiceinbind_tools)Motivation
tool_choicedifferently (for example, some require"required", others ignore"any"). This leads to inconsistent behavior across models.Details
normalize_tool_choiceperforms conservative mappings only (e.g."any"->"required",True->"required", leaves"auto","none", dicts, and specific tool names as-is).Testing & How to run locally
"any",True,False,None, and"auto".make format,make lint, andmake testto pass.Compatibility
"required"where appropriate).tool_choice(e.g., those documented to ignore it) will continue to behave as before. The recommendation is to gradually adopt the normalization helper across adapters for consistent user experience.Next steps (suggested)
AI assistant disclosure