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 설계 팁

  1. @listen 메서드 하나는 한 가지 일만
  2. 분기 로직은 @router에 모으기
  3. 상태는 BaseModel로 타입 명시, 맨 dict 지양

이렇게 해두면 6개월 뒤에 다시 봐도 고고학이 되지 않습니다.

언제 Flow를 써야 하나

  • 작업 단계가 3개 초과
  • 분기 조건이 명확
  • 여러 Crew 협업이 필요

단순히 "리서치 + 보고서 작성"이라면 단일 Crew로 충분합니다.

다음 단계

흐름이 돌아가면 가장 많이 묻는 질문이 나옵니다. "Agent가 문맥을 기억하나요?"
다음 글에서 메모리와 지식 소스를 다룹니다.
👉 Memory와 Knowledge