fix(structured outputs): correct schema coercion for inline ref expansion #2025
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.
Changes being requested
Fixes #2024
This PR updates the
_ensure_strict_json_schemafunction so that when a$refis expanded inline (due to the presence of other fields likedescription), we recursively re-run the function on the resulting inline object. This ensuresadditionalProperties: falseis correctly applied even if the schema is expanded.Additionally, new test code has been added to confirm that models with nested references and annotated fields (e.g.,
Field(description="...")) correctly produceadditionalProperties=Falsefor the inline-expanded objects.Additional context & links
$refplus extra properties leads to inline expansion, causing the prior implementation to skip settingadditionalProperties: false.descriptionfields do not lose their strict schema configuration after the inline expansion.