개요
Ai agent 설계를 해보았고, 엔지니어링을 위한 개념을 들어가 볼 것입니다.
: 기존의 단순 LLM 호출과 AI Agent의 가장 큰 차이는 ‘ 스스로 판단하고 외부 세계와 상호작용할 수있는가’입니다.
AI Agent는 크게 4가지 레이어로 구성할 수 있습니다
AI Agent의 구성 요소
Tool / Capability (도구 및 능력)일반적인 LLM 호출은 입력을 받아 텍스트를 생성하는 데 중심이 있습니다. 반면 Agent는 외부 세계에 영향을 주는 행동을 수행할 수 있습니다. 최신 정보를 검색하거나, 파일을 읽거나, 데이터베이스를 조회하거나, 코드를 실행하는 일은 모델의 언어 생성만으로 완결되지 않습니다. 이때 실제 실행을 담당하는 것이 Tool입니다.
단순 LLM vs AI Agent (Tool Calling)
Tool Calling의 기본 흐름
사용자 요청
↓
LLM이 필요한 도구 판단
↓
도구 이름과 인자 생성
↓
런타임이 권한·입력 검증 후 도구 실행
↓
실행 결과(observation)를 LLM에 반환
↓
LLM이 다음 행동을 결정하거나 최종 답변 작성
주요 Capability의 의미
| Capability | 핵심 역할 | 실무 비유 |
|---|---|---|
| Web Search | 최신 인터넷 데이터 수집 | 실시간 구글링하는 리서처 |
| File Search / Retrieval | 특정 문서, 사내 위키, 백서 등 검색 (RAG) | 사내 도서관/문서고 전담 관리자 |
| Code Interpreter | 격리된 공간(Sandbox)에서 파이썬 코드 실행 | 검증용 가상 PC를 가진 데이터 분석가 |
| Computer Use / Browser | 클릭, 스크롤, 키보드 입력 등 GUI 직접 조작 | RPA(업무 자동화) 로봇 |
| Function Calling | REST API, 데이터베이스 조회, 결제 처리 | 백엔드 서버 엔드포인트 연결 |
| MCP (Model Context Protocol) | 다양한 데이터/도구를 표준화된 인터페이스로 통일 | 모든 기기를 연결하는 USB-C 포트 |
| Agents as Tools | 다른 에이전트 자체를 하나의 도구처럼 호출 | “김 대리한테 물어봐” 하고 팀원에게 외주 주기 |
A 실행 -> B 실행 -> C 실행처럼 결과와 관계없이 항상 정해진 순서대로 작동하는 자동화 파이프라인.A 실행 -> 결과 관찰 -> (결과가 이상하네?) -> B 대신 D 실행 -> 최종 답안 작성 처럼 결과에 따라 다음 행동을 LLM이 자율적으로 판단하여 반복하는 시스템.Execution Pattern (실행 패턴)
: 에이전트가 문제를 해결할 때 채택하는 사고 및 작업 흐름의 설계 방식입니다.
[Prompt Chaining] : A ──> B ──> C (직렬)
[Parallelization] : A ┬─> B ─┬─> 합침 (병렬)
└─> C ─┘
[ReAct] : 생각 ──> 행동(Tool) ──> 관찰 ──> (반복) ──> 완료
| 패턴 | 핵심 개념 | 적합한 상황 | 이해하기 쉬운 예 |
|---|---|---|---|
| Prompt Chaining | LLM 호출을 단계별로 연결 | 단계가 명확한 처리 | 초안 작성 → 요약 → 교정 |
| Routing | 입력을 분류해 경로 선택 | 요청 유형이 다양함 | 환불 문의와 기술 문의 분리 |
| Parallelization | 독립 작업을 동시에 수행 후 통합 | 여러 출처·독립 검토 | 세 사이트를 동시에 조사 |
| ReAct | 판단 → 행동 → 관찰 반복 | 결과에 따라 다음 행동 변경 | 검색 결과가 부족하면 재검색 |
| Plan-and-Execute | 먼저 계획을 만들고 순서대로 실행 | 긴 리서치·보고서·코드 작업 | 목차 작성 후 장별 조사 |
| Reflection / Evaluator | 결과를 평가하고 개선 | 품질이 중요한 생성 작업 | 코드 생성 → 테스트·리뷰 → 수정 |
| Orchestrator-Workers | 중앙 조정자가 하위 작업 분배 | 작업을 전문 단위로 나눌 때 | 파일별 수정 담당 배정 |
| Graph / State Machine | 상태와 전이를 명시적으로 관리 | 복구·승인·장기 실행 | 결제 승인 대기 후 재개 |
: Prompt Chaining은 여러 LLM 호출을 직렬로 연결하는 방식입니다. 첫 번째 호출의 결과가 두 번째 호출의 입력이 됩니다. 예컨대 고객 리뷰를 먼저 분류하고, 그 결과를 바탕으로 요약한 뒤, 마지막으로 답변 문안을 만드는 구조입니다.
장점은 흐름이 명확하고 테스트가 쉽다는 점입니다. 반면 중간 단계의 오류가 다음 단계로 전파될 수 있습니다. 따라서 단계 사이에 형식 검증과 품질 검사를 두는 것이 좋습니다.
Routing은 사용자의 입력을 분류한 뒤 적절한 처리 경로로 보내는 패턴입니다. “배송이 늦어요”는 배송 Agent로, “비밀번호를 바꾸고 싶어요”는 계정 Agent로 보내는 식입니다. Routing의 핵심은 분류 기준과 분류 실패 시의 기본 경로를 명확히 하는 것입니다.
Parallelization은 서로 의존하지 않는 작업을 동시에 실행합니다. 여러 웹 출처를 동시에 검색하면 전체 대기 시간을 줄일 수 있지만, 결과를 합칠 때 중복·충돌·출처 신뢰도 문제를 처리해야 합니다.
ReAct는 Reasoning과 Acting을 번갈아 수행하는 구조로 이해할 수 있습니다. 모델이 문제를 보고 행동을 선택하고, 도구 결과를 관찰한 뒤 다시 다음 행동을 선택합니다.
이 패턴은 정답을 한 번에 알 수 없는 문제에 유용합니다. 그러나 반복 횟수가 제한되지 않으면 비용과 실행 시간이 커지고, 도구를 끝없이 호출할 수 있습니다. 따라서 최대 반복 횟수, 시간 제한, 예산 제한, 중단 조건을 반드시 둬야 합니다.
질문 → 판단 → 도구 호출 → 결과 관찰 → 재판단 → 추가 호출 또는 답변
Plan-and-Execute는 실행 전에 전체 계획을 세우는 방식입니다. 긴 보고서를 작성할 때 먼저 질문을 하위 주제로 쪼개고, 각 주제에 필요한 자료와 순서를 결정한 뒤 실행합니다.
계획이 있으면 전체 목표와 진행 상황을 관리하기 쉽습니다. 다만 초기 계획이 틀렸을 때 고집스럽게 유지하면 비효율적일 수 있으므로, 실행 결과에 따라 계획을 수정하는 재계획 단계를 포함해야 합니다.
Reflection은 Agent가 만든 결과를 스스로 검토하고 개선하는 패턴입니다. 별도의 Evaluator가 기준에 따라 평가하도록 만들 수도 있습니다. 글이라면 사실성·논리성·문체를, 코드라면 테스트 통과·보안·변경 범위를 평가할 수 있습니다.
평가 기준이 모호하면 “더 좋게 고쳐라” 수준에 머물 수 있습니다. 따라서 평가 항목을 측정 가능한 형태로 정의하고, 개선 시도 횟수와 종료 조건을 정해야 합니다.
Orchestrator-Workers에서는 중앙 조정자가 업무를 나누고 여러 Worker에게 실행을 맡긴 뒤 결과를 합칩니다.
예를 들어 문서 승인 시스템은 작성 중 → 검토 중 → 수정 요청 → 승인 완료라는 상태를 가질 수 있습니다. 사람의 승인을 기다리거나 오류 이후 재개해야 하는 업무에서는 단순한 직렬 호출보다 상태 기반 설계가 안정적입니다.
Graph 또는 State Machine은 시스템의 상태와 전이를 명시적으로 표현합니다.
Agent Archetype (에이전트 페르소나/유형)
: 자주 쓰이는 Tool과 Execution Pattern을 결합하여 특정한 전문 직무 형태로 세팅해 둔 에이전트 유형들입니다.
┌─────────────────────────────────────────────────────────────┐
│ Agent Archetype │
│ ┌───────────────────────┐ ┌─────────────────────────┐ │
│ │ Tool / Capability │ + │ Execution Pattern │ │
│ │ (Web, Code, DB, ...) │ │ (ReAct, Reflection,...) │ │
│ └───────────────────────┘ └─────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
1) Researcher Agent (조사/리서치 에이전트)
Researcher Agent는 여러 출처를 조사하고, 내용을 비교·요약하며, 근거를 남기는 역할입니다. 단순히 검색 결과를 나열하는 것이 아니라 질문을 하위 문제로 나누고, 신뢰할 수 있는 자료를 선별하며, 상충되는 내용을 표시해야 합니다.
2) Code Interpreter / Data Analyst Agent (데이터 분석 에이전트)
Code Interpreter는 Agent에게 계산과 실행 능력을 부여하는 Capability입니다. Data Analyst Agent는 이 능력을 데이터 분석 업무에 맞게 구성한 Archetype이라고 볼 수 있습니다.
3) Coding Agent (코딩 에이전트)
Coding Agent는 Code Interpreter와 비슷해 보이지만 작업 대상이 다릅니다. Code Interpreter가 격리된 환경에서 계산이나 파일 처리를 수행한다면, Coding Agent는 실제 저장소의 코드를 읽고 수정하며 테스트합니다.
Code Interpreter와의 차이점
| 구분 | Code Interpreter Agent | Coding Agent |
|---|---|---|
| 목적 | 데이터 분석, 일회성 계산, 차트 생성 | 실제 소프트웨어 제품의 코드 수정 및 빌드 |
| 작업 공간 | 격리된 파이썬 가상 공간 (Sandbox) | 실제 프로젝트 코드베이스 (GitHub Repo) |
| 주요 도구 | python_exec, file_upload | file_read, file_edit, run_tests, git |
| 위험성 | 가상 공간의 메모리/시간 초과 정도 | 기존 소스코드 파손, 버그 유발, 종속성 꼬임 |
Explore(탐색) -> Plan(계획) -> Implement(구현) -> Test/Verify(검증)4) Orchestrator Agent (오케스트레이터 에이전트)
Orchestrator Agent는 직접 모든 일을 처리하기보다 요청을 분해하고, 적절한 Tool·Workflow·Agent에 작업을 배분한 뒤 결과를 합성합니다. 회사의 프로젝트 관리자나 관제센터에 비유할 수 있습니다.
Single Agent와 Multi-Agent의 관계
Single Agent와 Multi-Agent는 완전히 다른 원리라기보다 규모와 역할 분리의 차이입니다. 두 구조 모두 Tool, 실행 패턴, 상태 관리, 오류 처리가 필요합니다.
| 기준 | Single Agent | Multi-Agent |
|---|---|---|
| 구성 | 하나의 모델이 여러 도구 사용 | 여러 전문 Agent가 역할 분담 |
| 장점 | 단순한 구조, 낮은 통신 비용 | 전문화, 병렬 처리, 역할별 검증 |
| 단점 | 프롬프트와 책임이 복잡해짐 | 조정 비용, 통신 오류, 비용 증가 |
| 적합한 경우 | 도구가 적고 흐름이 짧은 업무 | 분야별 전문성이 필요하고 작업이 큰 업무 |
요약 및 마무리
