mirror of
https://github.com/hwchase17/langchain.git
synced 2025-08-16 08:06:14 +00:00
add test
This commit is contained in:
parent
0c752c6b81
commit
360daf74e9
@ -788,7 +788,7 @@ def _recursive_set_additional_properties_false(
|
|||||||
schema["additionalProperties"] = False
|
schema["additionalProperties"] = False
|
||||||
|
|
||||||
# Recursively check 'properties' and 'items' if they exist
|
# Recursively check 'properties' and 'items' if they exist
|
||||||
if 'anyOf' in schema:
|
if "anyOf" in schema:
|
||||||
for sub_schema in schema["anyOf"]:
|
for sub_schema in schema["anyOf"]:
|
||||||
_recursive_set_additional_properties_false(sub_schema)
|
_recursive_set_additional_properties_false(sub_schema)
|
||||||
if "properties" in schema:
|
if "properties" in schema:
|
||||||
|
@ -497,6 +497,61 @@ def test_convert_to_openai_function_nested_strict() -> None:
|
|||||||
assert actual == expected
|
assert actual == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_convert_to_openai_function_strict_union_type() -> None:
|
||||||
|
class NestedA(BaseModel):
|
||||||
|
foo: str
|
||||||
|
|
||||||
|
class NestedB(BaseModel):
|
||||||
|
bar: int
|
||||||
|
|
||||||
|
class NestedC(BaseModel):
|
||||||
|
baz: bool
|
||||||
|
|
||||||
|
def my_function(my_arg: Union[NestedA, NestedB, NestedC]) -> None:
|
||||||
|
"""Dummy function."""
|
||||||
|
|
||||||
|
expected = {
|
||||||
|
"name": "my_function",
|
||||||
|
"description": "Dummy function.",
|
||||||
|
"parameters": {
|
||||||
|
"properties": {
|
||||||
|
"my_arg": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"properties": {"foo": {"title": "Foo", "type": "string"}},
|
||||||
|
"required": ["foo"],
|
||||||
|
"title": "NestedA",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": False,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {"bar": {"title": "Bar", "type": "integer"}},
|
||||||
|
"required": ["bar"],
|
||||||
|
"title": "NestedB",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": False,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"properties": {"baz": {"title": "Baz", "type": "boolean"}},
|
||||||
|
"required": ["baz"],
|
||||||
|
"title": "NestedC",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": False,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["my_arg"],
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": False,
|
||||||
|
},
|
||||||
|
"strict": True,
|
||||||
|
}
|
||||||
|
|
||||||
|
actual = convert_to_openai_function(my_function, strict=True)
|
||||||
|
assert actual == expected, str(actual)
|
||||||
|
|
||||||
|
|
||||||
json_schema_no_description_no_params = {
|
json_schema_no_description_no_params = {
|
||||||
"title": "dummy_function",
|
"title": "dummy_function",
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user