Anthropic의 워크플로 패턴: 복잡함보다 단순함

Schluntz와 Zhang(Anthropic, 2024년 12월)은 워크플로(workflow, 미리 정의된 경로)와 에이전트(agent, 동적 도구 사용)를 구분합니다. 다섯 가지 워크플로 패턴이 대부분의 경우를 포괄합니다. 직접 API 호출부터 시작하세요. 단계를 예측할 수 없을 때만 에이전트를 추가합니다.

유형: Learn + Build 언어: Python (stdlib) 선수 학습: Phase 14 · 01 (에이전트 루프) 소요 시간: 약 60분

학습 목표

  • Anthropic의 다섯 가지 워크플로 패턴을 말할 수 있습니다. 프롬프트 체이닝(prompt chaining), 라우팅(routing), 병렬화(parallelization), 오케스트레이터-워커(orchestrator-workers), 평가자-최적화기(evaluator-optimizer)입니다.
  • 에이전트와 워크플로의 차이, 그리고 각각의 엔지니어링 비용을 설명합니다.
  • 언제 에이전트보다 워크플로를 고를지, 반대로 언제 워크플로보다 에이전트를 고를지 식별합니다.
  • 스크립트로 응답을 흉내 내는 LLM(scripted LLM)을 대상으로 다섯 패턴을 모두 표준 라이브러리(stdlib)로 구현합니다.

문제

팀들은 단일 함수 호출이면 충분한 문제에도 멀티 에이전트 프레임워크를 들고 옵니다. 비용은 실제입니다. 프레임워크는 프롬프트를 가리고, 제어 흐름을 숨기며, 이른 복잡성(premature complexity)을 부릅니다. Schluntz와 Zhang의 2024년 12월 글은 업계에서 가장 많이 인용되는 반론입니다. 단순하게 시작하고, 복잡성이 비용을 벌어들일 때만 추가하세요.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.Anthropic이 '워크플로'와 '에이전트'를 구분하는 핵심 차이는 무엇인가요?

2.Anthropic의 다섯 가지 워크플로 패턴은 무엇인가요?

0/2 답변 완료

개념

워크플로와 에이전트

  • 워크플로(Workflow). LLM과 도구가 미리 정의된 코드 경로를 통해 오케스트레이션됩니다. 그래프는 엔지니어가 소유합니다.
  • 에이전트(Agent). LLM이 자기 도구를 동적으로 지시하고 자기 단계를 선택합니다. 그래프는 모델이 소유합니다.

둘 다 쓰임새가 있습니다. 워크플로는 더 저렴하고, 빠르고, 디버그하기 쉽습니다. 에이전트는 개방형 문제를 풀 수 있게 하지만, 실패 양상을 추론하기 어렵게 만듭니다.

증강 LLM(Augmented LLM)

다섯 패턴의 기반은 하나입니다. 검색을 통한 정보 회수(search; retrieval), 행동을 수행하는 도구(tools; actions), 상태를 이어가는 메모리(memory; persistence)라는 세 가지 능력이 결합된 하나의 LLM입니다. 어떤 API 호출도 이 능력을 사용할 수 있습니다.

다섯 패턴

  1. 프롬프트 체이닝(Prompt chaining). 1번 호출의 출력이 2번 호출의 입력이 됩니다. 작업이 깨끗한 선형 분해를 가질 때 사용합니다. 단계 사이에 선택적 프로그램 게이트(programmatic gate)를 둘 수 있습니다.

  2. 라우팅(Routing). 분류기 LLM이 어떤 하위 LLM 또는 도구를 호출할지 고릅니다. 범주가 다른 입력이 서로 다른 처리를 필요로 할 때 사용합니다. 예를 들어 1차 지원, 환불, 버그, 영업 문의가 있습니다.

  3. 병렬화(Parallelization). N개의 LLM 호출을 동시에 실행하고 결과를 집계합니다. 두 형태가 있습니다. 섹셔닝(sectioning, 서로 다른 조각 처리)과 투표(voting, 같은 프롬프트를 N번 실행하고 다수결/종합)입니다.

  4. 오케스트레이터-워커(Orchestrator-workers). 오케스트레이터 LLM이 어떤 워커(역시 LLM)를 실행할지 동적으로 결정하고, 워커 출력들을 종합합니다. 에이전트 루프와 비슷하지만 오케스트레이터가 무한히 반복하지는 않습니다.

  5. 평가자-최적화기(Evaluator-optimizer). 한 LLM이 답을 제안하고, 다른 LLM이 평가합니다. 평가자가 통과시킬 때까지 반복합니다. Self-Refine(05강)을 일반화한 것입니다.

워크플로가 에이전트를 이기는 경우

  • 예측 가능한 작업. 단계를 열거할 수 있다면 그렇게 해야 합니다.
  • 비용 제약이 있는 작업. 워크플로는 단계 수가 제한됩니다. 에이전트는 소용돌이치며 길어질 수 있습니다.
  • 컴플라이언스 제약이 있는 작업. 감사자는 궤적에서 추론하는 대신 그래프를 읽고 싶어 합니다.

에이전트가 워크플로를 이기는 경우

  • 개방형 리서치. 다음 단계가 이전 단계의 반환값에 의존할 때입니다.
  • 가변 길이 작업. 몇 분에서 몇 시간 걸리는 작업이며 단계 수를 알 수 없을 때입니다.
  • 새로운 도메인. 아직 올바른 워크플로를 모를 때입니다. 먼저 탐색하고, 나중에 코드화하세요.

