mirror of
https://github.com/hwchase17/langchain.git
synced 2026-04-23 20:23:59 +00:00
feat(core): automatic set required to include all properties in strict mode (#32930)
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user