Before/After Kickoff 훅: 크루 실행 전후에 코드 끼워 넣기

Before/After Kickoff 훅: 크루 실행 전후에 코드 끼워 넣기

CrewAI는 크루의 kickoff 전후에 특정 코드를 실행할 수 있는 훅을 제공합니다. kickoff가 시작되기 전에 입력을 전처리하거나, 끝난 뒤 결과를 후처리할 때 특히 유용하죠. 이 글에서는 @before_kickoff@after_kickoff 데코레이터로 크루 실행의 생명주기에 개입하는 기본 방법을 살펴볼게요.

출처: 공식문서

본문

Before Kickoff 훅

before kickoff 훅은 크루가 작업을 시작하기 전에 실행됩니다. 입력 딕셔너리를 받아서 크루에 넘기기 전에 수정할 수 있어요. 환경을 설정하거나, 필요한 데이터를 로드하거나, 입력을 전처리하는 용도로 씁니다.

from crewai import CrewBase
from crewai.project import before_kickoff

@CrewBase
class MyCrew:
    @before_kickoff
    def prepare_data(self, inputs):
        # 입력 전처리 또는 수정
        inputs['processed'] = True
        return inputs

# ...

여기서 prepare_data 함수는 inputs에 키-값 쌍을 추가해 입력이 처리되었음을 표시합니다.

After Kickoff 훅

after kickoff 훅은 크루가 작업을 모두 마친 뒤 실행됩니다. 크루 실행의 출력을 담은 result 객체를 받는데, 로깅이나 데이터 변환, 추가 분석 같은 후처리에 이상적이에요.

from crewai import CrewBase
from crewai.project import after_kickoff

@CrewBase
class MyCrew:
    @after_kickoff
    def log_results(self, result):
        # 결과 로깅 또는 수정
        print("Crew execution completed with result:", result)
        return result

# ...

log_results 함수는 크루 실행 결과를 단순히 출력합니다. 여기에 알림 전송이나 다른 서비스와의 연동 같은 더 복잡한 동작을 붙일 수 있어요.

두 훅 함께 사용하기

두 훅을 함께 쓰면 크루 실행의 완결된 설정(Setup)과 정리(Teardown) 흐름을 만들 수 있습니다. 관심사를 분리해 코드 구조를 깔끔하게 유지하고, CrewAI 구현의 모듈성을 높이는 데 도움이 돼요.

결론

before/after kickoff 훅은 크루 실행의 생명주기와 상호작용할 수 있는 강력한 방법입니다. 이 훅을 이해하고 활용하면 AI 에이전트의 견고성과 유연성을 크게 높일 수 있어요.

더 알아보기