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:
Source code in lazyllm/hook.py
| def on_error(self, exc):
"""异常处理钩子,在被监控函数执行抛出异常时调用。
默认实现为空操作,子类可以按需覆盖,用于记录错误状态、补充诊断信息或执行清理逻辑。
Args:
exc: 被监控函数抛出的异常对象。
"""
return None
|
post_hook(output)
abstractmethod
后置钩子方法,在被监控函数执行后调用。
这是一个抽象方法,需要在子类中实现。
Parameters:
Source code in lazyllm/hook.py
| @abstractmethod
def post_hook(self, output):
"""后置钩子方法,在被监控函数执行后调用。
这是一个抽象方法,需要在子类中实现。
Args:
output: 被监控函数的返回值。
"""
pass
|
pre_hook(*args, **kwargs)
abstractmethod
前置钩子方法,在被监控函数执行前调用。
这是一个抽象方法,需要在子类中实现。
Parameters:
Source code in lazyllm/hook.py
| @abstractmethod
def pre_hook(self, *args, **kwargs):
"""前置钩子方法,在被监控函数执行前调用。
这是一个抽象方法,需要在子类中实现。
Args:
*args: 传递给被监控函数的位置参数。
**kwargs: 传递给被监控函数的关键字参数。
"""
pass
|