에이전트란 무엇인가: 도구를 루프 안에서 실행하는 LLM
정의의 혼란에서 출발하기
섹션 제목: “정의의 혼란에서 출발하기”“에이전트(agent)“라는 단어는 AI 분야에서 가장 남발되는 용어 중 하나다. 어떤 문맥에서는 단순히 챗봇을 가리키고, 다른 문맥에서는 자율적으로 코드를 작성하고 배포하는 복잡한 시스템을 뜻한다. 이 혼란을 해소하려면 정의를 가능한 한 작은 단위로 분해해야 한다.
Anthropic은 자신들의 실전 가이드에서 에이전트를 이렇게 정의한다. “에이전트는 환경적 피드백에 기반해 루프 안에서 도구를 사용하는 LLM일 뿐이다.” Solomon Hykes도 같은 방향으로 표현한다. “AI 에이전트는 루프 안에서 자신의 환경을 사용하는 LLM이다.” Simon Willison은 더 압축한다. “LLM 에이전트는 목표를 달성하기 위해 도구를 루프 안에서 실행한다.”
세 정의의 공통 키워드는 도구(tool), 루프(loop), 환경 피드백(environmental feedback) 세 가지다. 이 세 요소가 없으면 에이전트가 아니다. 이 셋이 있으면 에이전트다. 단순하지만 강력한 기준이다.
Augmented LLM: 에이전트의 빌딩 블록
섹션 제목: “Augmented LLM: 에이전트의 빌딩 블록”Lilian Weng은 2023년 6월 에이전틱 시스템 전반을 정리하면서 LLM Powered Autonomous Agents 프레임을 제시했다. 그 핵심에는 세 가지 능력으로 강화된 LLM, 즉 Augmented LLM이 있다.
┌─────────────────────────────────────────────────────────┐│ Augmented LLM ││ ││ ┌───────────┐ ┌───────────┐ ┌───────────────┐ ││ │ 검색(RAG) │ │ 도구 호출 │ │ 메모리 │ ││ │ │ │(Tool Use) │ │(Memory Store) │ ││ │ 외부 지식 │ │ 외부 행동 │ │ 상태 유지 │ ││ └─────┬─────┘ └─────┬─────┘ └──────┬────────┘ ││ │ │ │ ││ └───────────────┴─────────────────┘ ││ │ ││ ┌────▼────┐ ││ │ LLM │ ← 추론·계획·생성 ││ └─────────┘ │└─────────────────────────────────────────────────────────┘- 검색(Retrieval) — 모델의 파라미터에 없는 최신 정보나 방대한 문서를 런타임에 끌어오는 능력. 벡터 데이터베이스나 키워드 검색으로 구현된다.
- 도구 호출(Tool Use) — 코드 실행, 파일 읽기·쓰기, 외부 API 호출처럼 텍스트 생성 이상의 행동을 가능하게 한다. 이것이 루프를 “진짜 행동”으로 만드는 핵심이다.
- 메모리(Memory) — 단기적으로는 컨텍스트 창 안의 스크래치패드, 장기적으로는 파일이나 외부 데이터베이스에 기록되는 영속 상태. 루프가 여러 이터레이션을 거쳐도 전후 맥락을 잃지 않게 한다.
Anthropic은 이 Augmented LLM을 에이전틱 시스템 전체의 “빌딩 블록”으로 부른다. 단독으로 서도 유용하고, 여러 개를 조합하면 더 복잡한 시스템이 된다.
에이전트인가 아닌가: 판별 기준표
섹션 제목: “에이전트인가 아닌가: 판별 기준표”아래 표를 이용하면 임의의 시스템이 에이전트인지 빠르게 판단할 수 있다.
| 질문 | 예 | 아니오 |
|---|---|---|
| 모델이 도구를 호출하는가? | 에이전트 후보 | 단순 LLM 호출 |
| 도구 결과가 다음 모델 호출에 반영되는가? | 루프 존재 | 파이프라인에 가까움 |
| 종료 조건이 모델 판단에 달려 있는가? | 자율성 있음 | 규칙 기반 워크플로 |
| 세 조건 모두 충족? | 에이전트 | 다른 범주 |
몇 가지 경계 사례를 살펴보자.
- RAG 단독 호출: 검색 → 생성 → 끝. 루프가 없다. 에이전트가 아니다.
- 함수 호출이 있는 단일 호출: 도구를 한 번 쓰고 끝나면 루프가 없다. 역시 에이전트가 아니다.
- 코드 실행 후 결과를 컨텍스트에 추가해 재호출: 루프가 생겼다. 에이전트다.
왜 “루프”라는 단어가 핵심인가
섹션 제목: “왜 “루프”라는 단어가 핵심인가”루프가 없으면 피드백이 없고, 피드백이 없으면 수정이 없다. 싱글샷은 한 번의 추론으로 결과를 확정한다. 루프는 “행동 → 관찰 → 재추론”을 반복하며 점진적으로 목표에 수렴한다. 아래 코드는 두 방식의 구조적 차이를 보여준다.
개념 이해용 의사 코드이며 실제 API와 다를 수 있습니다.
# 단순 LLM 호출 — 루프 없음def single_shot(prompt: str) -> str: response = model.generate(prompt) return response.text
# 최소 에이전트 — 루프 있음def minimal_agent(task: str, tools: list) -> str: messages = [{"role": "user", "content": task}]
while True: response = model.generate(messages, tools=tools)
# 모델이 "완료"를 선언하면 루프 탈출 if response.stop_reason == "end_turn": return response.text
# 도구를 실행하고 결과를 컨텍스트에 추가 (피드백 루프) for tool_call in response.tool_calls: result = execute_tool(tool_call) messages.append({"role": "tool", "content": result})minimal_agent 함수에서 while True 블록이 바로 루프다. 모델이 end_turn을 반환할 때까지 도구를 실행하고 결과를 다시 먹여준다. 이 패턴 하나가 에이전트와 단순 LLM 호출을 가르는 선이다.
에이전트 정의를 확정하고 나아가기
섹션 제목: “에이전트 정의를 확정하고 나아가기”지금부터 이 사이트에서 “에이전트”라는 단어는 항상 위 정의를 가리킨다. 루프 안에서 도구를 실행하고, 그 결과를 다시 컨텍스트로 받아 추론을 이어가는 LLM 기반 시스템. 이 정의 안에 검색, 메모리, 코드 실행, 파일 조작이 모두 들어온다. 반대로 도구 없는 대화나 단발성 함수 호출은 에이전트가 아니다.
다음 챕터에서는 이 루프를 코드로 고정해 놓은 워크플로(Workflow) 와 모델이 제어 흐름을 스스로 결정하는 에이전트(Agent) 의 차이를 구체적으로 살펴본다.
참고 자료
- Anthropic — Building Effective AI Agents — 접속 2026-06-30
- Simon Willison — An LLM agent runs tools in a loop to achieve a goal — 접속 2026-06-30
- Lilian Weng — LLM Powered Autonomous Agents — 접속 2026-06-30