From c0cfb8bfac00bebe6d25ec26239e61e406b6cbd4 Mon Sep 17 00:00:00 2001 From: keenborder786 <21110290@lums.edu.pk> Date: Mon, 5 Jan 2026 19:21:56 +0500 Subject: [PATCH 1/4] fix: Function all in case of strict --- libs/core/langchain_core/utils/function_calling.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/core/langchain_core/utils/function_calling.py b/libs/core/langchain_core/utils/function_calling.py index e341191d972e0..25b021f409d9c 100644 --- a/libs/core/langchain_core/utils/function_calling.py +++ b/libs/core/langchain_core/utils/function_calling.py @@ -460,6 +460,8 @@ def convert_to_openai_function( parameters = dict(parameters) parameters["required"] = list(fields.keys()) oai_function["parameters"] = parameters + oai_function["parameters"]["additionalProperties"] = False + return oai_function From c1872fb976ec2893ac4db01611751dd4670a44ee Mon Sep 17 00:00:00 2001 From: Chester Curme Date: Wed, 7 Jan 2026 15:04:25 -0500 Subject: [PATCH 2/4] revert --- libs/core/langchain_core/utils/function_calling.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/libs/core/langchain_core/utils/function_calling.py b/libs/core/langchain_core/utils/function_calling.py index 25b021f409d9c..e341191d972e0 100644 --- a/libs/core/langchain_core/utils/function_calling.py +++ b/libs/core/langchain_core/utils/function_calling.py @@ -460,8 +460,6 @@ def convert_to_openai_function( parameters = dict(parameters) parameters["required"] = list(fields.keys()) oai_function["parameters"] = parameters - oai_function["parameters"]["additionalProperties"] = False - return oai_function From 5938d9e60acf72ed5730da048ec5960e9251a428 Mon Sep 17 00:00:00 2001 From: Chester Curme Date: Wed, 7 Jan 2026 15:04:38 -0500 Subject: [PATCH 3/4] change order of schema updates --- libs/core/langchain_core/utils/function_calling.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libs/core/langchain_core/utils/function_calling.py b/libs/core/langchain_core/utils/function_calling.py index e341191d972e0..fcb199914d968 100644 --- a/libs/core/langchain_core/utils/function_calling.py +++ b/libs/core/langchain_core/utils/function_calling.py @@ -446,12 +446,6 @@ def convert_to_openai_function( raise ValueError(msg) oai_function["strict"] = strict if strict: - # As of 08/06/24, OpenAI requires that additionalProperties be supplied and - # set to False if strict is True. - # All properties layer needs 'additionalProperties=False' - oai_function["parameters"] = _recursive_set_additional_properties_false( - oai_function["parameters"] - ) # All fields must be `required` parameters = oai_function.get("parameters") if isinstance(parameters, dict): @@ -460,6 +454,13 @@ def convert_to_openai_function( parameters = dict(parameters) parameters["required"] = list(fields.keys()) oai_function["parameters"] = parameters + + # As of 08/06/24, OpenAI requires that additionalProperties be supplied and + # set to False if strict is True. + # All properties layer needs 'additionalProperties=False' + oai_function["parameters"] = _recursive_set_additional_properties_false( + oai_function["parameters"] + ) return oai_function From cb2faee5f31d0924fed19092c5fe459895b7b9a2 Mon Sep 17 00:00:00 2001 From: Chester Curme Date: Wed, 7 Jan 2026 15:10:04 -0500 Subject: [PATCH 4/4] add test --- .../tests/unit_tests/utils/test_function_calling.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/libs/core/tests/unit_tests/utils/test_function_calling.py b/libs/core/tests/unit_tests/utils/test_function_calling.py index c4edce261be37..1dcdf2ef6378d 100644 --- a/libs/core/tests/unit_tests/utils/test_function_calling.py +++ b/libs/core/tests/unit_tests/utils/test_function_calling.py @@ -1168,3 +1168,14 @@ class MyModel(BaseModel): func = convert_to_openai_function(MyModel, strict=True) actual = func["parameters"]["required"] assert actual == expected + + +def test_convert_to_openai_function_strict_defaults() -> None: + class MyModel(BaseModel): + """Dummy schema.""" + + arg1: int = Field(default=3, description="foo") + arg2: str | None = Field(default=None, description="bar") + + func = convert_to_openai_function(MyModel, strict=True) + assert func["parameters"]["additionalProperties"] is False