2026년 5월 11일 작성

Agentic System - LLM과 Tool로 구성된 System의 분류 체계

agentic system은 LLM과 tool로 구성된 system을 통칭하며, 흐름이 code에 사전 정의되면 workflow, LLM이 매 turn 행동을 결정하면 agent로 구분되고, 필요한 만큼만 자율성을 올리는 것이 설계의 원칙입니다.

Agentic System

  • agentic system은 LLM과 tool이 결합되어 사용자 task를 수행하는 system 전체를 가리키는 umbrella term(포괄 용어)입니다.
    • Anthropic이 Building effective agents 글에서 도입한 용어로, LangChain을 비롯한 주요 framework가 동일한 분류를 채택했습니다.
    • 흐름 제어의 주체가 누구인지에 따라 다시 workflow와 agent로 나뉩니다.
  • agentic system이라는 상위 용어가 따로 존재하는 이유는 “agent”라는 단어가 넓은 의미와 좁은 의미로 모두 쓰여 혼란이 발생하기 때문입니다.
    • 넓은 의미의 agent는 환경을 인식하고 목표를 향해 행동하는 system 일반을 가리키며, 이 정의로는 workflow도 agent의 한 형태입니다.
    • Anthropic은 분류의 명확성을 위해 자율성이 높은 system에만 좁은 의미의 “agent”라는 이름을 붙이고, 넓은 의미의 system 전체는 “agentic system”으로 분리해 부릅니다.
    • 이 문서에서 “agent”는 별다른 수식이 없으면 좁은 의미의 agent, 즉 LLM이 자신의 process를 동적으로 결정하는 system을 가리킵니다.
flowchart TB
    agentic_system[Agentic System] --> augmented[Augmented LLM]
    agentic_system --> workflow[Workflow]
    agentic_system --> agent[Agent]
    workflow --> prompt_chain[Prompt Chaining]
    workflow --> routing[Routing]
    workflow --> parallel[Parallelization]
    workflow --> orchestrator[Orchestrator-Workers]
    workflow --> evaluator[Evaluator-Optimizer]
    agent --> agent_loop[Agent Loop]

Autonomy Spectrum

  • agentic system은 단일 LLM 호출에서부터 완전 자율 agent까지 연속적인 autonomy spectrum(자율성 spectrum) 위에 놓입니다.
    • augmented LLM은 단발 호출에 retrieval, tool, memory를 더한 가장 단순한 형태입니다.
    • workflow는 여러 LLM 호출을 사전 정의된 code 경로로 묶어 자율성을 제한적으로 허용합니다.
    • agent는 LLM이 매 turn 다음 행동을 결정하므로 자율성이 가장 높습니다.
flowchart LR
    single[Single LLM Call] --> augmented[Augmented LLM]
    augmented --> workflow[Workflow]
    workflow --> agent[Agent]
  • 자율성을 올리면 유연성은 커지지만 예측 가능성과 비용 통제력은 떨어집니다.
    • workflow는 동일 입력에 대해 동일한 경로로 작동하므로 latency와 비용이 예측 가능합니다.
    • agent는 LLM의 판단에 따라 경로가 달라지므로 자율성이 높은 대신 token 비용과 오류 누적 위험이 커집니다.
  • 설계의 첫 원칙은 필요한 만큼만 자율성을 올리는 것입니다.
    • 단발 호출로 충분하면 augmented LLM에서 멈추고, workflow로 충분하면 agent를 쓰지 않습니다.
    • 높은 자율성은 task가 사전에 분해되지 않거나 단계 수를 예측할 수 없을 때만 도입할 가치가 있습니다.

구성 요소

  • agentic system은 augmented LLM이라는 building block을 어떻게 연결하느냐에 따라 workflow 또는 agent로 갈립니다.
    • augmented LLM은 단일 LLM 호출에 retrieval, tool, memory를 더한 최소 단위이며, workflow와 agent 모두 이 단위의 조합으로 구성됩니다.
    • workflow는 augmented LLM 호출을 code가 정의한 경로로 연결하고, agent는 LLM 자신이 매 turn 다음 호출을 결정하도록 둡니다.

