跳转到主要内容
CrewAI 提供了钩子,允许你在 crew 启动前后执行代码。这些钩子对于预处理输入或后处理结果非常有用。

Kickoff 前钩子

kickoff 前钩子在 crew 开始任务之前执行。它接收输入字典,并可以在将其传递给 crew 之前对其进行修改。你可以使用此钩子设置环境、加载必要数据或预处理输入。这在输入数据可能需要增强或验证才能由 crew 处理的场景中非常有用。 以下是在 crew.py 中定义 kickoff 前函数的一个示例:
from crewai import CrewBase
from crewai.project import before_kickoff

@CrewBase
class MyCrew:
    @before_kickoff
    def prepare_data(self, inputs):
        # Preprocess or modify inputs
        inputs['processed'] = True
        return inputs

#...
在此示例中,prepare_data 函数通过添加一个新的键值对来修改输入,指示输入已处理。

Kickoff 后钩子

kickoff 后钩子在 crew 完成任务后执行。它接收结果对象,其中包含 crew 执行的输出。此钩子非常适合后处理结果,例如日志记录、数据转换或进一步分析。 以下是如何在 crew.py 中定义 kickoff 后函数:
from crewai import CrewBase
from crewai.project import after_kickoff

@CrewBase
class MyCrew:
    @after_kickoff
    def log_results(self, result):
        # Log or modify the results
        print("Crew execution completed with result:", result)
        return result

# ...
log_results 函数中,crew 执行的结果被简单地打印出来。你可以扩展此功能以执行更复杂的操作,例如发送通知或与其他服务集成。

同时使用两个钩子

这两个钩子可以一起使用,为 crew 的执行提供全面的设置和清理过程。它们在通过分离关注点和增强 CrewAI 实现的模块化来维护清晰的代码架构方面特别有用。

结论

CrewAI 中的 kickoff 前后钩子提供了与 crew 执行生命周期交互的强大方式。通过理解和利用这些钩子,你可以大大增强 AI 代理的健壮性和灵活性。