Agent 설계 패턴

다섯 가지 Workflow 패턴

업계에서 검증된 다섯 가지 Workflow 편성 패턴입니다. 단순한 것부터 복잡한 순서로, 각각 특정 유형의 문제를 해결합니다. 가장 복잡한 패턴이 아닌 가장 적합한 패턴을 추구합니다.

Pattern 1
1
Prompt Chaining
프롬프트 체인
큰 작업을 여러 순차적 단계로 분해하여 이전 단계의 출력이 다음 단계의 입력이 됩니다. 각 단계는 독립적인 LLM 호출로 한 가지 일에 집중합니다. 단계 사이에 품질 게이트(programmatic gate)를 삽입하여 검사를 통과한 결과만 다음 단계로 진행합니다.
입력
LLM Step 1
Gate
LLM Step 2
출력
적용 시나리오
작업이 자연스럽게 여러 고정 단계로 분해될 수 있을 때; 중간 단계에서 품질 검사가 필요할 때; 정확도를 위해 지연 시간을 희생할 수 있을 때.
실제 예시: 마케팅 카피 생성(Step 1) → 목표 언어로 번역(Step 2) → 특정 플랫폼 형식으로 포맷(Step 3). 중간 Gate: Step 1 출력에 브랜드 키워드가 포함되었는지 확인.
Pattern 2
2
Routing
라우팅
먼저 입력을 분류한 후 적합한 전문 처리 분기로 라우팅합니다. 각 분기는 독립적인 Prompt, 모델, 심지어 도구 설정을 가질 수 있습니다. 핵심 가치: 관심사 분리 — 각 분기는 한 가지 유형의 입력만 처리합니다.
입력
분류기
처리 분기 A
처리 분기 B
처리 분기 C
적용 시나리오
입력 유형이 다양하고 유형별로 완전히 다른 처리 로직이 필요할 때; 비용 최적화가 필요할 때(단순 질문은 저렴한 모델, 복잡한 질문은 강력한 모델).
실제 예시: 고객 서비스 시스템: 단순 FAQ는 Haiku(빠르고 저렴), 환불 관련은 Sonnet + 주문 도구, 기술 오류는 Sonnet + 로그 쿼리. 분류기 하나가 경로를 결정하여 비용과 품질의 최적 균형을 달성합니다.
Pattern 3
3
Parallelization
병렬화
여러 LLM 호출을 동시에 실행하고 결과를 집계합니다. 두 가지 서브 모드:
Sectioning(분할 병렬): 작업을 독립적인 서브태스크로 분할하여 병렬 처리 후 합칩니다.
Voting(다중 투표): 동일한 작업을 같은 Prompt로 여러 번 실행하여 다수/최적 결과를 선택합니다.
입력
LLM A
LLM B
LLM C
집계
출력
적용 시나리오
서브태스크 간 의존 관계가 없을 때; 속도 향상이 필요할 때(병렬이 직렬보다 빠름); 신뢰도 향상이 필요할 때(다중 투표로 무작위성 감소).
실제 예시 – Sectioning: 코드 리뷰에서 하나의 LLM은 보안 취약점을, 하나는 성능 문제를, 하나는 코드 스타일을 검사하고 최종 결과를 합칩니다.
실제 예시 – Voting: 콘텐츠 심사에서 동일한 텍스트를 LLM 3개에 보내 각각 위반 여부를 판단하고 다수결로 최종 결정을 내립니다.
Pattern 4
4
Orchestrator-Workers
오케스트레이터-워커
중앙 LLM(오케스트레이터)이 동적으로 작업을 분해하여 여러 워커 LLM에 할당합니다. Parallelization과의 차이: 서브태스크는 오케스트레이터가 실행 시 동적으로 결정하며 코드에 사전 정의되지 않습니다. Agent에 가장 가까운 Workflow 패턴입니다.
입력
오케스트레이터 LLM
Worker 1
Worker 2
Worker N...
병합
적용 시나리오
서브태스크를 미리 알 수 없을 때(입력에 따라 동적으로 결정해야 함); 여러 파일/리소스에 대한 병렬 작업이 필요할 때.
실제 예시: 코드 변경 요청 "프로젝트에 i18n 지원 추가". 오케스트레이터가 코드베이스를 분석하고 동적으로 결정: Worker 1은 Button 컴포넌트 수정, Worker 2는 Header 수정, Worker 3은 언어 파일 생성. 요청에 따라 Worker의 수와 유형이 달라집니다.
Pattern 5
5
Evaluator-Optimizer
평가자-최적화기
하나의 LLM이 생성을 담당하고 다른 LLM이 평가를 담당하여 반복 루프를 형성합니다. 생성자는 평가자의 피드백에 따라 출력을 지속적으로 개선하고 평가자가 만족하거나 반복 한도에 도달할 때까지 계속됩니다.
입력
생성자 LLM
평가자 LLM
출력
점선 박스 = 기준을 충족할 때까지 반복
적용 시나리오
명확한 품질 평가 기준이 있을 때; 반복 개선이 출력 품질을 크게 향상시킬 때; 단일 생성으로는 요구 사항을 충족하기 어려울 때.
실제 예시: 문학 번역에서 생성자가 초벌 번역을 하고, 평가자가 신뢰성·유창성·우아함과 스타일 일관성을 검사하여 구체적인 수정 의견을 제시하면 생성자가 개선합니다. 2-3회 반복 후 최종본을 출력합니다. 반복마다 번역 품질이 향상됩니다.
직접 해보기: 스케줄러 시뮬레이터
위 버튼을 클릭하여 각 패턴의 데이터 흐름 애니메이션을 확인하세요
요약
다섯 가지 패턴 한눈에 보기
패턴 핵심 아이디어 대표 사용 사례 복잡도
Prompt Chaining 순차 연결, 단계별 처리 카피라이팅 파이프라인 낮음
Routing 분류 기반 라우팅, 전문 처리 지능형 고객 서비스 라우팅 낮음
Parallelization 병렬 처리, 결과 집계 다차원 코드 리뷰 중간
Orchestrator-Workers 동적 분해, 분산 실행 파일 간 코드 수정 중상
Evaluator-Optimizer 생성-평가, 반복 개선 고품질 번역 중간
"Start with simple prompts, optimize them with comprehensive evaluation, and add multi-step agentic systems only when simpler solutions fall short."
가장 복잡한 패턴이 아닌 가장 적합한 패턴을 추구하세요. 가장 단순한 Prompt Chaining부터 시작하고, 단순한 방법이 부족하다는 것을 확인했을 때만 더 복잡한 패턴으로 업그레이드하세요. 복잡도를 한 층 추가할 때마다 스스로 물어보세요: 이 복잡도가 가져오는 이점이 추가 지연, 비용, 디버깅 어려움을 감수할 만한 가치가 있나요?