"알아서 해줘" — 에이전트가 나온 이유
챗봇에게 "올해 1분기 매출 보고서를 분석해서 PPT 초안 만들어줘"라고 하면 어떻게 될까요?
일반 LLM은 이렇게 말합니다: "파일을 직접 보내주시겠어요?"
에이전트는 이렇게 합니다:
- 보고서 파일 시스템에서 검색
- PDF 파싱 도구 실행
- 수치 분석
- 슬라이드 구조 계획
- PPT 파일 생성
- 결과 보고
목표만 주면 스스로 계획하고 실행합니다.
LLM vs 에이전트
flowchart LR
subgraph LLM["일반 LLM (챗봇)"]
L1["입력"] --> L2["응답 생성"] --> L3["출력"]
end
subgraph AGENT["AI 에이전트"]
A1["목표"] --> A2["계획"]
A2 --> A3["도구 실행"]
A3 --> A4["결과 확인"]
A4 -->|"목표 미달성"| A2
A4 -->|"목표 달성"| A5["최종 결과"]
end
| 구분 | 일반 LLM | AI 에이전트 |
|---|---|---|
| 입력 | 질문/요청 | 목표 |
| 실행 | 단일 응답 | 다단계 루프 |
| 도구 사용 | 없음 | 검색·코드·API 등 |
| 기억 | 현재 대화만 | 단기+장기 메모리 |
| 자율성 | 낮음 | 높음 |
에이전트의 4가지 핵심 구성 요소
flowchart TB
subgraph AGENT["AI 에이전트"]
BRAIN["🧠 LLM\n(추론·계획·판단)"]
subgraph COMPONENTS["핵심 구성요소"]
T["🔧 도구 (Tools)\n검색, 코드 실행, API 호출"]
M["💾 메모리 (Memory)\n대화 기록, 사실, 경험"]
P["📋 계획 (Planning)\n목표 분해, 단계 설계"]
A["⚡ 행동 (Action)\n도구 실행, 환경과 상호작용"]
end
end
BRAIN <--> T
BRAIN <--> M
BRAIN <--> P
BRAIN <--> A
1. 도구 (Tools)
에이전트가 외부 세계와 상호작용하는 수단입니다.
| 도구 유형 | 예시 |
|---|---|
| 검색 | 웹 검색, 벡터 DB 검색 |
| 실행 | Python 코드 실행, 터미널 |
| API | 날씨, 주식, 소셜미디어 |
| 파일 | 읽기, 쓰기, 파싱 |
| 통신 | 이메일, 슬랙 메시지 |
2. 메모리 (Memory)
flowchart LR
subgraph MEM["메모리 유형"]
S["단기 메모리\n현재 대화·작업 컨텍스트\n(컨텍스트 윈도우)"]
L["장기 메모리\n벡터 DB에 저장된\n과거 경험·사실"]
E["에피소드 메모리\n이전 작업의 성공/실패\n경험 저장"]
end
3. 계획 (Planning)
복잡한 목표를 실행 가능한 단계로 분해합니다.
목표: "경쟁사 3곳의 가격 정책을 분석해서 보고서 작성"
계획:
1. 경쟁사 A 웹사이트 검색 및 가격 정보 수집
2. 경쟁사 B 웹사이트 검색 및 가격 정보 수집
3. 경쟁사 C 웹사이트 검색 및 가격 정보 수집
4. 수집된 데이터 비교 분석
5. 마크다운 보고서 작성
6. 결과 파일 저장
에이전트 실행 패턴: ReAct
에이전트의 가장 기본적인 실행 루프는 ReAct (Reason + Act) 패턴입니다.
flowchart TB
GOAL["목표 입력"]
subgraph LOOP["ReAct 루프"]
THINK["생각 (Thought)\n현재 상황 분석, 다음 행동 결정"]
ACT["행동 (Action)\n도구 선택 및 실행"]
OBS["관찰 (Observation)\n실행 결과 확인"]
THINK --> ACT --> OBS --> THINK
end
GOAL --> LOOP
OBS -->|"목표 달성"| END["최종 답변"]
에이전트 유형
단일 에이전트
flowchart LR
U["사용자"] --> A["에이전트"]
A --> T1["도구 1"]
A --> T2["도구 2"]
A --> T3["도구 3"]
A --> U
하나의 에이전트가 모든 도구를 직접 사용합니다. 단순한 작업에 적합합니다.
멀티 에이전트
flowchart TB
U["사용자"] --> OR["오케스트레이터\n(조율 에이전트)"]
OR --> A1["리서치 에이전트"]
OR --> A2["분석 에이전트"]
OR --> A3["작성 에이전트"]
A1 & A2 & A3 --> OR
OR --> U
복잡한 작업을 역할별로 분리합니다. 각 에이전트가 전문화됩니다.
에이전트가 적합한 상황
flowchart TD
Q["이 작업에 에이전트가 필요한가?"]
Q --> C1{"여러 단계가\n필요한가?"}
Q --> C2{"외부 도구가\n필요한가?"}
Q --> C3{"실행 결과에 따라\n방향이 달라지는가?"}
C1 & C2 & C3 -->|"예"| YES["✅ 에이전트 적합"]
C1 & C2 & C3 -->|"아니오"| NO["⚠️ 일반 LLM으로 충분"]
에이전트가 필요한 경우:
- 웹 리서치 후 보고서 작성
- 코드 작성 → 실행 → 디버깅 반복
- 여러 API를 조합하는 자동화 워크플로우
- 조건에 따라 다른 경로를 선택하는 처리
에이전트가 불필요한 경우:
- 단순 질의응답
- 텍스트 요약/번역
- 형식이 고정된 데이터 변환
에이전트의 한계와 주의사항
flowchart LR
subgraph RISKS["주의사항"]
R1["🔄 루프 위험\n종료 조건 없으면\n무한 반복 가능"]
R2["💰 비용 폭증\n다단계 실행 =\n토큰 N배 사용"]
R3["🎯 목표 이탈\n중간 단계에서\n본래 목표 잃을 수 있음"]
R4["🔒 보안\n실제 시스템 실행 권한\n최소 원칙 적용 필수"]
end
정리
| 개념 | 내용 |
|---|---|
| AI 에이전트 | 목표를 받아 스스로 계획·실행하는 LLM 시스템 |
| 도구 | 에이전트가 외부와 상호작용하는 수단 |
| 메모리 | 단기(컨텍스트)·장기(벡터 DB) 정보 저장 |
| ReAct | 생각→행동→관찰 반복 루프 패턴 |
| 멀티 에이전트 | 역할별로 분리된 에이전트 협업 구조 |
다음 편에서는 LangChain/LangGraph 기초 — 파이썬으로 에이전트를 실제로 구현하는 프레임워크를 배웁니다.