feat: support Literal type in Tools

This commit is contained in:
Su YR 2024-08-28 15:16:56 +08:00 committed by GitHub
parent f4df49e600
commit 0525dd2bb5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,7 @@
from ast import literal_eval
from pydantic import BaseModel, Field, create_model from pydantic import BaseModel, Field, create_model
from typing import Any, Optional, Type from typing import Any, Optional, Type, Literal
def json_schema_to_model(tool_dict: dict[str, Any]) -> Type[BaseModel]: def json_schema_to_model(tool_dict: dict[str, Any]) -> Type[BaseModel]:
@ -100,5 +102,7 @@ def json_schema_to_pydantic_type(json_schema: dict[str, Any]) -> Any:
return dict return dict
elif type_ == "null": elif type_ == "null":
return Optional[Any] # Use Optional[Any] for nullable fields return Optional[Any] # Use Optional[Any] for nullable fields
elif type_ is "literal":
return Literal[literal_eval(json_schema.get("enum"))]
else: else:
raise ValueError(f"Unsupported JSON schema type: {type_}") raise ValueError(f"Unsupported JSON schema type: {type_}")