CrewAI Flow 입문: 여러 Crew를 제어 가능한 흐름으로 연결하기
2 min read
흐름이 "리서치 -> 작성 -> 검토 -> 발행"으로 커지면 단일 Crew만으로는 부족합니다.
Flow는 여러 Crew 실행 순서를 조율하는 관제탑입니다.
Flow가 해결하는 문제
- 다단계 상태 관리
- 조건 분기(통과 시 발행, 실패 시 재시도)
- 가시성과 유지보수성 향상
최소 Flow 예시
from pydantic import BaseModel
from crewai.flow.flow import Flow, start, listen, router
class BlogState(BaseModel):
topic: str = ""
draft: str = ""
word_count: int = 0
class BlogFlow(Flow[BlogState]):
@start()
def init_topic(self) -> str:
self.state.topic = "CrewAI for beginners"
return self.state.topic
@listen(init_topic)
def write_draft(self, topic: str) -> str:
result = "draft content..."
self.state.draft = result
self.state.word_count = len(result.split())
return result
@router(write_draft)
def quality_gate(self) -> str:
return "ok" if self.state.word_count > 100 else "retry"Flow 설계 팁
@listen메서드 하나는 한 가지 일만- 분기 로직은
@router에 모으기 - 상태는
BaseModel로 타입 명시, 맨 dict 지양
이렇게 해두면 6개월 뒤에 다시 봐도 고고학이 되지 않습니다.
언제 Flow를 써야 하나
- 작업 단계가 3개 초과
- 분기 조건이 명확
- 여러 Crew 협업이 필요
단순히 "리서치 + 보고서 작성"이라면 단일 Crew로 충분합니다.
다음 단계
흐름이 돌아가면 가장 많이 묻는 질문이 나옵니다. "Agent가 문맥을 기억하나요?"
다음 글에서 메모리와 지식 소스를 다룹니다.
👉 Memory와 Knowledge