책 소개
요약
이 책은 5부에 걸친 모두 14개의 장으로 구성되어 있다. 각 부는 LLM의 기초 활용 기술에서 시작해 LangChain, LangGraph, MCP를 활용한 출시 모델 수준의 에이전트까지 구축하도록 구성되어 있다. 1부는 LLM이 어떤 영역에서 강점을 보이고 어떤 한계를 지니는지, 그리고 실제 응용 시스템을 구축할 때 왜 프레임워크가 필수적인지를 살펴보면서 기초적 지식을 제공한다. 2부에서는 LLM의 핵심 활용 사례 가운데 하나인 대량의 텍스트에서 핵심 정보를 추려 실제 활용 가능한 형태로 정리하는 방법을 다룬다. MapReduce 전략과 LangChain Expression Language(LCEL) 파이프라인을 구성해 보며, 웹을 탐색하여, 출처를 수집하고, 이를 요약한 뒤, 간결하면서도 근거를 갖춘 보고서를 생성하는 연구 요약 엔진을 구축하고 Agent의 기본 개념을 소개한다.
3부는 OpenAI와 ChromaDB를 사용하여 RAG를 기본 원리를 다루고 임베딩(embeddings), 문맥 기반 검색(semantic search) 그리고 수집–질의 루프와 벡터 저장소와 검색기(retriever)의 역할을 보여주는 최소한의 Q&A 챗봇을 구현하며, LangSmith 추적 기능을 소개한다.
4부에서는 데이터와 사용자 규모가 커질 때 검색 시스템을 어떻게 확장할 수 있는지 살펴본다. 정교한 조각화(chunking), 다중 임베딩, 그리고 목표 지향적 확장을 통해 인덱싱과 반정형 데이터와 멀티모달 콘텐츠에 맞게 검색 전략을 조정하는 방법도 살펴본다. 또한 검색 성능을 높이는 재작성-검색-읽기(rewrite–retrieve–read) 패턴, 스텝백(step-back) 프롬프트, 가설 문서임베딩(Hypothetical Document Embeddings(HyDE)), 질문 분해 등의 기법을 활용해, 검색 과정에서 더 관련성이 높고 충분한 정보를 안정적으로 찾아내는 방법과 상호순위 융합(Reciprocal Rank Fusion(RRF))으로 결과를 후 처리하여 LLM에 가장 관련성이 높은 문맥을 제공하는 방법론도 익힌다.
5부는 에이전트 시스템을 본격적으로 탐색하는데 시스템이 어떻게 의사결정을 내리고 행동을 수행하는지를 살펴본다. 도구를 사용하는 에이전트와 멀티 에이전트 시스템을 구축하고, 이를 MCP로 확장하며, 실제 운영 환경에 배포할 수 있도록 준비하는 과정을 다룬다. 또한supervisor 패턴을 사용해 멀티 에이전트 시스템을 구성하는 방법을 다루며, 각 하위 작업을 가장 적절한 전문 에이전트가 처리하도록 설계한다. 모델 문맥 프로토콜(Model Context Protocol(MCP))이 무엇인지, MCP 서버를 직접 구축해 보고 외부에서 제공되는 MCP 도구를 활용하는 방법도 살펴본다.
이 책의 대상 독자
이 책은 LangChain, LangGraph, MCP를 사용해 실환경 수준의 AI 에이전트와 애플리케이션을 구축하려는 개발자와 기술적 배경을 가진 독자를 대상으로 한다. 따라서 기본적인 파이썬 사용법과 터미널에서 명령을 실행하거나 가상 환경을 관리하는 등의 일반적인 개발자 워크플로에 익숙하다면 무리 없이 따라갈 수 있다. 또한 Jupyter Notebook을 실행하거나 Visual Studio CodeVS Code에서 파이썬 애플리케이션을 개발해본 경험이 있다면 학습을 더 빠르게 진행할 수 있다. LLM 애플리케이션 개발 경험이 반드시 필요한 것은 아니지만, ChatGPT, Claude, Gemini와 같은 도구를 사용해본 경험이 있다면 도움이 된다.
일부 독자는 단순한 LLM API 호출을 넘어서는 시스템을 구축하려는 소프트웨어 엔지니어일 수도 있고, RAG 프로토타입을 신뢰할 수 있는 애플리케이션이나 에이전트로 발전시키려는 데이터 사이언티스트 또는 머신러닝 엔지니어일 수도 있을 것이다. 이 책은 구현 가능성과 배포 전략을 평가하는 기술 리더나 제품 관리자에게도 유용하다. 더 나아가 학생, 독학자, 연구자, 취미로 개발을 하는 사람들 역시 기초 개념에서 시작해 완전히 동작하는 시스템에 이르기까지의 명확하고 실용적인 학습 경로를 이 책에서 찾을 수 있다.
각 장을 따라가다 보면, 기초 개념에서 출발해 완전히 작동하는 애플리케이션을 구현하는 단계에까지 이르게 된다. 효과적인 프롬프트를 설계하고, LangChain을 활용해 RAG 파이프라인을 구축•테스트•강화하며, LangGraph를 통해 에이전트 기반 워크플로와 다중 에이전트 협업 구조를 구현한다. 또한 MCP를 통해 외부 도구를 통합함으로써 보안성과 상호운용성을 갖춘 기능을 구축하는 방법을 익힌다. 이러한 과정을 거치면서 시스템의 동작을 추적하고 디버깅하며 지속적으로 개선하는 능력도 함께 기르게 된다. 아이디어를 신뢰할 수 있고 유지보수가 가능한 AI 제품으로 발전시키는 것이 목표라면, 이 책은 그 전 과정을 단계적으로 안내하는 길잡이가 될 것이다.
이 책의 구성
이 책은 5부로 구성된 총 14개 장으로 이뤄져 있다. 각 부는 앞의 내용에 기반해 단계적으로 확장되며, LLM의 기초 활용 기술에서 시작해 LangChain, LangGraph, MCP를 활용한 출시 모델 수준의 에이전트까지 구축하도록 구성돼 있다. 독자는 처음부터 끝까지 순서대로 읽을 수도 있지만, 자신의 프로젝트와 가장 밀접한 관련이 있는 부분만 중점적으로 읽을 수도 있다. 본문 전반에 걸쳐 제공되는 교차 참조는 이러한 과정에서 발생할 수 있는 이해의 공백을 자연스럽게 메우도록 도와줄 것이다.
목차
목차
- 1부 LLM 시작하기
- 1장 AI 에이전트와 그 응용 소개
- 1.1 LLM 기반의 응용과 에이전트 구축
- 1.1.1 LLM 기반 애플리케이션과 엔진
- 1.1.2 LLM 기반 챗봇
- 1.1.3 AI 에이전트
- 1.2 LangChain 소개
- 1.2.1 LangChain 아키텍처
- 1.2.2 LangChain의 핵심 객체 모델
- 1.3 전형적인 LLM 사용 사례
- 1.4 LLM을 요구 사항에 맞게 조정하는 방법
- 1.4.1 프롬프트 공학
- 1.4.2 RAG
- 1.4.3 파인튜닝
- 1.5 LLM 선택
- 1.6 이 책에서 배우게 될 내용
- 요약
- 2장 프로그래밍 방식으로 프롬프트 실행
- 2.1 프롬프트를 프로그래밍 방식으로 실행하기
- 2.1.1 이 장을 위한 환경 설정
- 2.1.2 최소한의 프롬프트 실행
- 2.2 LangChain으로 프롬프트 실행하기
- 2.3 프롬프트 템플릿
- 2.3.1 파이썬 함수로 프롬프트 템플릿 구현하기
- 2.3.2 LangChain의 PromptTemplate 사용하기
- 2.4 프롬프트 형식
- 2.4.1 텍스트 분류
- 2.4.2 감정 분석
- 2.4.3 텍스트 요약
- 2.4.4 텍스트 구성
- 2.4.5 질의응답
- 2.4.6 추론
- 2.5 상세 추론
- 2.5.1 원샷 학습
- 2.5.2 투샷 학습
- 2.5.3 단계 제시
- 2.5.4 퓨샷 학습
- 2.5.5 LangChain으로 퓨샷 학습 구현하기
- 2.5.6 사고 체인
- 2.6 프롬프트 구조
- 요약
- 2부 요약
- 3장 LangChain을 사용한 문서 요약
- 3.1 문맥 창보다 큰 문서 요약하기
- 3.1.1 텍스트를 조각으로 나눠 Document 객체로 만들기
- 3.1.2 분할
- 3.1.3 맵
- 3.1.4 Reduce
- 3.1.5 MapReduce 결합 체인
- 3.1.6 MapReduce 실행
- 3.2 문서 간 요약
- 3.2.1 Document 객체 목록 생성
- 3.2.2 위키피디아 콘텐츠
- 3.2.3 파일 기반 콘텐츠
- 3.2.4 Document 리스트 생성
- 3.2.5 최종 요약 점진적으로 Refine하기
- 3.3 요약 흐름도
- 요약
- 4장 연구 요약 엔진 구축
- 4.1 연구 요약 엔진 개요
- 4.2 프로젝트 설정
- 4.3 핵심 기능 구현
- 4.3.1 웹 검색 구현
- 4.3.2 웹 스크래핑 구현
- 4.3.3 LLM 클라이언트 인스턴스 생성
- 4.3.4 JSON을 파이썬 객체로 변환하는 변환기
- 4.4 질의 재작성으로 아키텍처 고도화
- 4.5 프롬프트 공학
- 4.5.1 웹 검색 프롬프트 작성
- 4.5.2 요약 프롬프트 작성
- 4.5.3 연구 리포트 프롬프트
- 4.6 초기 구현
- 4.6.1 함수와 프롬프트 템플릿 임포트
- 4.6.2 상수와 입력 변수 설정
- 4.6.3 LLM 클라이언트 인스턴스 생성
- 4.6.4 웹 검색 질의 생성 및 결과 수집
- 4.6.5 웹 결과 스크래핑
- 4.6.6 웹 결과 요약
- 4.6.7 연구 보고서 생성
- 4.7 LCEL로 연구 요약 엔진 다시 구현하기
- 4.7.1 어시스턴트 지시 체인
- 4.7.2 웹 검색 체인
- 4.7.3 검색 및 요약 체인
- 4.7.4 웹 연구 체인
- 요약
- 5장 LangGraph를 활용한 에이전트 워크플로
- 5.1 에이전틱 워크플로와 에이전트에 대한 이해
- 5.1.1 워크플로
- 5.1.2 에이전트
- 5.1.3 에이전트 기반 아키텍처를 사용할 경우
- 5.1.4 에이전트 개발 프레임워크
- 5.2 LangGraph 기초
- 5.3 LangChain 체인에서 LangGraph로 이동하기
- 5.4 LangGraph 핵심 구성 요소
- 5.4.1 상태 그래프 구조
- 5.4.2 상태 관리와 타입 지정
- 5.4.3 노드 함수와 엣지 정의
- 5.4.4 시작 지점과 종료 조건
- 5.5 웹 연구 어시스턴트를 AI 에이전트로 전환하기
- 5.5.1 기존 LangChain 구현 개요
- 5.5.2 변환을 위한 구성 요소 식별
- 5.5.3 단계별 변환 절차
- 5.5.4 코드 비교와 얻은 이점들
- 요약
- 3부 Q&A 챗봇
- 6장 ChromaDB를 활용한 RAG 기초
- 6.1 문맥 기반 검색
- 6.1.1 단일 문서를 대상으로 한 기본적인 질의응답 챗봇
- 6.1.2 지식 기반을 대상으로 한 보다 복잡한 질의응답 챗봇
- 6.1.3 RAG 설계 패턴
- 6.2 벡터 저장소
- 6.2.1 벡터 저장소란 무엇인가?
- 6.2.2 벡터 저장소의 작동 원리
- 6.2.3 벡터 라이브러리 vs. 벡터 데이터베이스
- 6.2.4 가장 널리 사용되는 벡터 저장소
- 6.2.5 Chroma를 사용한 텍스트 저장 및 문맥 기반 검색 수행
- 6.3 RAG 처음부터 구현하기
- 6.3.1 벡터 데이터베이스에서 콘텐츠 검색
- 6.3.2 LLM 호출
- 6.3.3 챗봇 구축
- 6.3.4 RAG 용어 정리
- 요약
- 7장 LangChain과 LangSmith를 활용한 질의응답 챗봇
- 7.1 질의응답 챗봇을 위한 LangChain 객체 모델
- 7.1.1 콘텐츠 수집(인덱싱) 단계
- 7.1.2 질의응답(검색 및 생성) 단계
- 7.2 벡터 저장소 콘텐츠 수집
- 7.2.1 문서 분할 및 저장
- 7.2.2 중복 제거
- 7.2.3 폴더에서 여러 문서 수집
- 7.3 저장된 문서에 대한 질의응답
- 7.3.1 벡터 저장소 직접 질의
- 7.3.2 LangChain 체인을 통한 질문 수행
- 7.3.3 RAG 체인 설정 마무리
- 7.3.4 후속 질문
- 7.4 챗봇의 메시지 이력 기억
- 7.4.1 프롬프트 수정
- 7.4.2 채팅 메시지 이력 갱신
- 7.4.3 채팅 이력을 RAG 체인에 주입하기
- 7.4.4 전체를 하나로 통합하기
- 7.5 LangSmith로 실행 추적하기
- 요약
- 4부 고급 RAG
- 8장 고급 인덱싱
- 8.1 RAG 정확도 개선
- 8.1.1 콘텐츠 수집 단계
- 8.1.2 질문-응답 단계
- 8.2 고급 문서 인덱싱
- 8.3 분할 전략
- 8.3.1 분할 전략들
- 8.3.2 고려해야 할 요소
- 8.3.3 적절한 전략 선택
- 8.3.4 HTML 헤더 기준 분할
- 8.4 임베딩 전략
- 8.4.1 ParentDocumentRetriever를 사용한 하위 조각 임베딩
- 8.4.2 MultiVectorRetriever를 사용한 자식 조각 임베딩
- 8.4.3 문서 요약들 임베딩
- 8.4.4 가설 질문 임베딩
- 8.5 세분화 조각 확장
- 8.6 반정형 콘텐츠
- 8.7 멀티모달 RAG
- 요약
- 9장 질문 변환
- 9.1 재작성-검색-읽기
- 9.1.1 사용자 원시 질문을 사용한 콘텐츠 검색
- 9.1.2 질의 재작성기 체인 설정
- 9.1.3 재작성한 질의로 콘텐츠 검색하기
- 9.1.4 모든 요소를 하나의 RAG 체인으로 결합하기
- 9.2 다중 질의 생성
- 9.2.1 다중 질의를 생성하는 체인 구성하기
- 9.2.2 사용자 정의 다중 질의 검색기 설정
- 9.2.3 표준 MultiQueryRetriever 인스턴스 사용하기
- 9.3 스텝백 질문
- 9.3.1 스텝백 질문을 생성하는 체인 구성하기
- 9.3.2 스텝백 질문 생성을 RAG 체인에 통합하기
- 9.4 가설 문서 임베딩
- 9.4.1 사용자 질문을 위한 가설 문서 생성하기
- 9.4.2 HyDE 체인을 RAG 체인에 통합하기
- 9.5 단일 단계 및 다단계 분해
- 요약
- 10장 질의 생성, 라우팅 및 검색 후처리
- 10.1 콘텐츠 데이터베이스 질의 생성
- 10.2 셀프 질의(메타데이터 질의 확장)
- 10.2.1 수집: 메타데이터 확장
- 10.2.2 메타데이터가 확장된 컬렉션에 대한 질의응답
- 10.3 정형 SQL 질의 생성하기
- 10.3.1 SQLite 설치
- 10.3.2 데이터베이스 설정 및 연결
- 10.3.3 자연어로부터 SQL 질의 생성
- 10.3.4 SQL 질의 실행하기
- 10.4 문맥적 SQL 질의 생성하기
- 10.4.1 표준 SQL 질의
- 10.4.2 문맥적 SQL 질의
- 10.4.3 임베딩 생성
- 10.4.4 문맥적 SQL 검색 수행
- 10.4.5 문맥적 SQL 검색 자동화
- 10.4.6 문맥적 SQL 검색의 이점
- 10.5 그래프 데이터베이스를 위한 질의 생성
- 10.6 체인 라우팅
- 10.6.1 데이터 검색기 설정
- 10.6.2 질의 라우터 설정
- 10.6.3 체인 라우터를 전체 RAG 체인에 통합하기
- 10.7 검색 후처리
- 10.7.1 유사도 기반 후처리기
- 10.7.2 키워드 기반 후처리기
- 10.7.3 시간 가중치
- 10.7.4 RAG 퓨전(상호 순위 융합)
- 요약
- 5부 AI 에이전트
- 11장 LangGraph로 도구 기반 에이전트 구축
- 11.1 간단한 시작: 단일 도구 기반 여행 정보 에이전트 구축
- 11.1.1 프로젝트 설정
- 11.1.2 환경 변수 로드
- 11.1.3 여행 정보 벡터 저장소 준비
- 11.2 에이전트가 도구를 호출하도록 하기
- 11.2.1 함수 호출에서 도구 호출로
- 11.2.2 LLM에서 도구 호출이 동작하는 방식
- 11.2.3 LLM에 도구 등록하기
- 11.2.4 에이전트 상태: 대화 추적
- 11.2.5 도구 호출 실행
- 11.2.6 LLM 노드: 추론과 행동의 조정
- 11.3 에이전트 그래프 구성
- 11.4 에이전트 그래프 구조 이해하기
- 11.5 에이전트 챗봇 실행: Read-Eval-Print 루프
- 11.6 요청 실행하기
- 11.6.1 단계별 디버깅
- 11.7 에이전트 확장: 날씨 예보 도구 추가
- 11.7.1 모의 날씨 서비스 구현
- 11.7.2 날씨 예보 도구 만들기
- 11.7.3 다중 도구 지원을 위한 에이전트 갱신
- 11.8 다중 도구 에이전트 실행
- 11.8.1 다중 도구 에이전트 실행(초기 동작)
- 11.8.2 시스템 지침을 통한 LLM 도구 사용 개선
- 11.9 빠른 개발을 위한 사전 구축 컴포넌트 활용
- 11.9.1 LangGraph ReAct 에이전트를 사용하도록 리팩터링
- 11.9.2 사전 구축 에이전트 실행
- 11.9.3 LangSmith를 활용한 관찰과 디버깅
- 11.9.4 LangSmith 추적 활성화
- 요약
- 12장 다중 에이전트 시스템
- 12.1 숙소 예약 에이전트 구축
- 12.1.1 호텔 예약 도구
- 12.1.2 B&B 예약 툴
- 12.1.3 ReAct 방식의 숙소 예약 에이전트
- 12.2 라우터 기반 여행 어시스턴트 구축
- 12.2.1 라우터 에이전트 설계
- 12.2.2 라우팅 로직
- 12.2.3 다중 에이전트 그래프 구축
- 12.2.4 라우터 에이전트 실행
- 12.3 Supervisor 컴포넌트를 활용한 다중 에이전트 요청 처리
- 12.3.1 Supervisor 패턴: 에이전트를 관리하는 에이전트
- 12.3.2 ‘일방향’에서 ‘양방향’ 상호작용으로
- 12.3.3 Supervisor 에이전트 실행
- 요약
- 13장 MCP 서버 구축과 활용
- 13.1 MCP 서버 소개
- 13.1.1 문제: 대규모 문맥 통합
- 13.1.2 해결책: 모델 문맥 프로토콜
- 13.1.3 MCP 생태계
- 13.2 MCP 서버 구축 방법
- 13.2.1 MCP 서버 개발을 위한 핵심 자료
- 13.2.2 공식 언어별 MCP SDK
- 13.2.3 LLM 애플리케이션과 에이전트에서 MCP 서버 활용
- 13.3 날씨 MCP 서버 구축
- 13.3.1 MCP 서버 구현
- 13.3.2 MCP Inspector로 MCP 서버 살펴보기
- 13.3.3 테스트용 MCP 호스트에서 MCP 서버 사용하기
- 13.4 에이전트에 날씨 MCP 도구 통합하기
- 13.4.1 실시간 날씨 데이터를 쓰도록 여행 에이전트 준비하기
- 13.4.2 AccuWeather MCP 도구 통합하기
- 13.4.3 에이전트 채팅 루프 갱신하기
- 13.4.4 로컬 도구와 원격 도구 결합하기
- 13.4.5 테스트 및 검증
- 13.4.6 복합 질의에 에이전트 사용하기
- 요약
- 14장 AI 에이전트의 운영 환경 적용: 기억, 가드레일 및 추가 고려 사항
- 14.1 기억
- 14.1.1 기억의 유형
- 14.1.2 단기 기억이 필요한 이유
- 14.1.3 LangGraph의 체크포인트
- 14.1.4 여행 도우미에 단기 기억 추가하기
- 14.1.5 체크포인터를 적용한 도우미 실행하기
- 14.1.6 과거 체크포인트로 상태 되감기
- 14.2 가드레일
- 14.2.1 여행과 무관한 질문을 차단하는 가드레일 구현하기
- 14.2.2 에이전트 수준에서 더 엄격한 가드레일 구현하기
- 14.3 추가 고려 사항
- 14.3.1 장기 사용자 기억과 애플리케이션 기억
- 14.3.2 인간 개입 구조
- 14.3.3 모델 사후 가드레일
- 14.3.4 AI 에이전트와 애플리케이션 평가
- 14.3.5 LangGraph 플랫폼과 OAP 배포
- 요약