Augmented LLM

  • augmented LLM은 단일 LLM 호출에 retrieval, tool, memory를 결합한 building block입니다.
    • 모든 workflow와 agent는 augmented LLM을 기본 단위로 조합한 구조이며, 단독으로도 많은 task를 해결할 수 있습니다.
    • retrieval은 외부 지식을 호출 시점에 가져와 prompt에 주입하고, tool은 외부 system과의 상호 작용을 가능하게 하며, memory는 여러 호출에 걸친 상태를 유지합니다.
flowchart LR
    input[Input] --> llm[LLM]
    retrieval[Retrieval] --> llm
    tools[Tools] --> llm
    memory[Memory] --> llm
    llm --> output[Output]
  • augmented LLM은 workflow와 agent의 공통 기반이지만, 그 자체로 system이라기보다 building block에 가깝습니다.
    • 한 번의 호출이 끝나면 결과를 반환하고 종료하며, 호출 사이에 흐름 제어가 끼어들지 않습니다.
    • 흐름 제어가 들어가는 순간부터 augmented LLM을 어떻게 연결하느냐가 workflow와 agent의 분기점이 됩니다.

Workflow

  • workflow는 LLM 호출 순서와 결과 전달 방식이 code에 사전 정의된 system입니다.
    • 동일 입력에 대해 동일한 경로로 작동하므로 latency와 비용이 예측 가능하고, 결과의 일관성이 높습니다.
    • 단계와 분기가 사람에 의해 미리 설계되므로 task 구조가 안정적인 경우에 효율이 높습니다.
  • workflow는 LLM 호출을 어떻게 연결하느냐에 따라 prompt chaining, routing, parallelization, orchestrator-workers, evaluator-optimizer 같은 정형화된 pattern으로 분류됩니다.
Pattern 핵심 구조 적합한 상황
Prompt Chaining 순차 LLM 호출 + 중간 gate task를 고정된 sub-step으로 깔끔히 분해 가능
Routing classifier가 input을 분류 후 전용 path로 분기 category가 명확히 갈리고 각각 다르게 처리
Parallelization sectioning(독립 task 분할) 또는 voting(같은 task 다회 실행) latency 단축, 또는 다관점 검증
Orchestrator-Workers 중앙 LLM이 sub-task를 동적으로 분해해 worker에 위임 sub-task를 미리 예측할 수 없는 경우
Evaluator-Optimizer generator와 evaluator의 feedback loop 평가 기준이 명확하고 반복으로 품질이 향상

Agent

  • agent는 LLM이 매 turn 환경에서 ground truth를 받아 다음 행동을 결정하는 system입니다.
    • 사용자가 task를 지시하면 agent는 “생각 -> tool 호출 -> 관찰 -> 다시 생각”의 cycle을 LLM 스스로 멈출 때까지 반복합니다.
    • 단계 수, tool 호출 순서, 종료 시점이 모두 LLM의 판단으로 결정되며, code는 cycle을 돌리는 역할만 합니다.
  • agent의 핵심 mechanism은 agent loop입니다.
    • agent loop는 LLM 호출과 tool 실행을 번갈아 수행하는 while loop이며, LLM의 종료 신호로 자연 종료합니다.
    • agent loop의 폭주를 막기 위해 max iteration, token budget, timeout 같은 안전 장치가 추가로 필요합니다.
  • agent는 자율성이 높은 만큼 운영 layer에서 보강이 필요합니다.
    • context 부패, 조기 종료와 폭주, sub task의 context 오염, 검증 불가능성 같은 문제는 단순 loop만으로는 해결되지 않습니다.
    • file system, sandbox, context 관리, sub-agent, hook 같은 보조 구조를 묶어 agent를 안정적으로 운영하는 분야가 harness engineering입니다.

Pattern 선택

  • workflow와 agent는 흐름 제어의 주체가 code인지 LLM인지로 갈리며, 이 차이가 선택의 출발점입니다.

Workflow와 Agent의 분기점

  • 분기점은 결국 “어떤 LLM을 언제 부를지”를 누가 결정하는가의 차이입니다.
    • workflow는 task를 개발자가 미리 분해할 수 있을 때 적합하며, task 구조가 안정적일수록 효율이 높아집니다.
    • agent는 task의 단계와 경로를 사전에 예측할 수 없고, LLM이 환경에서 ground truth를 받아 다음 행동을 결정해야 하는 상황에 적합합니다.
