LangChain으로 구현하는 LLM [파이썬, ChatGPT로 LLM 애플리케이션 만들기]
- 원서명Generative AI with LangChain: Build large language model (LLM) apps with Python, ChatGPT and other LLMs (ISBN 9781835083468)
- 지은이벤 아우파스(Ben Auffarth)
- 옮긴이이병욱
- ISBN : 9791161758350
- 35,000원 (eBook 28,000원)
- 2024년 03월 29일 펴냄
- 페이퍼백 | 408쪽 | 188*235mm
- 시리즈 : 데이터 과학
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/generative-ai-llm
요약
생성형 AI의 개요와 함께 LangChain 프레임워크를 사용한 실질적인 구현 사례까지 모두 10개의 장으로 구성해 포괄적으로 제공하는 책이다.
1장은 생성형 AI가 텍스트, 이미지, 그리고 비디오 처리를 어떻게 혁신적으로 변화시키는지 설명한다. 이 장에서는 LLM(Large Language Model, 거대 언어 모델) 등의 생성 모델을 소개하며, 그 잠재력을 자세히 살펴본다. 2장에서는 LangChain의 프레임워크를 활용한다. 낡은 지식, 행동 제한 그리고 환각의 위험과 같은 한계를 다루며, LangChain이 외부 데이터와 개입을 통합해 더 일관된 AI 응용 프로그램을 어떻게 구현하는지 설명한다.
3장은 환경 설정의 기본 지식을 다루며, Docker, Conda, Pip, Poetry 설치 안내부터 시작한다. OpenAI의 ChatGPT와 Hugging Face와 같은 다양한 공급 업체로부터 모델을 통합하는 방법에 대한 내용과 필요한 API 키를 얻는 과정을 설명한다. 4장에서는 정보 추출을 위한 밀도 체인(Chain of Density)을 알아보고, LangChain 데코레이터(decorator)와 표현 언어에 대한 논의를 통해 사용자 맞춤형 행동을 정의하는 방법을 설명한다. 5장은 ChatGPT와 같은 챗봇의 능력을 향상시키기 위해 검색 증강 생성(RAG, Retrieval-Augmented Generation)과 같은 방법을 설명한다. 6장은 소프트웨어 개발에서 부상하는 LLM의 역할을 조사하며, AI가 코딩 작업을 자동화하고 동적 코딩 비서로서의 역할 가능성을 알아본다. 7장은 생성형 AI와 데이터 과학의 공통점을 탐색하며, LLM이 생산성을 향상시키고 과학적 발견을 촉진할 수 있는 잠재력을 살펴본다. 8장은 미세 조정(fine-tuning)과 프롬프팅(prompting)과 같은 조건화 기술을 알아본다. 9장은 LLM을 실제 응용 프로그램 내에서 배치하는 데 있어서의 복잡성을 다루며, 성능 보장, 규제 요구 사항 충족, 규모에 대한 강건성 및 효과적인 모니터링을 위한 모범 사례를 살펴본다. 10장은 생성형 AI의 잠재적인 발전과 사회 기술적 도전에 대해 자세히 알아본다.
이 책에서 다루는 내용
◆ LLM을 이해하고 강점 및 한계 파악
◆ 생성형 AI의 기본 원리와 산업 동향 이해
◆ LangChain을 사용해 질문 응답 시스템 및 챗봇과 같은 LLM 앱 개발
◆ 트랜스포머 모델과 어텐션 메커니즘 이해
◆ Pandas와 파이썬을 사용해 데이터 분석 및 시각화 자동화
◆ 성능 향상을 위한 프롬프트 공학 이해
◆ LLM을 미세 조정하고 능력을 발휘하기 위한 도구 이해
◆ LangChain을 사용해 LLM을 서비스로 배포하고 평가 전략 적용
◆ 데이터 누출을 방지하기 위해 오픈 소스 LLM을 사용해 문서와 개인적으로 상호 작용하는 방법
이 책의 대상 독자
개발자, 연구자 그리고 LLM에 대해 더 알고 싶어하는 모든 사람이 대상으로 하는 책이다. 명확하고 간결하게 작성됐으며, 실습을 통해 학습할 수 있도록 다양한 코드 예제를 갖추고 있다.
초보자든 경험이 많은 개발자든, LLM과 LangChain을 최대한 이해하고 이 분야의 최신 동향을 선도하고자 하는 모든 이에게 가치 있는 자원이 될 것이다.
이 책의 구성
1장, ‘생성형 AI란 무엇인가?’에서는 생성형 AI가 텍스트, 이미지 그리고 비디오 처리를 혁신적으로 변화시키는 데 어떻게 핵심적인 역할을 하는지 설명한다. LLM과 같은 생성 모델을 소개하며, 이들의 기술적 기반과 다양한 분야에서의 변혁적인 잠재력을 자세히 소개한다. 이러한 모델의 이론적 배경, 신경망, 훈련 접근 방법 그리고 인간과 유사한 콘텐츠 생성에 대해 강조하고 다룬다. 또한 인공지능의 진화, 트랜스포머(Transformer) 아키텍처, 스테이블 디퓨전(Stable Diffusion)과 같은 텍스트에서 이미지로의 모델 그리고 음성과 비디오 응용에 대한 내용도 살펴본다.
2장, ‘LLM 응용을 위한 LangChain’에서는 LLM의 확률적 앵무새, 즉 진정한 이해 없이 언어를 모방하는 모델을 넘어설 필요성을 강조하고, 이를 위해 LangChain의 프레임워크를 활용한다. 낡은 지식, 행동 제한 그리고 환각의 위험과 같은 한계를 다루며, LangChain이 외부 데이터와 개입을 통합해 더 일관된 AI 애플리케이션을 어떻게 구현하는지 강조한다. 2장은 확률적 앵무새의 개념에 비판적으로 관여해, 유창하지만 의미 없는 언어를 생성하는 모델의 결핍을 소개하고 프롬프팅, 사고 과정 체인, 검색 기반의 논리가 어떻게 LLM을 강화해 맥락, 편향 그리고 불투명성과 관련된 문제를 해결하는지 설명한다.
3장, ‘LangChain으로 시작하기’에서는 이 책의 모든 예제를 실행하기 위해 환경을 설정하는 데 필요한 기본 지식을 제공한다. Docker, Conda, Pip, Poetry 설치 안내부터 시작하며, OpenAI의 ChatGPT와 Hugging Face와 같은 다양한 공급업체로부터 모델을 통합하는 방법과 필요한 API 키를 얻는 과정을 설명한다. 또한 오픈 소스 모델을 로컬에서 실행하는 방법도 다룬다. 아울러 LangChain을 사용해 고객 서비스 에이전트를 지원하는 LLM 앱을 만들어 LangChain이 작업을 간소화하고 응답의 정확도를 향상시킬 수 있는 예시를 보여준다.
4장, ‘능력 있는 비서 구축’에서는 LLM을 신뢰할 수 있는 비서로 변환하는 데에 관여해, 잘못된 정보를 줄이기 위해 사실 확인을 진행하고, 요약을 위한 정교한 프롬프팅 전략을 사용하며, 향상된 지식을 위해 외부 도구를 통합한다. 정보 추출을 위한 밀도 체인(Chain of Density)을 탐구하고 LangChain 데코레이터와 표현 언어에 대한 논의를 통해 사용자 맞춤형 행동을 정의하는 방법을 설명한다. 또한 LangChain에서 긴 문서를 처리하기 위한 맵 리듀스(map-reduce)를 소개하고, API 사용 비용을 관리하기 위한 토큰 모니터링에 대한 내용도 다룬다.
이 부분은 Streamlit 애플리케이션을 구현해 대화형 LLM 애플리케이션을 만들고, 함수 호출과 도구 사용을 통해 기본 텍스트 생성을 뛰어넘는 것에 중점을 두고 있다. “plan-and-solve” 및 “제로샷(zero-shot)”이라는 두 가지 명확한 에이전트 패러다임을 구현해 의사 결정 전략을 시연하는 데 사용된다.
5장, ‘ChatGPT 같은 챗봇 구축’에서는 ChatGPT와 같은 챗봇의 능력을 향상시키기 위해 검색 증강 생성과 같은 방법을 다룬다. 이 방법은 LLM에 외부 지식에 접근할 수 있는 기능을 제공해 정확성과 도메인 특화 능력을 향상시킨다. 특히 문서 벡터화, 효율적인 색인화, Milvus와 Pinecone과 같은 벡터 데이터베이스를 사용한 의미적 검색 등을 알아본다. 책에서는 챗봇을 구현하면서 책임 있는 의사 소통을 보장하기 위해 모더레이션 체인(moderation chains)을 포함시켰다. 이 챗봇은 깃허브에서 사용 가능하며, 대화 메모리(memory) 및 컨텍스트 관리와 같은 고급 주제를 탐구하는 기반 자료로 사용된다.
6장, ‘생성형 AI를 이용한 소프트웨어 개발’에서는 소프트웨어 개발에서 부상하는 LLM의 역할을 조사하며, AI가 코딩 작업을 자동화하고 동적 코딩 비서로서의 역할 가능성을 강조한다. AI 기반 소프트웨어 개발의 현재 상태를 탐구하고, 코드 일부를 생성하기 위한 모델 실험을 진행하며, LangChain을 사용한 자동 소프트웨어 개발 에이전트를 위한 디자인을 소개한다. 에이전트의 성능에 대한 비판적인 고찰은 실수 완화 그리고 고수준 디자인을 위한 인간 감독(human oversight)의 중요성을 강조하며, AI와 인간 개발자가 상호 작용하는 미래를 준비한다.
7장, ‘데이터 과학을 위한 LLM’에서는 생성형 AI와 데이터 과학의 공통점을 탐색하며, LLM이 생산성을 향상시키고 과학적 발견을 촉진할 수 있는 잠재력에 초점을 맞춘다. AutoML을 통한 데이터 과학의 현재 자동화 범위에 대한 개요를 제공하고, 이를 확장해 LLM에 통합해 데이터셋 보강과 실행 가능한 코드 생성 등의 고급 작업을 수행하는 개념을 소개한다. LLM이 탐색적 데이터 분석, SQL 쿼리 실행, 통계 데이터 시각화를 수행하는 실용적인 방법을 다룬다. 마지막으로 에이전트와 도구 사용을 이용해 LLM이 복잡한 데이터 중심 질문에 대응하는 방법을 보여준다.
8장, ‘LLM 사용자 정의 및 그 출력’에서는 미세 조정(fine-tuning)과 프롬프팅(prompting)과 같은 조건화 기술을 살펴본다. 이는 LLM의 성능을 복잡한 추론과 특수 작업에 맞게 조정하는 데 필수적이다. 미세 조정은 LLM이 작업별 데이터로 더 많은 훈련을 받는 것을 다루며, 프롬프트 공학(prompt engineering)은 LLM을 원하는 출력을 생성하도록 전략적으로 안내한다. 퓨샷(few-shot) 러닝과 사고 체인(chain-of-thought)과 같은 고급 프롬프팅 전략이 구현돼 LLM의 추론 능력을 향상시킨다. 미세 조정과 프롬프팅에 관한 구체적인 예제뿐만 아니라 LLM의 미래 발전과 해당 분야에서의 응용에 대해서도 설명한다.
9장, ‘생성형 AI 제품화’에서는 LLM을 실제 애플리케이션 내에서 배치하는 데 있어서의 복잡성과 함께 성능 보장, 규제 요구 사항 충족, 규모에 대한 강건성 및 효과적인 모니터링을 위한 모범 사례를 다룬다. 평가, 관측 가능성과 체계적인 운영의 중요성을 강조해 생성형 AI가 고객 참여와 재정적 영향이 있는 의사 결정에서 유용하게 사용될 수 있도록 한다. 또한 Fast API, Ray, LangServe, LangSmith와 같은 도구를 사용해 LLM 앱의 배포와 지속적인 모니터링에 대한 실용적인 전략에 대한 개요를 설명한다. 이러한 도구는 다양한 분야에서 생성형 AI의 책임 있는 채택을 지원하는 자동 평가와 분석을 제공할 수 있다.
10장, ‘생성형 모델의 미래’에서는 생성형 AI의 잠재적인 발전과 사회 기술적 도전에 대해 다룬다. 10장은 이러한 기술이 경제와 사회에 미치는 영향을 검토하며 직업 이동, 잘못된 정보 그리고 인간 가치 조정과 같은 윤리적 고민을 살펴본다. 다양한 분야에서 AI가 유발한 혼란과 변화에 대비하는 가운데 기업, 법조인 그리고 기술자들이 효과적인 지배 프레임워크를 형성하는 책임에 대해 고찰한다. 이 마지막 장은 AI 개발을 인간 잠재력 증대로 이끄는 동시에 딥페이크, 편향 그리고 AI 무기화와 같은 위험에 대처해야 하는 중요성을 강조한다. 즉 투명성, 윤리적 배치, 공정한 접근을 이끌기 위한 촉박함을 강조한다.
목차
목차
- 1장. 생성형 AI란 무엇인가?
- 생성형 AI 소개
- 생성 모델이란 무엇인가?
- 왜 지금인가?
- LLM의 이해
- GPT란 무엇인가?
- 다른 LLM
- 주요 플레이어
- GPT 모델은 어떻게 작동할까?
- 사전 훈련
- 토큰화
- 스케일링
- 조건화
- 이러한 모델을 시험하는 방법
- 텍스트 투 이미지 모델이란?
- 다른 영역에서 AI가 할 수 있는 일
- 요약
- 문제
- 생성형 AI 소개
- 2장. LLM 응용을 위한 LangChain
- 확률적 앵무새를 넘어서
- LLM의 한계는 무엇인가?
- LLM의 한계를 완화하는 방법
- LLM 응용이란 무엇인가?
- LangChain이란 무엇인가?
- LangChain의 핵심 요소 탐색
- 체인이란 무엇인가?
- 에이전트는 무엇인가?
- 메모리는 무엇인가?
- 도구란 무엇인가?
- LangChain의 작동 원리
- LangChain과 다른 프레임워크와의 비교
- 요약
- 문제
- 확률적 앵무새를 넘어서
- 3장. LangChain으로 시작하기
- 이 책을 위한 종속성 설정 방법
- pip
- Poetry
- Conda
- Docker
- API 모델 통합 탐색
- 가짜 LLM
- OpenAI
- Hugging Face
- Google Cloud Platform
- Jina AI
- Replicate
- 그 외
- 애저
- Anthropic
- 로컬 모델 탐색
- Hugging Face Transformers
- llama.cpp
- GPT4ALL
- 고객 서비스를 위한 애플리케이션 구축
- 요약
- 문제
- 이 책을 위한 종속성 설정 방법
- 4장. 능력 있는 비서 구축
- 팩트 체크를 통한 환각 완화
- 정보 요약
- 기본 프롬프팅
- 프롬프트 템플릿
- 밀도 체인
- 맵 리듀스 파이프라인
- 토큰 사용량 모니터링
- 문서에서 정보 추출
- 툴을 사용한 질문 응답
- 툴을 사용한 정보 검색
- 시각 인터페이스 구축
- 추론 전략 탐색
- 요약
- 문제
- 5장. ChatGPT 같은 챗봇 구축
- 챗봇이란 무엇인가?
- 검색과 벡터의 이해
- 임베딩
- 벡터 저장소
- 벡터 인덱싱
- 벡터 라이브러리
- 벡터 데이터베이스
- LangChain에서의 로딩 및 검색
- 문서 로더
- LangChain에서 검색기
- kNN 검색기
- PubMed 검색기
- 맞춤형 검색기
- 챗봇 구현
- 문서 로더
- 벡터 저장소
- 메모리
- 대화 버퍼
- 대화 요약 기억
- 지식 그래프 저장
- 여러 메모리 메커니즘의 병합
- 장기 일관성
- 응답 중재
- 요약
- 문제
- 6장. 생성형 AI를 이용한 소프트웨어 개발
- 소프트웨어 개발과 AI
- 코드 LLM
- LLM을 사용한 코드 작성
- StarCoder
- StarChat
- LLaMa 2
- 소형 로컬 모델
- 소프트웨어 개발 자동화
- 요약
- 문제
- 소프트웨어 개발과 AI
- 7장. 데이터 과학을 위한 LLM
- 생성 모델이 데이터 과학에 미치는 영향
- 자동화된 데이터 과학
- 데이터 수집
- 시각화와 탐색적 데이터 분석
- 전처리와 특징 추출
- AutoML
- 데이터 과학 질문에 답하기 위한 에이전트 사용
- LLM을 사용한 데이터 탐색
- 요약
- 질문
- 8장. LLM 사용자 정의 및 출력
- LLM 조건화
- 조건화 기법
- 인간 피드백을 가미한 강화학습
- LoRA
- 추론 시간 조건화
- 조건화 기법
- 미세 조정
- 미세 조정 설정
- 오픈 소스 모델
- 상업용 모델
- 프롬프트 공학
- 프롬프트 기술
- 제로샷 프롬프팅
- 퓨샷 러닝
- CoT 프롬프팅
- 자기 일관성
- ToT
- 프롬프트 기술
- 요약
- 문제
- LLM 조건화
- 9장. 생성형 AI 제품화
- LLM 애플리케이션의 제품화를 준비하는 방법
- 용어
- LLM 앱을 평가하는 방법
- 두 출력 비교
- 기준 대비 비교
- 문자열과 문맥 비교
- 데이터셋을 대상으로 한 평가 수행
- LLM 앱을 배포하는 방법
- FastAPI 웹서버
- Ray
- LLM 앱을 관찰하는 방법
- 관찰 반응
- 관측성 도구
- LangSmith
- PromptWatch
- 요약
- 문제
- LLM 애플리케이션의 제품화를 준비하는 방법
- 10장. 생성형 모델의 미래
- 생성형 AI의 현 상태
- 도전 과제
- 모델 개발에서의 추세
- 빅테크 대 소기업
- AGI
- 경제적 결과
- 창의적 산업과 광고
- 교육
- 법률
- 제조
- 의학
- 군사
- 사회적 함의
- 오정보와 사이버보안
- 규제와 실행의 어려움
- 앞으로의 길
- 생성형 AI의 현 상태