function_utils
get_typed_annotation
def get_typed_annotation(annotation: Any, globalns: Dict[str, Any]) -> Any
获取参数的类型注解。
参数:
annotation
- 参数的注解globalns
- 函数的全局命名空间
返回:
参数的类型注解
get_typed_signature
def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature
获取带有类型注释的函数的签名。
参数:
call
- 获取签名的函数
返回:
带有类型注释的函数签名
get_typed_return_annotation
def get_typed_return_annotation(call: Callable[..., Any]) -> Any
获取函数的返回注解。
参数:
call
- 获取返回注解的函数
返回:
函数的返回注解
get_param_annotations
def get_param_annotations(
typed_signature: inspect.Signature
) -> Dict[str, Union[Annotated[Type[Any], str], Type[Any]]]
获取函数参数的类型注解
参数:
typed_signature
- 带有类型注解的函数的签名
返回:
函数参数的类型注解字典
参数
class Parameters(BaseModel)
函数参数,如OpenAI API所定义
功能
class Function(BaseModel)
根据OpenAI API定义的函数
工具功能
class ToolFunction(BaseModel)
由OpenAI API定义的tool下的函数。
get_parameter_json_schema
def get_parameter_json_schema(
k: str, v: Any, default_values: Dict[str, Any]) -> JsonSchemaValue
获取由OpenAI API定义的参数的JSON模式
参数:
k
- 参数的名称v
- 参数的类型default_values
- 函数参数的默认值
返回:
参数的一个Pydanitc模型
get_required_params
def get_required_params(typed_signature: inspect.Signature) -> List[str]
获取函数的必需参数
参数:
signature
- 由inspect.signature返回的函数的签名
返回:
函数所需参数的列表
get_default_values
def get_default_values(typed_signature: inspect.Signature) -> Dict[str, Any]
获取函数参数的默认值
参数:
signature
- 函数签名,由inspect.signature返回。
返回:
函数参数的默认值字典
get_parameters
def get_parameters(required: List[str],
param_annotations: Dict[str, Union[Annotated[Type[Any],
str],
Type[Any]]],
default_values: Dict[str, Any]) -> Parameters
获取由OpenAI API定义的函数的参数
参数:
required
- 函数的必选参数hints
- 函数类型提示,由typing.get_type_hints返回
返回:
函数参数的Pydantic模型
get_missing_annotations
def get_missing_annotations(typed_signature: inspect.Signature,
required: List[str]) -> Tuple[Set[str], Set[str]]
获取函数的缺失注解
忽略具有默认值的参数,因为它们不需要被注释,但会记录警告。
参数:
typed_signature
- 带有类型注解的函数的签名required
- 函数的必需参数
返回:
一组缺少的函数注释
get_function_schema
def get_function_schema(f: Callable[..., Any],
*,
name: Optional[str] = None,
description: str) -> Dict[str, Any]
获取由OpenAI API定义的函数的JSON模式
参数:
f
- 获取JSON模式的函数name
- 函数的名称description
- 函数的描述
返回:
函数的JSON模式
引发:
TypeError
- 如果函数没有注释
示例:
def f(a: Annotated[str, "Parameter a"], b: int = 2, c: Annotated[float, "Parameter c"] = 0.1) -> None:
pass
get_function_schema(f, description="function f")
# {'type': 'function',
# 'function': {'description': 'function f',
# 'name': 'f',
# 'parameters': {'type': 'object',
# 'properties': {'a': {'type': 'str', 'description': 'Parameter a'},
# 'b': {'type': 'int', 'description': 'b'},
# 'c': {'type': 'float', 'description': 'Parameter c'}},
# 'required': ['a']}}}
get_load_param_if_needed_function
def get_load_param_if_needed_function(
t: Any
) -> Optional[Callable[[Dict[str, Any], Type[BaseModel]], BaseModel]]
获取一个函数来加载参数,如果它是一个Pydantic模型
参数:
t
- 参数的类型注解
返回:
如果参数是Pydantic模型,则加载该参数的函数,否则为None
如果需要加载基础模型
def load_basemodels_if_needed(func: Callable[..., Any]) -> Callable[..., Any]
如果参数是Pydantic模型,则使用装饰器加载函数的参数
参数:
func
- 带有注解参数的函数
返回:
一个在调用原始函数之前加载参数的函数