AI 에이전트 — 정의·패턴·프레임워크·자율성
AI 에이전트 — 정의·패턴·프레임워크·자율성
"에이전트" 라는 말이 여러 의미로 쓰여 혼란스러운 시점입니다. 스크립트 자동화도 에이전트라 부르고, LLM 이 도구를 호출하는 모양도 에이전트라 부릅니다.
1. 에이전트에 대한 이야기
전통적 AI 교과서 (Russell · Norvig "AI: A Modern Approach") 는 에이전트를 "환경을 인식하고 행동하는 무엇" 으로 정의합니다. LLM 시대의 에이전트는 그 위에서 더 좁아집니다.
LLM 에이전트의 일반적 모양:
관찰(Observation) → 추론(Reasoning) → 행동(Action) → 관찰 → ...
- 관찰 — 사용자 입력 · 도구 결과 · 환경 신호.
- 추론 — LLM 이 다음 행동을 결정.
- 행동 — 도구 호출 · 코드 실행 · 메시지 전송.
루프 종료 조건은 보통 "최종 답변" 출력 또는 단계 한도 도달.
2. 에이전트 vs 챗봇
- 챗봇 — 대화 한 턴이 입출력. 도구가 있어도 호출은 단순 한두 단계.
- 에이전트 — 여러 단계의 도구 호출 · 자기 평가 · 재계획을 거치는 작업 수행자.
경계는 점진적이고 실제 시스템은 두 모양이 섞입니다.
3. ReAct
Yao et al. (2022). "Thought → Action → Observation" 을 모델 출력 안에 명시적으로 두는 패턴. 도구 사용과 추론을 한 흐름에 엮습니다.
Thought: 사용자가 환율을 묻는다.
Action: search("USD KRW today")
Observation: 1378.5
Thought: 답을 정리한다.
Final Answer: 오늘 환율은 1,378.5 원이다.
Reflexion (Shinn et al. 2023) — 시도 → 결과 평가 → 자기 비판 → 재시도. 실패 후 자연어 피드백을 남겨 다음 시도에 반영.
Plan-and-Execute — 작업을 먼저 단계별 계획으로 나누고, 각 단계를 별도로 실행. 중간에 계획을 갱신할 수 있음 (LangChain Plan-and-Execute · BabyAGI 의 task list 모양).
Self-Critique · Self-Refine (Madaan et al. 2023) — 자기 출력에 자기가 비평을 더해 개선. CoT 와 결합.
4. Tool use · Function calling
도구 호출은 두 단계:
- 모델이 도구 시그니처를 보고 호출 인자 (JSON) 를 출력.
- 호출자 (애플리케이션) 가 실제 함수를 실행해 결과를 모델에 돌려줍니다.
OpenAI · Anthropic · Google · Mistral 모두 표준화된 형식을 가지고 있고 SDK 가 각 제공자의 모양에 맞춰 변환합니다. 도구 호출과 텍스트 응답이 같은 응답 안에 섞이는 형식이 흔합니다.
5. Memory
세션을 넘어 정보를 보존하는 자리. 단기 (대화 이력) · 장기 (외부 저장소) 로 나뉩니다. 장기 메모리는 보통 벡터 DB · KV · 관계형 DB 에 적었다가 필요할 때 검색·요약해 컨텍스트로 다시 넣습니다.
6. 멀티에이전트 프레임워크
| 프레임워크 | 출자 · 시기 | 특징 |
|---|---|---|
| LangChain · LangGraph | LangChain Inc., 2022~ | 가장 대중적. LangGraph 는 상태 그래프. |
| AutoGen | Microsoft Research, 2023 | 다중 에이전트 대화. 0.4 부터 큰 리팩터. |
| CrewAI | João Moura, 2024 | 역할 (role) 중심 협업. |
| Semantic Kernel | Microsoft, 2023 | C# · Python · Java. 플러그인 모델. |
| LlamaIndex | Jerry Liu, 2022~ | 문서 인덱싱 · RAG 중심. agent 모듈. |
| Haystack | deepset, 2020~ | 검색·NLP 파이프라인. |
| Smolagents | Hugging Face, 2024 | 코드 에이전트 중심 작은 프레임워크. |
| Google ADK | Google, 2024 | Vertex AI 통합 · 멀티에이전트. |
7. 단일 에이전트 vs 멀티에이전트
단일 에이전트는 단순하지만 컨텍스트 윈도가 빠르게 차고 책임이 모호. 멀티에이전트는 책임 분리 · 병렬성 · 컨텍스트 격리를 얻지만 메시지 디자인 · 디버깅이 어려워집니다.
이점:
- 컨텍스트 절약 — 각 서브에이전트가 자기 작업만.
- 병렬성 — 독립 작업 동시 진행.
- 역할 분리 — 검색 담당 · 작성 담당 · 검토 담당 분업.
비용:
- 조정 비용 — 메시지 구조 · 종료 조건 설계.
- 에러 전파 — 한 에이전트의 잘못이 다른 에이전트로 번짐.
- 디버깅 — 어디서 무엇이 어긋났는지 추적.
8. 자율성 수준
| 수준 | 설명 | 예 |
|---|---|---|
| Suggestion | 사람에게 제안만 | IDE 자동완성. |
| Approval | 행동 전 승인 | 결제 · 파일 삭제 승인 게이트. |
| Autonomous (제한적) | 정해진 도구·범위 안 자유 | 메일 분류·라벨링. |
| Autonomous (개방적) | 도구 추가 · 외부 호출 자유 | 연구 보조 · 스크립트 작성. |
자율성이 올라갈수록 보안 · 과금 · 실수의 영향이 커집니다. 권한 최소화 · 도구 화이트리스트 · 예산 한도가 함께 다뤄집니다.
9. 도구 권한 모델
- 읽기 / 쓰기 분리 — 읽기는 자동 허용, 쓰기는 승인.
- 도메인 화이트리스트 — 허용 URL · API 만.
- 예산 한도 — 토큰 · 금액 · 횟수 한도.
- 사이드 이펙트 격리 — 코드 실행은 컨테이너 · VM 안에서.
10. 평가의 어려움
Ground truth 부재 — 작업이 열려 있어 정답을 정의하기 어려움.
재현성 — 같은 입력에서도 비결정적 행동이 흔합니다.
벤치마크의 의미 — WebArena · SWE-bench · GAIA · OSWorld 같은 벤치마크가 있지만 자기 도메인 성능과 직결되지 않습니다.
실패 모드 다양 — 답이 틀린 경우, 도구 호출이 잘못된 경우, 도중에 멈춘 경우, 무한 루프, 환경을 망가뜨린 경우 등이 모두 다른 의미.
평가 흐름:
- 인간 검수와 LLM 평가 병행.
- 작은 평가셋을 자기 도메인 작업으로.
- 변경 시 회귀 테스트.
- 에이전트 트레이스 (도구 호출 · 메시지) 를 저장해 사후 분석.
11. 자주 걸리는 자리
무한 루프 — 종료 조건이 약하면 같은 도구를 반복 호출. 단계 한도 · 예산 한도를 강제.
컨텍스트 폭주 — 도구 결과가 누적되면 컨텍스트가 빠르게 차오릅니다. 요약 · 압축 · 서브에이전트 분리.
프롬프트 인젝션 — 외부 자료 (웹페이지 · 메일) 안의 지시가 에이전트 행동을 변경. 신뢰 경계 설계.
실수의 비용 — 파일 · 데이터 삭제 · 결제 같은 비가역 행동을 자율 자리에 두지 않습니다.
도구 시그니처 표류 — 도구 정의가 코드와 어긋나면 모델이 잘못된 인자를 만듭니다. 자동 생성 또는 단일 출처.
LLM 변경의 회귀 — 같은 프롬프트가 다른 모델·시점에서 다르게 동작. 모델 핀 + 회귀 테스트.
로그 부재 — 트레이스를 남기지 않으면 사후 분석이 거의 불가능.
사용자 인지 차이 — "에이전트" 라는 단어에 사용자가 기대하는 자율성 · 책임이 실제 동작과 다를 수 있습니다.
하고픈 말
에이전트는 정의가 모호하지만 핵심은 "여러 단계의 도구 호출 + 자기 평가 + 재계획" 입니다. 자율성이 올라갈수록 권한 최소화 · 예산 한도 · 사람 승인 게이트가 함께 따라와야 운영이 안전합니다. 평가의 어려움 때문에 작은 도메인 평가셋 + 회귀 테스트 + 트레이스 로그가 운영의 표준 도구가 됩니다.
Next
- llm-landscape
ReAct (2022) · Reflexion (2023) · Self-Refine (2023) · LangGraph · AutoGen · CrewAI · LlamaIndex Agents · GAIA · SWE-bench · WebArena 를 참고합니다.