Skip to content

钩子

lazyllm.hook.LazyLLMHook

Bases: ABC

LazyLLM 提供的钩子系统抽象基类,用于在函数或方法执行前后插入自定义逻辑。

此类是一个抽象基类(ABC),定义了钩子系统的基本接口。通过继承此类并实现其抽象方法,可以创建自定义的钩子来监控、记录或修改函数执行过程。

Parameters:

  • obj

    要监控的对象(通常是函数或方法)。此对象会被存储在钩子实例中,供其他方法使用。

注意: 此类是抽象基类,不能直接实例化。必须继承此类并实现所有抽象方法才能使用。

Source code in lazyllm/hook.py
class LazyLLMHook(ABC):
    """LazyLLM 提供的钩子系统抽象基类,用于在函数或方法执行前后插入自定义逻辑。

此类是一个抽象基类(ABC),定义了钩子系统的基本接口。通过继承此类并实现其抽象方法,可以创建自定义的钩子来监控、记录或修改函数执行过程。

Args:
    obj: 要监控的对象(通常是函数或方法)。此对象会被存储在钩子实例中,供其他方法使用。

**注意**: 此类是抽象基类,不能直接实例化。必须继承此类并实现所有抽象方法才能使用。
"""

    @abstractmethod
    def __init__(self, obj):
        pass

    @abstractmethod
    def pre_hook(self, *args, **kwargs):
        """前置钩子方法,在被监控函数执行前调用。

这是一个抽象方法,需要在子类中实现。

Args:
    *args: 传递给被监控函数的位置参数。
    **kwargs: 传递给被监控函数的关键字参数。
"""
        pass

    @abstractmethod
    def post_hook(self, output):
        """后置钩子方法,在被监控函数执行后调用。

这是一个抽象方法,需要在子类中实现。

Args:
    output: 被监控函数的返回值。
"""
        pass

    def report():  # This is not an abstract method, but it is required to be implemented in subclasses.
        """生成钩子的执行报告。

这是一个抽象方法,需要在子类中实现。
"""
        raise NotImplementedError

post_hook(output) abstractmethod

后置钩子方法,在被监控函数执行后调用。

这是一个抽象方法,需要在子类中实现。

Parameters:

  • output

    被监控函数的返回值。

Source code in lazyllm/hook.py
    @abstractmethod
    def post_hook(self, output):
        """后置钩子方法,在被监控函数执行后调用。

这是一个抽象方法,需要在子类中实现。

Args:
    output: 被监控函数的返回值。
"""
        pass

pre_hook(*args, **kwargs) abstractmethod

前置钩子方法,在被监控函数执行前调用。

这是一个抽象方法,需要在子类中实现。

Parameters:

  • *args

    传递给被监控函数的位置参数。

  • **kwargs

    传递给被监控函数的关键字参数。

Source code in lazyllm/hook.py
    @abstractmethod
    def pre_hook(self, *args, **kwargs):
        """前置钩子方法,在被监控函数执行前调用。

这是一个抽象方法,需要在子类中实现。

Args:
    *args: 传递给被监控函数的位置参数。
    **kwargs: 传递给被监控函数的关键字参数。
"""
        pass

report()

生成钩子的执行报告。

这是一个抽象方法,需要在子类中实现。

Source code in lazyllm/hook.py
    def report():  # This is not an abstract method, but it is required to be implemented in subclasses.
        """生成钩子的执行报告。

这是一个抽象方法,需要在子类中实现。
"""
        raise NotImplementedError