LangGraph로 만드는 AI 에이전트 서비스
Regular price
$32.58
Sale price
Regular price
✈️
Estimated delivery date 예상 배송일
Standard Shipping
불러오는 중...
주문일로부터 8-12 영업일
Express Shipping
불러오는 중...
주문일로부터 6-8 영업일
Couldn't load pickup availability
출판사 리뷰
출판사 리뷰
목차
목차
서문
저자 소개
추천사
1부 시작하기
1장 에이전트의 시대
AI 에이전트의 시대
1.1 생성형 AI의 발전 속도
1.1-1 폭발적인 성장의 시작
1.1-2 2026년, AI는 어디까지 왔는가?
1.1-3 왜 발전 속도가 중요한가?
1.2 AI 에이전트의 능력
1.2-1 LLM의 한계
1.2-2 AI 에이전트란 무엇인가?
1.2-3 에이전트의 핵심 구성 요소
1.2-4 생각하고, 행동하고, 관찰하기
1.2-5 기존 소프트웨어와 무엇이 다른가?
1.2-6 에이전트는 '새로운 팀원'
1.3 AI 에이전트의 실생활 예시
1.3-1 ChatGPT: 에이전트로의 진화
1.3-2 에이전트 도입의 확산
1.3-3 왜 지금 배워야 하는가?
1.4 AI 에이전트 개발을 시작해 보자
1.4 AI 에이전트 개발을 시작해 보자
1.4-1 이 책에서 배울 것
1.4-2 왜 LangChain과 LangGraph인가?
핵심 정리
2장 개발 시작하기
개발 시작하기
2.1 개발 환경 설정
2.1-1 Python 설치
2.1-2 패키지 관리자 사용하기
2.1-3 LangChain & LangGraph 설치
2.1-4 Streamlit으로 채팅 UI 만들기
2.2 LLM 모델 사용 준비
2.2-1 OpenAI API 키 발급
2.2-2 모델 선택 가이드
2.3 프로젝트 구성
2.3-1 프로젝트 구조 생성
2.3-2 환경 변수 및 API 키 관리
2.3-3 첫 번째 에이전트 만들기
2.3-4 애플리케이션 실행
2.3-5 프로젝트 공유 준비
핵심 정리
3장 LangChain
3.1 LangChain 첫걸음
3.1-1 LLM 개발, 생각보다 복잡하다
3.1-2 LangChain 소개
3.1-3 LangChain과 커뮤니티
3.1-4 LangChain 공식문서
3.2 챗 모델
3.2-1 Invoke 메서드로 챗 모델 호출하기
3.2-2 챗 모델 활용하기
3.2-3 스트리밍 호출
3.2-4 다양한 모델 공급자 지원
3.3 메시지
3.3-1 메시지 타입
3.3-2 왜 여러 유형의 메시지가 필요할까?
3.3-3 SystemMessage 활용하기
3.3-4 AIMessage 활용하기
3.3-5 스트리밍과 MessageChunk
3.4 프롬프트
3.4-1 프롬프트란 무엇인가?
3.4-2 왜 프롬프트가 중요한가?
3.4-3 프롬프트 템플릿이 필요한 이유
3.4-4 프롬프트 템플릿 사용하기
3.5 러너블
3.5-1 러너블이란 무엇인가?
3.5-2 왜 러너블이 중요한가?
3.5-3 러너블의 핵심 인터페이스
3.5-4 러너블 활용 예제
3.5-5 RunnableLambda
3.6 러너블 설정
3.6-1 RunnableConfig
3.6-2 콜백
3.6-3 Configurable
3.7 LCEL
3.7-1 LCEL 기본 문법
3.7-2 함수 연결하기
3.7-3 RunnableParallel
3.7-4 RunnablePassthrough
핵심 정리
4장 프롬프트 엔지니어링프롬프트 엔지니어링
4.1 프롬프트 엔지니어링 소개
4.1-1 프롬프트 엔지니어링이 해결하는 문제들
4.1-2 프롬프트 엔지니어링을 시작하기 전에
4.1-3 프롬프트 엔지니어링은 반복적인 과정이다
4.2 프롬프트 엔지니어링의 기본 원칙
4.2-1 명확하고 직접적이며 상세하게
4.2-2 구조화 프롬프트: XML과 Markdown 활용
4.2-3 실전 예시: 구조화 프롬프트
4.3 프롬프트 엔지니어링의 핵심 기법
4.3-1 페르소나
4.3-2 맥락 정보 제공하기
4.3-3 사고 연쇄
4.3-4 퓨샷 프롬프팅
4.4 모델 파라미터: 프롬프트를 넘어 LLM을 제어하는 힘
4.4-1 샘플링 파라미터: 출력의 다양성 제어
4.4-2 출력 제어 파라미터
4.4-3 반복 억제 파라미터 116
4.4-4 프로덕션 환경에서의 최적화
핵심 정리
2부 핵심 구성 요소
RAG
5장 RAG
5.1 LLM 모델의 한계
5.1-1 정적인 학습 데이터의 한계
5.1-2 지식 단절 문제
5.1-3 환각 현상과의 연결
5.1-4 파인튜닝의 한계
5.1-5 더 나은 해결책의 필요성
5.2 RAG 소개
5.2-1 RAG란?
5.2-2 RAG의 장점
5.2-3 RAG의 핵심 구성 요소
5.3 RAG 구현
5.3-1 OpenSearch 소개
5.3-2 OpenSearch 설치
5.3-3 문서 인덱싱
5.3-4 검색 및 답변 생성
5.3-5 LangChain LCEL을 활용한 간편 구현
5.4 Retriever 성능 개선 - Hybrid Search
5.4-1 임베딩이란?
5.4-2 검색 방식의 종류
5.4-3 하이브리드 검색 구현
5.4-4 가중치 튜닝
핵심 정리
메모리
6장 메모리
6.1 메모리란?
6.1-1 메모리가 없을 때
6.1-2 메모리가 있을 때
6.1-3 LLM은 왜 기억을 못할까?
6.2 메모리 전략
6.2-1 전체 저장(Full History)
6.2-2 최근 N개만 저장(Window)
6.2-3 요약 저장(Summary)
6.2-4 전략 비교
6.3 전체 대화 저장하기
6.3-1 기본 구현
6.3-2 동작 원리
6.3-3 대화 기록 확인하기
6.3-4 session_id의 중요성
6.4 최근 대화만 저장하기
6.4-1 메시지 자르기 구현
6.4-2 trim_messages 옵션
6.4-3 토큰 기반 자르기
6.5 대화 요약하기
6.5-1 요약 메모리 구현
6.5-2 동작 원리
6.5-3 다양한 저장소 활용하기
핵심 정리
7장 메모리
도구와 MCP
7.1 도구와 MCP 개요
7.1-1 LLM과 도구의 역할 분담
7.1-2 도구의 개념과 구조 176
7.1-3 LangChain에서의 도구 정의 방식
7.2 MCP 프로토콜 이해하기
7.2-1 MCP의 아키텍처
7.2-2 도구 발견과 호출: tools/list, tools/call
7.2-3 오류 처리
7.2-4 MCP와 LangChain 통합
7.2-5 MCP 도입 시 고려사항
핵심 정리
구조화된
8장 구조화된 출력출력
8.1 구조화된 출력이란?
8.1-1 자유 텍스트 응답의 문제
8.1-2 약속된 형식으로 응답받기
8.1-3 구조화된 출력이 없을 때
8.1-4 구조화된 출력이 있을 때
8.1-5 핵심 장점
8.2 Pydantic 스키마 기초
8.2-1 Pydantic이란?
8.2-2 BaseModel로 스키마 정의하기
8.2-3 Field로 상세 설명 추가하기
8.2-4 타입 힌트의 중요성
8.2-5 완성된 스키마 예제
8.2-6 스키마 설계 원칙
8.3 LangChain에서 구조화된 출력 사용하기
8.3-1 with_structured_output 메서드
3-2 기본 사용법
8.3-3 반환 값은 Pydantic 객체
8.3-4 동작 원리
8.3-5 프롬프트와 함께 사용하기
8.4 method 옵션 이해하기
8.4-1 세 가지 method 옵션
8.4-2 json_schema (기본값)
8.4-3 function_calling
8.4-4 json_mode
8.4-5 method 선택 가이드
8.4-6 코드 예제
8.4-7 strict 옵션
8.4-8 include_raw 옵션
8.5 실전 활용
8.5-1 여러 휴가 신청 한 번에 처리하기
8.5-2 선택지 제한하기
8.5-3 선택적 필드 처리하기
핵심 정리
3부 에이전트 구축
9장 에이전트 구축
LangGraph
9.1 LangGraph란?
9.1-1 왜 LangGraph인가?
9.1-2 LangGraph의 핵심 아이디어
9.1-3 LCEL vs. LangGraph
9.2 StateGraph의 기본 구조
9.2-1 State: 그래프의 메모리
9.2-2 Node: 작업 수행자
9.2-3 Edge: 연결 경로
9.2-4 첫 번째 그래프 만들기
9.3 노드와 엣지 추가하기
9.3-1 노드 등록하기
9.3-2 순차 연결
9.3-3 조건부 분기
9.3-4 HR 요청 분류 에이전트
9.3-5 루프
9.3-6 병렬 실행
9.3-7 Subgraph
9.3-8 동적 라우팅
9.4 그래프 실행하기
9.4-1 컴파일
9.4-2 동기 실행(invoke)
9.4-3 스트리밍 실행
9.4-4 실행 흐름 디버깅
9.5 영속성과 체크포인트
9.5-1 왜 영속성이 필요한가?
9.5-2 InMemorySaver 사용하기
9.5-3 세션 관리 (thread_id)
9.5-4 휴먼 인 더 루프
핵심 정리
10장 단일 에이전트 설계단일 에이전트 설계
10.1 서비스 요구에서 단일 에이전트 설계까지
10.1-1 기능 요구를 에이전트 문제로 바꾸기
10.1-2 입력·출력·품질 기준으로 다시 쓰기
10.2 단일 에이전트 아키텍처의 기본 구조
10.2-1 한 화면·한 엔드포인트·한 에이전트
10.2-2 입력 파싱·검증 레이어
10.2-3 LLM + RAG + 도구 호출 레이어
10.2-4 후처리·포맷팅 레이어
10.2-5 관측 가능성·오류 처리 레이어
10.3 단일 에이전트를 위한 선형 워크플로우 패턴
10.3-1 왜 '선형 워크플로우'로 보는가?
10.3-2 패턴 A: 기본 순차형 워크플로우
10.3-3 패턴 B: 의도 분기형 워크플로우
10.3-4 패턴 C: 병렬 도구 호출 워크플로우
10.3-5 패턴 D: 툴 퍼스트 워크플로우
10.3-6 패턴 선택을 위한 간단한 체크리스트
10.4 에이전틱 워크플로우와 LangChain ReAct 에이전트
10.4-1 선형 워크플로우에 '선택과 반복' 더하기
10.4-2 ReAct 패턴: 생각과 행동의 반복
10.4-3 create_agent로 ReAct 에이전트 만들기
10.4-4 단일 에이전트에서 에이전틱 워크플로우를 어디까지 쓸까?
10.5 실습 선형 워크플로우 + ReAct 에이전트 + 휴먼 인 더 루프
10.5-1 시나리오: 교육비 지원 신청 에이전트
10.5-2 도구 정의하기: 선형 워크플로우를 잘게 나누기
10.5-3 휴먼 인 더 루프 미들웨어로 승인 단계 추가하기
10.5-4 간단한 CLI 루프로 에이전트 실행해 보기
10.5-5 선형 워크플로우의 패턴과 휴먼 인 더 루프를 어떻게 조합했는가?
10.6 단일 에이전트의 한계 신호 읽기
10.6-1 단일 에이전트가 한계에 다다랐다는 신호들
10.6-2 단일 에이전트에서 확장해 나갈 때 확인할 것들
핵심 정리
11장 멀티 에이전트 멀티 에이전트
11.1 단일 에이전트를 넘어서는 문제들
11.1-1 단일 에이전트 복잡도를 보는 네 가지 축
11.1-2 멀티 에이전트를 고려해야 하는 시점
11.1-3 멀티 에이전트의 장단점: 구조·운영·서비스 관점에서 보기
11.2 멀티 에이전트 구조의 구성 요소
11.2-1 역할 중심 에이전트 정의
11.2-2 상태 중심 설계
11.2-3 상위 그래프와 서브그래프
11.3 주요 멀티 에이전트 패턴
11.3-1 라우터-전문가 패턴
11.3-2 검증자·가드레일 패턴
11.3-3 기타 패턴
11.4 실습 예제 LangGraph로 멀티 에이전트 그래프 설계·구현하기
11.4-1 예제 구조 한눈에 보기
11.4-2 도메인별 단일 에이전트 만들기(create_agent)
11.4-3 create_supervisor로 라우터-전문가 패턴 구현하기
11.4-4 수동 StateGraph 설계와 Supervisor 패턴 비교
11.5 도메인 예제 HR 상담 서비스에 멀티에이전트 적용하기
11.5-1 전체 구조 한눈에 보기
11.5-2 에이전트별 설계 포인트
11.5-3 운영 중 구조를 진화시키기
11.5-4 멀티 에이전트 설계 시 스스로에게 던질 질문
핵심 정리
4부 프로덕션 운영
12장 관측 가능성
관측 가능성
12.1 에이전트 관측 가능성
12.1-1 에이전트 운영의 출발점
12.1-2 우리가 다루는 관측 가능성의 영역
12.1-3 에이전트 관찰의 단위
12.1-4 관찰을 이루는 세 가지 축
12.1-5 실전 도구와 12장의 흐름
12.2 로그와 지표
12.2-1 에이전트 실행 로그의 계층 구조
12.2-2 단위별 필수 로그 필드
12.2-3 관찰 도구와 애플리케이션 로그의 역할 분담
12.2-4 기본 지표 설계
12.2-5 단위별 지표
12.2-6 운영 전략
12.3 흐름 추적
12.3-1 로그와 지표 사이를 잇는 퍼즐 조각
12.3-2 에이전트 실행을 흐름으로 그려 보기
12.3-3 Langfuse 설치 및 설정
12.3-4 Langfuse의 흐름 추적 모델: Trace와 Observation
12.3-5 LangGraph + LangChain + Langfuse 연동 예시
12.3-6 흐름 추적을 운영에 활용하는 방법
12.4 관측 가능성을 활용한 운영 흐름
12.4-1 질문에서 출발하는 운영 흐름
12.4-2 자주 마주치는 세 가지 상황
핵심 정리
13장 평가와 품질 관리평가와 품질 관리
13.1 RAG 평가 지표
13.1-1 검색기 평가
13.1-2 Generator 평가
13.1-3 End-to-End 평가
13.1-4 평가 지표 선택 가이드
13.2 평가 도구와 자동화
13.2-1 Langfuse로 평가 점수 기록
13.2-2 RAGAS로 자동 평가
13.2-3 Langfuse와 RAGAS 통합
13.3 LLM 평가와 로직 기반 평가
13.3-1 LLM-as-a-judge란?
13.3-2 LLM 평가 구현
13.3-3 로직 기반 평가(Structured Output 검증)
13.3-4 CI/CD 파이프라인에 통합
13.3-5 평가 방법 선택 가이드
13.4 Reasoning 디버깅 실패 원인 추적하기
13.4-1 최종 답변만으로는 원인을 알 수 없다
13.4-2 에이전트의 실행 단계 이해하기
13.4-3 content_blocks로 모델의 사고 과정 들여다보기
핵심 정리
14장 성능 & 비용 최적화
능 & 비용 최적화
14.1 왜 최적화가 필요한가?
14.1-1 생성형 AI 서비스가 다른 이유
14.4-2 비용 계산해 보기
14.1-3 속도 문제
14.1-4 최적화의 세 가지 축
14.2 측정 최적화의 시작점
14.2-1 무엇을 측정해야 하는가?
14.2-2 워터폴 분석
14.2-3 Langfuse에서 병목 찾기
14.2-4 비용 측정
14.2-5 측정 후 우선순위 정하기
14.3 병렬 처리 속도의 핵심
14.3-1 순차 실행의 문제
14.3-2 병렬 실행의 효과
14.3-3 LangGraph로 병렬 처리 구현
14.3-4 배치 처리
14.3-5 병렬 처리 시 주의사항
14.3-6 실전 패턴: 검색 + 검증 병렬화
14.4 추론 강도 조절
14.4-1 Reasoning Effort란?
14.4-2 분류기 기반 라우팅
14.4-3 계단식 호출(Cascading)
14.4-4 LangGraph로 라우팅 구현
14.4-5 Fallback 패턴
14.4-6 라우팅 시 주의사항
14.5 프롬프트 & 토큰 최적화
14.5-1 프롬프트 압축
14.5-2 출력 길이 제한
14.5-3 대화 요약으로 컨텍스트 절감
14.5-4 컨텍스트 필터링
14.5-5 토큰 수 추정
핵심 정리
15장 신뢰성과 에러 처리뢰성과 에러 처리
15.1 AI 에이전트의 실패 이해하기
15.1-1 오류와 장애
15.1-2 재시도할 수 있는 오류
15.1-3 핵심 패턴
15.2 오류 처리 재시도와 폴백
15.2-1 Tenacity로 똑똑한 재시도
15.2-2 LangChain 네이티브 재시도
15.2-3 Fallback으로 오류 우회
핵심 정리
안전한 에이전트 개발
16.1 여기까지 오며 만든 것들
16.1-1 에이전트가 예상대로만 동작할까?
16.1-2 전통적인 코드 vs. AI 에이전트 16.1-3 16장에서 배울 것
16.1-4 가드레일이 필요한 순간들
16.2 시스템 프롬프트 보호하기
16.2-1 시스템 프롬프트는 왜 중요할까?
16.2-2 시스템 프롬프트 노출 시도 유형
16.2-3 방어 전략 1 프롬프트에 보호 규칙 추가
16.2-4 방어 전략 2 입력 검증 (코드 레벨)
16.2-5 방어 전략 3 민감 정보 분리
16.2-6 에이전트에 통합하기
16.3 입력 가드레일
16.3-1 입력 가드레일이란?
16.3-2 민감 정보 마스킹
16.3-3 유해 콘텐츠 필터링
16.3-4 계층화된 입력 가드레일
16.3-5 에이전트에 적용하기
16.4 출력 가드레일
16.4-1 왜 출력도 검증해야 할까?
16.4-2 출력 가드레일의 역할
16.4-3 금지 키워드 필터
16.4-4 민감 정보 마스킹
16.4-5 시스템 프롬프트 유출 탐지
16.4-6 통합 출력 가드레일
16.4-7 전체 파이프라인
16.5 에이전트 권한 제어
16.5-1 과도한 권한 부여의 위험
16.5-2 구현 예제
핵심 정리
저자 소개
추천사
1부 시작하기
1장 에이전트의 시대
AI 에이전트의 시대
1.1 생성형 AI의 발전 속도
1.1-1 폭발적인 성장의 시작
1.1-2 2026년, AI는 어디까지 왔는가?
1.1-3 왜 발전 속도가 중요한가?
1.2 AI 에이전트의 능력
1.2-1 LLM의 한계
1.2-2 AI 에이전트란 무엇인가?
1.2-3 에이전트의 핵심 구성 요소
1.2-4 생각하고, 행동하고, 관찰하기
1.2-5 기존 소프트웨어와 무엇이 다른가?
1.2-6 에이전트는 '새로운 팀원'
1.3 AI 에이전트의 실생활 예시
1.3-1 ChatGPT: 에이전트로의 진화
1.3-2 에이전트 도입의 확산
1.3-3 왜 지금 배워야 하는가?
1.4 AI 에이전트 개발을 시작해 보자
1.4 AI 에이전트 개발을 시작해 보자
1.4-1 이 책에서 배울 것
1.4-2 왜 LangChain과 LangGraph인가?
핵심 정리
2장 개발 시작하기
개발 시작하기
2.1 개발 환경 설정
2.1-1 Python 설치
2.1-2 패키지 관리자 사용하기
2.1-3 LangChain & LangGraph 설치
2.1-4 Streamlit으로 채팅 UI 만들기
2.2 LLM 모델 사용 준비
2.2-1 OpenAI API 키 발급
2.2-2 모델 선택 가이드
2.3 프로젝트 구성
2.3-1 프로젝트 구조 생성
2.3-2 환경 변수 및 API 키 관리
2.3-3 첫 번째 에이전트 만들기
2.3-4 애플리케이션 실행
2.3-5 프로젝트 공유 준비
핵심 정리
3장 LangChain
3.1 LangChain 첫걸음
3.1-1 LLM 개발, 생각보다 복잡하다
3.1-2 LangChain 소개
3.1-3 LangChain과 커뮤니티
3.1-4 LangChain 공식문서
3.2 챗 모델
3.2-1 Invoke 메서드로 챗 모델 호출하기
3.2-2 챗 모델 활용하기
3.2-3 스트리밍 호출
3.2-4 다양한 모델 공급자 지원
3.3 메시지
3.3-1 메시지 타입
3.3-2 왜 여러 유형의 메시지가 필요할까?
3.3-3 SystemMessage 활용하기
3.3-4 AIMessage 활용하기
3.3-5 스트리밍과 MessageChunk
3.4 프롬프트
3.4-1 프롬프트란 무엇인가?
3.4-2 왜 프롬프트가 중요한가?
3.4-3 프롬프트 템플릿이 필요한 이유
3.4-4 프롬프트 템플릿 사용하기
3.5 러너블
3.5-1 러너블이란 무엇인가?
3.5-2 왜 러너블이 중요한가?
3.5-3 러너블의 핵심 인터페이스
3.5-4 러너블 활용 예제
3.5-5 RunnableLambda
3.6 러너블 설정
3.6-1 RunnableConfig
3.6-2 콜백
3.6-3 Configurable
3.7 LCEL
3.7-1 LCEL 기본 문법
3.7-2 함수 연결하기
3.7-3 RunnableParallel
3.7-4 RunnablePassthrough
핵심 정리
4장 프롬프트 엔지니어링프롬프트 엔지니어링
4.1 프롬프트 엔지니어링 소개
4.1-1 프롬프트 엔지니어링이 해결하는 문제들
4.1-2 프롬프트 엔지니어링을 시작하기 전에
4.1-3 프롬프트 엔지니어링은 반복적인 과정이다
4.2 프롬프트 엔지니어링의 기본 원칙
4.2-1 명확하고 직접적이며 상세하게
4.2-2 구조화 프롬프트: XML과 Markdown 활용
4.2-3 실전 예시: 구조화 프롬프트
4.3 프롬프트 엔지니어링의 핵심 기법
4.3-1 페르소나
4.3-2 맥락 정보 제공하기
4.3-3 사고 연쇄
4.3-4 퓨샷 프롬프팅
4.4 모델 파라미터: 프롬프트를 넘어 LLM을 제어하는 힘
4.4-1 샘플링 파라미터: 출력의 다양성 제어
4.4-2 출력 제어 파라미터
4.4-3 반복 억제 파라미터 116
4.4-4 프로덕션 환경에서의 최적화
핵심 정리
2부 핵심 구성 요소
RAG
5장 RAG
5.1 LLM 모델의 한계
5.1-1 정적인 학습 데이터의 한계
5.1-2 지식 단절 문제
5.1-3 환각 현상과의 연결
5.1-4 파인튜닝의 한계
5.1-5 더 나은 해결책의 필요성
5.2 RAG 소개
5.2-1 RAG란?
5.2-2 RAG의 장점
5.2-3 RAG의 핵심 구성 요소
5.3 RAG 구현
5.3-1 OpenSearch 소개
5.3-2 OpenSearch 설치
5.3-3 문서 인덱싱
5.3-4 검색 및 답변 생성
5.3-5 LangChain LCEL을 활용한 간편 구현
5.4 Retriever 성능 개선 - Hybrid Search
5.4-1 임베딩이란?
5.4-2 검색 방식의 종류
5.4-3 하이브리드 검색 구현
5.4-4 가중치 튜닝
핵심 정리
메모리
6장 메모리
6.1 메모리란?
6.1-1 메모리가 없을 때
6.1-2 메모리가 있을 때
6.1-3 LLM은 왜 기억을 못할까?
6.2 메모리 전략
6.2-1 전체 저장(Full History)
6.2-2 최근 N개만 저장(Window)
6.2-3 요약 저장(Summary)
6.2-4 전략 비교
6.3 전체 대화 저장하기
6.3-1 기본 구현
6.3-2 동작 원리
6.3-3 대화 기록 확인하기
6.3-4 session_id의 중요성
6.4 최근 대화만 저장하기
6.4-1 메시지 자르기 구현
6.4-2 trim_messages 옵션
6.4-3 토큰 기반 자르기
6.5 대화 요약하기
6.5-1 요약 메모리 구현
6.5-2 동작 원리
6.5-3 다양한 저장소 활용하기
핵심 정리
7장 메모리
도구와 MCP
7.1 도구와 MCP 개요
7.1-1 LLM과 도구의 역할 분담
7.1-2 도구의 개념과 구조 176
7.1-3 LangChain에서의 도구 정의 방식
7.2 MCP 프로토콜 이해하기
7.2-1 MCP의 아키텍처
7.2-2 도구 발견과 호출: tools/list, tools/call
7.2-3 오류 처리
7.2-4 MCP와 LangChain 통합
7.2-5 MCP 도입 시 고려사항
핵심 정리
구조화된
8장 구조화된 출력출력
8.1 구조화된 출력이란?
8.1-1 자유 텍스트 응답의 문제
8.1-2 약속된 형식으로 응답받기
8.1-3 구조화된 출력이 없을 때
8.1-4 구조화된 출력이 있을 때
8.1-5 핵심 장점
8.2 Pydantic 스키마 기초
8.2-1 Pydantic이란?
8.2-2 BaseModel로 스키마 정의하기
8.2-3 Field로 상세 설명 추가하기
8.2-4 타입 힌트의 중요성
8.2-5 완성된 스키마 예제
8.2-6 스키마 설계 원칙
8.3 LangChain에서 구조화된 출력 사용하기
8.3-1 with_structured_output 메서드
3-2 기본 사용법
8.3-3 반환 값은 Pydantic 객체
8.3-4 동작 원리
8.3-5 프롬프트와 함께 사용하기
8.4 method 옵션 이해하기
8.4-1 세 가지 method 옵션
8.4-2 json_schema (기본값)
8.4-3 function_calling
8.4-4 json_mode
8.4-5 method 선택 가이드
8.4-6 코드 예제
8.4-7 strict 옵션
8.4-8 include_raw 옵션
8.5 실전 활용
8.5-1 여러 휴가 신청 한 번에 처리하기
8.5-2 선택지 제한하기
8.5-3 선택적 필드 처리하기
핵심 정리
3부 에이전트 구축
9장 에이전트 구축
LangGraph
9.1 LangGraph란?
9.1-1 왜 LangGraph인가?
9.1-2 LangGraph의 핵심 아이디어
9.1-3 LCEL vs. LangGraph
9.2 StateGraph의 기본 구조
9.2-1 State: 그래프의 메모리
9.2-2 Node: 작업 수행자
9.2-3 Edge: 연결 경로
9.2-4 첫 번째 그래프 만들기
9.3 노드와 엣지 추가하기
9.3-1 노드 등록하기
9.3-2 순차 연결
9.3-3 조건부 분기
9.3-4 HR 요청 분류 에이전트
9.3-5 루프
9.3-6 병렬 실행
9.3-7 Subgraph
9.3-8 동적 라우팅
9.4 그래프 실행하기
9.4-1 컴파일
9.4-2 동기 실행(invoke)
9.4-3 스트리밍 실행
9.4-4 실행 흐름 디버깅
9.5 영속성과 체크포인트
9.5-1 왜 영속성이 필요한가?
9.5-2 InMemorySaver 사용하기
9.5-3 세션 관리 (thread_id)
9.5-4 휴먼 인 더 루프
핵심 정리
10장 단일 에이전트 설계단일 에이전트 설계
10.1 서비스 요구에서 단일 에이전트 설계까지
10.1-1 기능 요구를 에이전트 문제로 바꾸기
10.1-2 입력·출력·품질 기준으로 다시 쓰기
10.2 단일 에이전트 아키텍처의 기본 구조
10.2-1 한 화면·한 엔드포인트·한 에이전트
10.2-2 입력 파싱·검증 레이어
10.2-3 LLM + RAG + 도구 호출 레이어
10.2-4 후처리·포맷팅 레이어
10.2-5 관측 가능성·오류 처리 레이어
10.3 단일 에이전트를 위한 선형 워크플로우 패턴
10.3-1 왜 '선형 워크플로우'로 보는가?
10.3-2 패턴 A: 기본 순차형 워크플로우
10.3-3 패턴 B: 의도 분기형 워크플로우
10.3-4 패턴 C: 병렬 도구 호출 워크플로우
10.3-5 패턴 D: 툴 퍼스트 워크플로우
10.3-6 패턴 선택을 위한 간단한 체크리스트
10.4 에이전틱 워크플로우와 LangChain ReAct 에이전트
10.4-1 선형 워크플로우에 '선택과 반복' 더하기
10.4-2 ReAct 패턴: 생각과 행동의 반복
10.4-3 create_agent로 ReAct 에이전트 만들기
10.4-4 단일 에이전트에서 에이전틱 워크플로우를 어디까지 쓸까?
10.5 실습 선형 워크플로우 + ReAct 에이전트 + 휴먼 인 더 루프
10.5-1 시나리오: 교육비 지원 신청 에이전트
10.5-2 도구 정의하기: 선형 워크플로우를 잘게 나누기
10.5-3 휴먼 인 더 루프 미들웨어로 승인 단계 추가하기
10.5-4 간단한 CLI 루프로 에이전트 실행해 보기
10.5-5 선형 워크플로우의 패턴과 휴먼 인 더 루프를 어떻게 조합했는가?
10.6 단일 에이전트의 한계 신호 읽기
10.6-1 단일 에이전트가 한계에 다다랐다는 신호들
10.6-2 단일 에이전트에서 확장해 나갈 때 확인할 것들
핵심 정리
11장 멀티 에이전트 멀티 에이전트
11.1 단일 에이전트를 넘어서는 문제들
11.1-1 단일 에이전트 복잡도를 보는 네 가지 축
11.1-2 멀티 에이전트를 고려해야 하는 시점
11.1-3 멀티 에이전트의 장단점: 구조·운영·서비스 관점에서 보기
11.2 멀티 에이전트 구조의 구성 요소
11.2-1 역할 중심 에이전트 정의
11.2-2 상태 중심 설계
11.2-3 상위 그래프와 서브그래프
11.3 주요 멀티 에이전트 패턴
11.3-1 라우터-전문가 패턴
11.3-2 검증자·가드레일 패턴
11.3-3 기타 패턴
11.4 실습 예제 LangGraph로 멀티 에이전트 그래프 설계·구현하기
11.4-1 예제 구조 한눈에 보기
11.4-2 도메인별 단일 에이전트 만들기(create_agent)
11.4-3 create_supervisor로 라우터-전문가 패턴 구현하기
11.4-4 수동 StateGraph 설계와 Supervisor 패턴 비교
11.5 도메인 예제 HR 상담 서비스에 멀티에이전트 적용하기
11.5-1 전체 구조 한눈에 보기
11.5-2 에이전트별 설계 포인트
11.5-3 운영 중 구조를 진화시키기
11.5-4 멀티 에이전트 설계 시 스스로에게 던질 질문
핵심 정리
4부 프로덕션 운영
12장 관측 가능성
관측 가능성
12.1 에이전트 관측 가능성
12.1-1 에이전트 운영의 출발점
12.1-2 우리가 다루는 관측 가능성의 영역
12.1-3 에이전트 관찰의 단위
12.1-4 관찰을 이루는 세 가지 축
12.1-5 실전 도구와 12장의 흐름
12.2 로그와 지표
12.2-1 에이전트 실행 로그의 계층 구조
12.2-2 단위별 필수 로그 필드
12.2-3 관찰 도구와 애플리케이션 로그의 역할 분담
12.2-4 기본 지표 설계
12.2-5 단위별 지표
12.2-6 운영 전략
12.3 흐름 추적
12.3-1 로그와 지표 사이를 잇는 퍼즐 조각
12.3-2 에이전트 실행을 흐름으로 그려 보기
12.3-3 Langfuse 설치 및 설정
12.3-4 Langfuse의 흐름 추적 모델: Trace와 Observation
12.3-5 LangGraph + LangChain + Langfuse 연동 예시
12.3-6 흐름 추적을 운영에 활용하는 방법
12.4 관측 가능성을 활용한 운영 흐름
12.4-1 질문에서 출발하는 운영 흐름
12.4-2 자주 마주치는 세 가지 상황
핵심 정리
13장 평가와 품질 관리평가와 품질 관리
13.1 RAG 평가 지표
13.1-1 검색기 평가
13.1-2 Generator 평가
13.1-3 End-to-End 평가
13.1-4 평가 지표 선택 가이드
13.2 평가 도구와 자동화
13.2-1 Langfuse로 평가 점수 기록
13.2-2 RAGAS로 자동 평가
13.2-3 Langfuse와 RAGAS 통합
13.3 LLM 평가와 로직 기반 평가
13.3-1 LLM-as-a-judge란?
13.3-2 LLM 평가 구현
13.3-3 로직 기반 평가(Structured Output 검증)
13.3-4 CI/CD 파이프라인에 통합
13.3-5 평가 방법 선택 가이드
13.4 Reasoning 디버깅 실패 원인 추적하기
13.4-1 최종 답변만으로는 원인을 알 수 없다
13.4-2 에이전트의 실행 단계 이해하기
13.4-3 content_blocks로 모델의 사고 과정 들여다보기
핵심 정리
14장 성능 & 비용 최적화
능 & 비용 최적화
14.1 왜 최적화가 필요한가?
14.1-1 생성형 AI 서비스가 다른 이유
14.4-2 비용 계산해 보기
14.1-3 속도 문제
14.1-4 최적화의 세 가지 축
14.2 측정 최적화의 시작점
14.2-1 무엇을 측정해야 하는가?
14.2-2 워터폴 분석
14.2-3 Langfuse에서 병목 찾기
14.2-4 비용 측정
14.2-5 측정 후 우선순위 정하기
14.3 병렬 처리 속도의 핵심
14.3-1 순차 실행의 문제
14.3-2 병렬 실행의 효과
14.3-3 LangGraph로 병렬 처리 구현
14.3-4 배치 처리
14.3-5 병렬 처리 시 주의사항
14.3-6 실전 패턴: 검색 + 검증 병렬화
14.4 추론 강도 조절
14.4-1 Reasoning Effort란?
14.4-2 분류기 기반 라우팅
14.4-3 계단식 호출(Cascading)
14.4-4 LangGraph로 라우팅 구현
14.4-5 Fallback 패턴
14.4-6 라우팅 시 주의사항
14.5 프롬프트 & 토큰 최적화
14.5-1 프롬프트 압축
14.5-2 출력 길이 제한
14.5-3 대화 요약으로 컨텍스트 절감
14.5-4 컨텍스트 필터링
14.5-5 토큰 수 추정
핵심 정리
15장 신뢰성과 에러 처리뢰성과 에러 처리
15.1 AI 에이전트의 실패 이해하기
15.1-1 오류와 장애
15.1-2 재시도할 수 있는 오류
15.1-3 핵심 패턴
15.2 오류 처리 재시도와 폴백
15.2-1 Tenacity로 똑똑한 재시도
15.2-2 LangChain 네이티브 재시도
15.2-3 Fallback으로 오류 우회
핵심 정리
안전한 에이전트 개발
16.1 여기까지 오며 만든 것들
16.1-1 에이전트가 예상대로만 동작할까?
16.1-2 전통적인 코드 vs. AI 에이전트 16.1-3 16장에서 배울 것
16.1-4 가드레일이 필요한 순간들
16.2 시스템 프롬프트 보호하기
16.2-1 시스템 프롬프트는 왜 중요할까?
16.2-2 시스템 프롬프트 노출 시도 유형
16.2-3 방어 전략 1 프롬프트에 보호 규칙 추가
16.2-4 방어 전략 2 입력 검증 (코드 레벨)
16.2-5 방어 전략 3 민감 정보 분리
16.2-6 에이전트에 통합하기
16.3 입력 가드레일
16.3-1 입력 가드레일이란?
16.3-2 민감 정보 마스킹
16.3-3 유해 콘텐츠 필터링
16.3-4 계층화된 입력 가드레일
16.3-5 에이전트에 적용하기
16.4 출력 가드레일
16.4-1 왜 출력도 검증해야 할까?
16.4-2 출력 가드레일의 역할
16.4-3 금지 키워드 필터
16.4-4 민감 정보 마스킹
16.4-5 시스템 프롬프트 유출 탐지
16.4-6 통합 출력 가드레일
16.4-7 전체 파이프라인
16.5 에이전트 권한 제어
16.5-1 과도한 권한 부여의 위험
16.5-2 구현 예제
핵심 정리
저자
저자
전상우 인터넷 기업에서 대규모 트래픽을 안정적으로 처리하는 백엔드 시스템을 개발해 왔고, 지금은 금융 도메인에 AI 에이전트 기술을 접목하는 일을 하고 있습니다. 매일 달라지는 AI 변화 속도에 맞춰 개발 방식 또한 부지런히 업데이트하는 중입니다.
Payment & Security
Payment methods
Your payment information is processed securely. We do not store credit card details nor have access to your credit card information.
$99 이상 무료 배송
3% 리워드 크레딧 적립
Secure Payment

