AI 에이전트 구축Building AI Agents
Chapter 04 · AI Agents

AI 에이전트 — 뇌, 지각, 행동

"질문에 답하는 앵무새를 찾는다면, 나는 그것을 지능 있는 존재라 부르겠다." LLM은 정교한 앵무새다. 하지만 행동할 수는 없다. 에이전트가 그 상자를 연다.

에이전트 Brain · Perception · Action 계획과 추론 프레임워크

Section 01에이전트란 무엇인가

질문에 답하는 것과 질문을 이해하는 것은 다르다. LLM은 거의 모든 질문에 잘 답하지만, 행동할 수는 없다. 에이전트는 바로 이 한계를 해결하려는 시도다.

AI 에이전트(agent)는 LLM의 확장이다. 언어 모델에 자율성, 반응성, 능동성, 사회적 능력을 더해 — 센서로 환경을 지각하고, 결정을 내리고, 그것을 실행하는 인공 개체로 발전시킨다.

에이전트는 의식 있는 존재가 아니다. LLM을 의식 있다고 부르는 것은 의인화 오류다. 하지만 LLM은 언어 모델링과 지시 튜닝을 통해 작업을 수행하는 능력을 얻었다. 작업은 명확한 목표를 가진 행동들의 집합이고, 행동은 개별 수행 가능한 행위다.

Concept 에이전트의 네 가지 특성

자율성(Autonomy) — 인간 개입 없이, 단계별 설명 없이도 작업을 완료할 수 있어야 한다.

반응성(Reactivity) — 환경 변화를 인지하고 적절하게 빠르게 대응해야 한다.

능동성(Pro-activeness) — 단순 반응이 아니라 목표를 향해 계획하고 추론해야 한다.

사회적 능력(Social ability) — 인간이나 다른 에이전트와 상호작용할 수 있어야 한다.

직관 — 디드로의 앵무새 LLM은 "정교한 앵무새"다. 문맥 내 학습(in-context learning)으로 프롬프트의 지시와 학습한 내용을 연결해 작업을 푼다. 거기에 도구라는 "손"과 지각이라는 "감각"을 더하면, 앵무새는 비로소 세계 안에서 행동하는 에이전트가 된다.

Section 02뇌·지각·행동

이 책은 LLM 기반 에이전트를 세 부분의 프레임워크로 본다 — 뇌(Brain), 지각(Perception), 행동(Action).

Motion · 뇌–지각–행동 루프 STEP 01 / 5
space 재생 · → 다음 · R 리셋

뇌 — 시스템의 핵심

뇌는 정보 저장, 지식 발견, 추론, 의사결정을 담당한다. LLM이 그 핵심이므로 모든 상호작용이 자연어 기반이며, 인간이 이해하고 모니터링할 수 있다는 장점이 있다. 뇌의 지식은 세 가지로 분류된다.

  • 언어 지식 — 언어의 의미론·구문론.
  • 상식 지식 — 대부분의 사람이 아는 규칙과 사실(중력, 인간은 날 수 없다 등).
  • 영역 지식 — 과학·의학·수학·프로그래밍 같은 전문 지식.

중요한 한계 — 모델의 지식은 사전 학습 시점에 고정된다. LLM은 정보를 새로 획득하거나 과거 상호작용을 기억할 수 없다. 이 한계가 5~7장의 RAG와 지식 그래프를 부른다.

지각 — 외부 세계와의 연결

LLM은 텍스트만 이해한다. 시각·청각 정보를 통합하려면 추가 모듈이 필요하다. 가장 단순한 방법은 이미지 캡셔닝 모델로 캡션을 만들어 프롬프트에 넣는 것이다. PaLM-E 같은 구체화된 모델은 이미지를 언어 토큰처럼 잠재 임베딩으로 변환해 직접 통합한다. BLIP-2는 동결된 두 모델 사이에 Q-Former 모듈만 학습시킨다.

행동 — 도구를 쓰는 손

인간이 도구로 능력을 확장하듯, LLM의 능력도 도구로 확장된다. 가장 단순한 출력은 텍스트지만, 모델은 API·코드·다른 모델을 호출할 수 있다. 구체화된 행동(embodied action)은 시스템을 외부 물리 세계로 확장한다 — AGI에 이르려면 모델이 환경과 상호작용할 수 있어야 한다는 구체화 가설에 따른 것이다.

에이전트의 세 구성 요소
구성 요소역할구현 예
뇌 (Brain)추론·계획·의사결정·기억LLM + 외부 메모리(벡터 DB·KG)
지각 (Perception)다양한 양식에서 정보 수집이미지 캡셔너·Whisper·센서
행동 (Action)환경 수정·도구 사용API 호출·코드 실행·로봇 제어

Section 03계획과 작업 분해

현실의 작업은 복잡해 단일 단계로 풀기 어렵다. 에이전트는 작업을 관리 가능한 부작업(subtask)으로 나눠야 한다. 핵심은 작업을 어떻게 분해하고, 어떻게 풀지 결정하는 것이다.

Concept 두 가지 분해 전략

