77 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from typing import Generic
from ..typing import FUNCTION_CALL_FUNC
from .params import P
from .register import F
class Caller(Generic[P]):
def __init__(self, name: str | None = None, description: str | None = None):
self._name = name
self._description = description
self._parameters: dict[str, P] = {}
self.func: FUNCTION_CALL_FUNC | None = None
def params(self, **kwargs: P) -> "Caller":
"""设置多个函数参数
Args:
**kwargs: 参数字典
Returns:
Caller: Caller对象
"""
self._parameters.update(kwargs)
return self
def param(self, name: str, param: P) -> "Caller":
"""设置一个函数参数
Args:
name (str): 参数名
param (P): 参数对象
Returns:
Caller: Caller对象
"""
self._parameters[name] = param
return self
def name(self, name: str) -> "Caller":
"""设置函数名称
Args:
name (str): 函数名称
Returns:
Caller: Caller对象
"""
self._name = name
return self
def description(self, description: str) -> "Caller":
"""设置函数描述
Args:
description (str): 函数描述
Returns:
Caller: Caller对象
"""
self._description = description
return self
def __call__(self, func: F) -> F:
self.func = func
return func
def on_function_call(name: str | None = None, description: str | None = None) -> Caller:
"""返回一个Caller类可用于装饰一个函数使其注册为一个可被AI调用的function call函数
Args:
description: 函数描述若为None则从函数的docstring中获取
Returns:
Caller: Caller对象
"""
return Caller(name=name, description=description)