구분 Workflow Agent
흐름 제어 code가 사전 정의 LLM이 매 turn 결정
경로 결정 시점 설계 시 실행 시
반복 횟수 code에 명시 LLM의 종료 신호
종료 조건 마지막 단계 완료 LLM이 end_turn 반환
동일 입력의 재현성 높음 낮음
비용 예측 가능성 높음 낮음
자율성 낮음 높음
적합한 task 사전 분해 가능 단계 수 예측 불가

선택 기준

  • task의 경로가 사전에 알려져 있는지가 가장 먼저 따져야 할 기준입니다.
    • 경로가 명확하면 workflow를 선택하고, 그중에서도 task 구조에 맞는 pattern을 고릅니다.
    • 경로가 task마다 다르고 단계 수를 예측할 수 없으면 agent를 선택합니다.
    • 경로도 결과도 모호하면 task 범위를 좁히거나 human-in-the-loop을 추가하는 편이 안전합니다.
flowchart TB
    q1{경로가<br>사전에 알려져 있는가?}
    q1 -->|아니오| agent[Agent]
    q1 -->|예| q2{task 구조는<br>어떤가?}
    q2 -->|순차 분해| prompt_chain[Prompt Chaining]
    q2 -->|category별 분기| routing[Routing]
    q2 -->|독립 sub-task로 분할| parallel[Parallelization]
    q2 -->|sub-task를 동적으로 생성| orchestrator[Orchestrator-Workers]
    q2 -->|평가-재생성 반복| evaluator[Evaluator-Optimizer]
  • 단순한 pattern이 충분하면 복잡한 pattern을 도입하지 않습니다.
    • 복잡한 framework보다 단순한 composable pattern이 실무에서 더 잘 작동한다는 것이 Anthropic의 결론입니다.
    • 같은 task를 prompt chaining으로 풀 수 있다면 routing이나 parallelization을 도입하지 않고, workflow로 풀 수 있다면 agent를 도입하지 않습니다.
  • 복잡성을 더하기 전에 측정 가능한 개선이 있는지 확인합니다.
    • latency, 정확도, 비용 중 어느 지표가 개선되는지 측정하지 못한다면 복잡성을 더하지 않습니다.
    • parallelization은 latency 개선이 측정될 때만, evaluator-optimizer는 반복으로 품질 향상이 측정될 때만 도입할 가치가 있습니다.

Hybrid Pattern

  • 실무에서는 workflow와 agent를 분리하지 않고 서로의 내부 단위로 결합해 조합하는 경우가 흔합니다.
    • 전체 흐름은 deterministic(결정적) workflow로 두고, 비결정성이 필요한 한 node에서만 agent를 호출하는 구조가 enterprise에서 가장 자주 등장하는 형태입니다.
    • 반대로 agent를 본체로 두고, agent가 사용하는 tool 중 하나가 내부적으로 workflow를 실행하는 형태도 가능합니다.
flowchart LR
    subgraph hybrid_a[Workflow 안에 Agent]
        direction LR
        wf_start[Input] --> wf_step1[Step 1]
        wf_step1 --> wf_agent[Agent Node]
        wf_agent --> wf_step3[Step 3]
        wf_step3 --> wf_end[Output]
    end
    subgraph hybrid_b[Agent 안에 Workflow]
        direction LR
        ag_loop[Agent Loop] --> ag_wf[Workflow Tool]
        ag_wf --> ag_loop
    end
  • hybrid pattern의 설계 원칙은 “경로가 알려진 부분은 deterministic하게, 모호한 부분만 agent에 위임”하는 것입니다.
    • 전체를 agent로 만들면 비용과 비결정성이 task 전체로 퍼지고, 전체를 workflow로 만들면 모호한 단계에서 막힙니다.
    • 모호한 부분이 좁게 한정되어 있다면 그 지점에만 agent를 두어, 자율성의 비용을 좁은 범위에 가둘 수 있습니다.
  • human-in-the-loop도 같은 원리로 추가할 수 있습니다.
    • agent가 확신이 낮거나 영향 범위가 큰 행동을 하기 직전에 사람의 승인을 받는 checkpoint를 둡니다.
    • 자동화의 속도와 사람의 판단력을 같은 흐름 안에 결합하는 방식입니다.

Reference


목차