[feat(json_adapter): Enhance parsing for single-field outputs & Pydantic v1/v2 compat #8239
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.
[feat(json_adapter): Enhance parsing for single-field outputs & Pydantic v1/v2 compat
This commit introduces several improvements to the JSONAdapter:
Improved Parsing for Single Output Fields:
The
parse()
method now correctly handles scenarios where a Language Model(LM) returns a raw JSON array when the DSPy Signature expects only a single output field of a list type.
Previously, this could lead to parsing errors if the signature didn't wrap the
single output in a JSON object.
Pydantic v1/v2 Compatibility for Structured Outputs:
The
_get_structured_outputs_response_format()
method has been updatedto dynamically use Pydantic's
ConfigDict
for v2.x and the olderBaseConfig
for v1.x. This ensures that the structured output modelgeneration (used with OpenAI's function calling/tool use features)
is compatible across different Pydantic versions by correctly setting
extra="forbid"
.