AI Agent란 무엇인가 — 구조와 작동 원리
"AI Agent"라는 말이 많이 쓰이지만, 정확히 무엇인지 설명하기 어렵습니다. 단순히 ChatGPT를 자동화한 것과 무엇이 다른지, 어떤 구조로 작동하는지 개념부터 정리했습니다.
1. Agent vs LLM — 무엇이 다른가
LLM(Large Language Model)은 입력을 받으면 한 번 응답하고 끝납니다. Agent는 목표를 달성할 때까지 스스로 행동을 반복합니다. 핵심 차이는 루프입니다.
| LLM (단발 호출) | AI Agent | |
|---|---|---|
| 실행 방식 | 1회 입력 → 1회 출력 | 목표 달성까지 루프 반복 |
| 툴 사용 | 없음 | API, DB, 코드 실행 등 호출 가능 |
| 메모리 | 컨텍스트 윈도우만 | 단기 + 장기 + 벡터 메모리 |
| 계획 | 없음 | 목표를 서브태스크로 분해 |
| 자율성 | 낮음 | 높음 (스스로 다음 행동 결정) |
예를 들어 "최근 1주일 뉴스를 요약해줘"라는 요청을 받았을 때, LLM은 학습 데이터 안에서만 답합니다. Agent는 웹 검색 툴을 호출하고, 결과를 읽고, 요약을 작성합니다. 필요하면 여러 번 검색을 반복합니다.
2. Agent 실행 루프 — ReAct 패턴
현재 가장 널리 쓰이는 Agent 패턴은 ReAct (Reasoning + Acting)입니다. 생각하고, 행동하고, 관찰하는 루프를 반복합니다.
이 루프를 코드로 표현하면 아래와 같습니다.
while not goal_achieved:
thought = llm.think(context, goal) # 2. 다음 행동 결정
action = parse_action(thought) # 3. 툴 선택
result = execute_tool(action) # 3. 툴 실행
context.add(result) # 4. 결과를 메모리에 추가
goal_achieved = llm.evaluate(context) # 5. 목표 달성 여부 판단
return context.final_answer() # 6. 최종 출력
3. 메모리 구조
Agent는 상황에 따라 3가지 메모리를 조합해서 사용합니다.
Short-term memory
현재 실행 중인 컨텍스트 윈도우. 대화 기록, 툴 호출 결과가 쌓입니다. LLM이 직접 참조하며, 세션이 끝나면 사라집니다.
Long-term memory
DB에 저장된 영구 기록. 과거 실행 결과, 사용자 설정, 누적 데이터를 담습니다. PostgreSQL, Redis 등 사용.
Semantic memory
텍스트를 임베딩으로 저장합니다. "이것과 비슷한 내용 찾아줘" 같은 의미 기반 검색에 쓰입니다. pgvector, Pinecone 등.
4. 툴 (Tool / Function Calling)
Agent가 LLM 단독으로는 할 수 없는 일을 가능하게 하는 핵심 요소입니다. LLM은 "어떤 툴을 어떤 인자로 호출할지"를 결정하고, 실제 실행은 외부 시스템이 담당합니다.
정보 수집
- 웹 검색 (Google, Bing API)
- 웹 페이지 크롤링
- DB 쿼리 (SQL)
- 파일 읽기·쓰기
실행·연산
- Python 코드 실행
- 수학 계산
- 이미지 생성·분석
- 외부 API 호출
커뮤니케이션
- 이메일 전송
- Slack·Telegram 메시지
- 캘린더 이벤트 생성
- 알림 발송
제어·자동화
- 브라우저 자동화 (Playwright)
- CLI 명령 실행
- 다른 Agent 호출
- 워크플로우 트리거
Function Calling은 LLM이 툴을 호출하는 방식을 표준화한 인터페이스입니다. Claude API 기준 예시입니다.
tools = [{
"name": "web_search",
"description": "Search the web for recent information",
"input_schema": {
"type": "object",
"properties": { "query": {"type": "string", "description": "Search query"} },
"required": ["query"]
}
}]
response = anthropic.messages.create(
model=“claude-sonnet-4-20250514”,
tools=tools,
messages=[{“role”: “user”, “content”: “최근 AI Agent 관련 뉴스를 요약해줘”}]
)
LLM이 위 툴의 호출 여부와 query를 스스로 결정합니다
5. Agent의 종류
구조와 목적에 따라 여러 유형으로 나뉩니다.
6. 주요 프레임워크
| 프레임워크 | 언어 | 특징 |
|---|---|---|
| LangChain | Python / JS | 가장 널리 쓰임. Agent, Chain, Memory, Tool 추상화 제공. 레퍼런스와 생태계가 큼. |
| LlamaIndex | Python | RAG(Retrieval-Augmented Generation)와 데이터 연결에 강점. 문서 기반 Agent에 적합. |
| AutoGen | Python | Microsoft. Multi-Agent 대화 프레임워크. Agent끼리 대화하며 문제를 해결. |
| CrewAI | Python | 역할 기반 Multi-Agent. 각 Agent에 역할·목표·배경을 부여하고 팀처럼 협업. |
| LangGraph | Python | LangChain 팀. 그래프로 Agent 흐름을 정의. 복잡한 상태 관리와 루프 제어에 적합. |
| n8n | No-code | 시각적 워크플로우. 코드 없이 Agent 오케스트레이션 가능. 셀프 호스팅 지원. |
7. 설계할 때 고려할 것들
루프 제한 (Max iterations)
Agent가 목표를 달성하지 못하면 무한 루프에 빠질 수 있습니다. 최대 반복 횟수를 반드시 두어야 합니다. 보통 10~20회로 제한합니다.
툴 에러 처리
외부 API는 언제든 실패할 수 있습니다. 툴 호출 실패 시 Agent가 다른 방법을 시도하거나, 우아하게 종료하도록 설계해야 합니다.
컨텍스트 윈도우 관리
루프가 반복될수록 컨텍스트가 쌓여 토큰 한도를 넘깁니다. 오래된 관찰 결과를 요약하거나 잘라 내는 전략이 필요합니다.
비용 관리
LLM API 호출은 루프마다 발생합니다. 복잡한 태스크는 수십 번 호출될 수 있으므로, 캐싱과 모델 선택(무거운 모델 vs 가벼운 모델)을 의도적으로 설계해야 합니다.
Human-in-the-loop
결제, 이메일 발송, DB 수정처럼 중요한 행동은 자동 실행 전에 사람 확인을 받도록 두는 것이 안전합니다.
AI Agent는 아직 빠르게 발전하는 영역입니다. 지금의 패턴과 프레임워크가 1년 뒤에는 달라질 수 있습니다. "루프 + 툴 + 메모리"라는 본질을 이해하면, 어떤 프레임워크가 나와도 적응할 수 있습니다.