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: 要监控的对象(通常是函数或方法)。此对象会被存储在钩子实例中,供其他方法使用。

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

    @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 on_error(self, exc):
        """异常处理钩子,在被监控函数执行抛出异常时调用。

默认实现为空操作,子类可以按需覆盖,用于记录错误状态、补充诊断信息或执行清理逻辑。

Args:
    exc: 被监控函数抛出的异常对象。
"""
        return None

    def finalize(self):
        """执行 hook 生命周期的最终收尾逻辑。

该方法会在 hook 生命周期结束时调用,适合执行资源释放、收尾处理或最终上报。

这是推荐使用的最终阶段接口。为兼容旧实现,``report`` 仍然可用,并会被视为
``finalize`` 的历史别名。
"""
        raise NotImplementedError

finalize()

执行 hook 生命周期的最终收尾逻辑。

该方法会在 hook 生命周期结束时调用,适合执行资源释放、收尾处理或最终上报。

这是推荐使用的最终阶段接口。为兼容旧实现,report 仍然可用,并会被视为 finalize 的历史别名。

Source code in lazyllm/hook.py
    def finalize(self):
        """执行 hook 生命周期的最终收尾逻辑。

该方法会在 hook 生命周期结束时调用,适合执行资源释放、收尾处理或最终上报。

这是推荐使用的最终阶段接口。为兼容旧实现,``report`` 仍然可用,并会被视为
``finalize`` 的历史别名。
"""
        raise NotImplementedError

on_error(exc)

异常处理钩子,在被监控函数执行抛出异常时调用。

默认实现为空操作,子类可以按需覆盖,用于记录错误状态、补充诊断信息或执行清理逻辑。

Parameters:

  • exc

    被监控函数抛出的异常对象。

Source code in lazyllm/hook.py
    def on_error(self, exc):
        """异常处理钩子,在被监控函数执行抛出异常时调用。

默认实现为空操作,子类可以按需覆盖,用于记录错误状态、补充诊断信息或执行清理逻辑。

Args:
    exc: 被监控函数抛出的异常对象。
"""
        return None

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