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 에이전트의 견고성과 유연성을 크게 높일 수 있어요.
더 알아보기
- Execution Hooks — 실행 중간 지점을 가로채는 훅의 전체 개요
- Step Hooks — 스텝 단위 훅
- Human-in-the-Loop — 사람 개입 지점