함께 따라오는 컨텍스트 엔지니어링

"Effective context engineering for AI agents"(Anthropic 2025)는 인접 분야를 형식화합니다. 200k 토큰의 컨텍스트 윈도우(context window)는 무한정 채워 넣는 컨테이너가 아니라 예산입니다. 무엇을 포함할지, 언제 압축할지, 언제 컨텍스트를 키울지를 다룹니다. 이 주제는 컨텍스트 압축(context compression) 강의에서 더 자세히 다룹니다. 이 커리큘럼의 재번호 매기기(renumber) 이전에는 Phase 14의 더 앞선 lesson 06에 배치되어 있었습니다.

만들어보기

code/main.pyScriptedLLM을 대상으로 다섯 워크플로 패턴을 모두 구현합니다.

  • prompt_chain(input, steps) - 순차 실행입니다.
  • route(input, classifier, handlers) - 분류 + 디스패치입니다.
  • parallel_vote(prompt, n, aggregator) - N번 실행하고 집계합니다.
  • orchestrator_workers(task, workers) - 오케스트레이터가 워커를 고릅니다.
  • evaluator_optimizer(task, proposer, evaluator, max_iter) - 통과할 때까지 반복합니다.

실행합니다.

python3 code/main.py

각 패턴이 자기 추적(trace)을 출력합니다. 패턴별 전체 코드 줄 수는 약 10-15줄입니다. 프레임워크의 비용은 수천 줄 단위로 측정됩니다.

사용해보기

  • 대부분의 작업에는 직접 API 호출을 사용하세요.
  • 패턴이 진짜로 지속 상태(durable state, LangGraph), 액터 모델(actor-model) 기반 동시성(AutoGen v0.4), 역할 템플릿(role templating, CrewAI)을 필요로 할 때만 프레임워크를 사용하세요.
  • Claude Code 하네스(harness) 형태를 직접 다시 만들지 않고 그대로 활용하고 싶다면 Claude Agent SDK를 선택하세요.

산출물 만들기

outputs/skill-workflow-picker.md는 주어진 작업 설명에 맞는 패턴을 고릅니다. 결정 근거와, 워크플로가 부족할 때 에이전트로 리팩터링하는 경로도 포함합니다.

연습문제

  1. 신뢰도 임계값(confidence threshold)이 있는 라우팅을 구현하세요. 임계값 아래면 사람에게 에스컬레이션합니다. 1차 지원 사용 사례에서는 임계값이 어디에 놓이나요?
  2. parallel_vote에 제한 시간(timeout)을 추가하세요. 한 호출이 멈추면 어떻게 되나요? 빠진 투표가 있을 때 어떻게 집계하나요?
  3. evaluator_optimizer를 다중 슬롯머신(bandit) 방식으로 바꿔보세요. 반복 사이에 상위 2개 출력을 유지해, 늦게 나온 좋은 결과가 늦게 나온 나쁜 결과에 덮어써지지 않게 합니다.
  4. 프롬프트 체이닝과 라우팅을 결합하세요. 라우터가 세 체인 중 하나를 고릅니다. 하나의 큰 프롬프트 대안과 토큰 비용을 비교하세요.
  5. 실제 프로덕션 기능 하나를 고르세요. 워크플로 그래프를 그립니다. 단계를 세어보세요. 정말 에이전트가 더 나을까요?

핵심 용어

용어흔한 설명실제 의미
워크플로(Workflow)"미리 정의된 흐름"LLM과 도구 호출로 이루어진 엔지니어 소유 그래프입니다.
에이전트(Agent)"자율 AI"모델 소유 그래프입니다. 도구 방향이 동적입니다.
증강 LLM(Augmented LLM)"도구가 붙은 LLM"LLM + 검색 + 도구 + 메모리입니다. 원자 단위입니다.
프롬프트 체이닝(Prompt chaining)"순차 호출"N번째 호출의 출력이 N+1번째 호출의 입력입니다.
라우팅(Routing)"분류기 디스패치"어떤 체인/모델이 입력을 처리할지 고릅니다.
병렬화(Parallelization)"팬아웃(Fan out)"N개의 호출을 동시에 실행하고 섹셔닝 또는 투표로 집계합니다.
오케스트레이터-워커(Orchestrator-workers)"디스패처 에이전트"오케스트레이터 LLM이 전문 LLM을 동적으로 고릅니다.
평가자-최적화기(Evaluator-optimizer)"제안자 + 심판"평가자가 통과시킬 때까지 반복합니다. Self-Refine의 일반화입니다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

workflow-picker

Pick the right pattern (prompt chain, router, parallel, orchestrator-workers, evaluator-optimizer, or full agent) for a given task and produce the minimal implementation.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.팀에 네 가지 알려진 범주(청구, 버그, 환불, 영업)를 가진 고객 지원 작업이 있습니다. 워크플로와 에이전트 중 무엇을 사용해야 하나요?

2.Anthropic의 프레임워크에 따르면 에이전트가 워크플로를 이기는 때는 언제인가요?

3.다섯 가지 워크플로 패턴 각각은 약 10-15줄의 코드로 구현할 수 있습니다. 이것은 무거운 프레임워크 사용 비용에 대해 무엇을 드러내나요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다