跳到主要内容

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 - 带有注解参数的函数

返回:

一个在调用原始函数之前加载参数的函数