[JSON] Add strict_properties
kwarg to guidance.json
to make JSON output terser by default
#1068
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.
Adds a
strict_properties
kwarg toguidance.json
with a default value ofTrue
.When
strict_properties
isTrue
, then any JSON schema that leavesadditionalProperties
unset will be treated as if it were set toFalse
. This means that the LLM will only generate properties that are explicitly requested by the schema. Explicitly settingadditionalProperties
with any non-False schema will override this behavior.In the special case
guidance.json
is called without a schema (None
), the value ofstrict_properties
will be ignored and "any valid json" can be generated.Note that this behavior isn't technically compliant with the official JSON Schema spec, and to enforce behavior in line with the spec, users should explicitly pass
strict_properties=False
when callingguidance.json
. TheTrue
behavior will most likely be more in line with what users expect, however, and we adopt this as the default. Particularly when using thepydantic
interface, this means that users don't have to monkey around withConfigDict
s.Closes #1050