분해 우선(Decomposition-first) — LLM이 먼저 작업을 부목표 전체로 나눈 뒤 순차적으로 푼다. "먼저 계획을 세웁시다 → 계획을 실행합시다." 작업 개요를 주어 환각·망각을 줄이지만, 처음에 모든 것이 계획되므로 도중 오류를 수정할 수 없다.

인터리브 분해(Interleaved) — 분해와 계획을 번갈아 한다. 한 부작업을 만들고 풀고, 전체가 풀릴 때까지 반복한다. 동적으로 조정할 수 있지만, 문제가 너무 복잡하면 비싸고 긴 추론 체인을 만든다.

변형도 많다. 다중 계획 선택은 한 작업에 여러 계획을 생성하고 최선을 고른다(다수 투표·트리 검색·강화학습). 외부 계획자 보조는 기호 계획자나 가벼운 신경 계획자를 통합한다 — LLM이 느린 추론을, 계획자가 빠른 본능적 응답을 담당한다. 반성과 개선은 생성–피드백–개선을 반복하며, 별도 평가자 모델을 두기도 한다.

함정 — 무한 루프 반성·개선 프로세스가 모델을 목표 해결로 이끈다는 보장은 없다. LLM은 특히 프로세스가 복잡할 때 끝나지 않는 추론 체인에 고착될 수 있다. 이것이 메모리 증강 계획과 RAG가 필요한 이유다.

메모리 증강 계획은 컨텍스트 길이 제한을 넘어선다. 외부 메모리(RAG, 데이터베이스)에 과거 경험·관찰·계산을 저장하고 필요할 때 검색한다. 집을 청소하는 로봇 진공청소기를 생각하라 — 메모리 없이는 같은 곳을 반복하지만, 청소한 위치의 지도를 기억하면 효율적으로 움직인다.

Section 04에이전트 프레임워크

개념을 실제로 구현하게 해주는 라이브러리들이 있다. LLM을 중심에 두고 지각 모듈·실행 도구를 연결한다. LLM 기반 애플리케이션의 일반 구조는 인터페이스·뇌·지각 모듈·도구·프롬프트로 이루어진다.

주요 에이전트 프레임워크
프레임워크강점약점 · 적합 용도
LangChain포괄적 라이브러리, 광범위 통합, LangSmith 모니터링가파른 학습 곡선 · 복잡한 에이전트, 프로덕션
Haystack전문화된 검색·QA 구성 요소, 완만한 학습 곡선작은 커뮤니티, 확장성 문제 · 검색·QA
LlamaIndex160개 이상 데이터 소스, 색인·검색 최강검색 외 기능 제한적 · RAG 애플리케이션
Semantic Kernel함수 구성, .NET·C# 지원, 엔터프라이즈 적합Microsoft 생태계 의존 · 엔터프라이즈
AutoGen다중 에이전트 대화, 직관적 추상화디버깅 어려움, 작은 커뮤니티 · 멀티에이전트

최고의 라이브러리는 사용 사례에 달려 있다. 검색 중심이면 LlamaIndex, QA 중심이면 Haystack, 광범위한 범위와 복잡한 에이전트는 LangChain, .NET 통합이 필요하면 Semantic Kernel이 자연스럽다. 선택 시 프로그래밍 언어, 작업 복잡도, 커뮤니티 활성도, 사용자 정의 수준을 평가해야 한다.

자율 에이전트의 네 모듈

9장에서 더 깊이 다룰 자율 에이전트는 네 모듈로 설계된다 — 프로파일링(페르소나·역할 정의), 메모리(단기·장기 하이브리드 메모리), 계획(피드백 유무에 따른 작업 분해), 행동(계획을 실제 결과로 변환). ReAct 프레임워크의 생각–행동–관찰 삼조가 대표적이다.

Section 05웹 검색 에이전트

이 장의 실습은 LLM을 "상자 밖으로" 꺼내는 첫걸음 — 인터넷에서 정보를 검색하는 에이전트다. LangChain으로 LLM에 검색 도구를 연결한다.

웹 검색 에이전트 — LangChain 도구 연결
# 검색 도구들을 정의
tools = []
google = GoogleSerperAPIWrapper()
tools.append(Tool(
    name="Google Web Search",
    func=google.run,
    description="인터넷에서 정보를 추출하는 검색 도구"))

wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
tools.append(Tool(
    name="Wikipedia Search",
    func=wikipedia.run,
    description="위키백과를 검색하는 도구"))

# 에이전트 초기화 — zero-shot ReAct
agent = initialize_agent(tools, llm,
    agent="zero-shot-react-description", verbose=True)
agent.run("질문")
Motion · ReAct 에이전트 루프 STEP 01 / 6
space 재생 · → 다음 · R 리셋
핵심 에이전트는 LLM이라는 뇌에 지각과 행동을 더한 시스템이다. 자율성·반응성·능동성·사회성을 갖추고, 작업을 부작업으로 분해해 계획하며, 도구로 환경과 상호작용한다. 하지만 LLM의 지식은 학습 시점에 고정되어 있고, 모델은 환각할 수 있다. 다음 장의 RAG가 이 두 한계를 정면으로 다룬다.