浏览代码

feat: support Literal type in Tools

Su YR 8 月之前
父节点
当前提交
0525dd2bb5
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. 5 1
      backend/utils/schemas.py

+ 5 - 1
backend/utils/schemas.py

@@ -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_}")