feat(core): automatic set required to include all properties in strict mode (#32930)

This commit is contained in:
Yu Zhong
2025-10-22 23:31:08 +08:00
committed by GitHub
parent f8adbbc461
commit df46c82ae2
2 changed files with 17 additions and 0 deletions

View File

@@ -425,6 +425,10 @@ def convert_to_openai_function(
oai_function["parameters"] = _recursive_set_additional_properties_false(
oai_function["parameters"]
)
# All fields must be `required`
fields = oai_function["parameters"].get("properties", {})
if isinstance(fields, dict) and fields:
oai_function["parameters"]["required"] = list(fields.keys())
return oai_function

View File

@@ -1155,3 +1155,16 @@ def test_convert_to_openai_function_nested_strict_2() -> None:
actual = convert_to_openai_function(my_function, strict=True)
assert actual == expected
def test_convert_to_openai_function_strict_required() -> None:
class MyModel(BaseModel):
"""Dummy schema."""
arg1: int = Field(..., description="foo")
arg2: str | None = Field(None, description="bar")
expected = ["arg1", "arg2"]
func = convert_to_openai_function(MyModel, strict=True)
actual = func["parameters"]["required"]
assert actual == expected