챗GPT와 랭체인을 활용한 LLM 기반 AI 앱 개발
저자

요시다신고,오시마유키

저자:요시다신고
주식회사사이다스이사CTO/주식회사섹션나인대표이사CEO.일본챗GPT커뮤니티를주최한다.HCMSuite‘CYDASPEOPLE’의개발및운영을맡고있다.서버리스기술커뮤니티를주최해일본에서의서버리스보급을촉진하고있다.

저자:오시마유키
소프트웨어엔지니어.IT기업에서프리랜서엔지니어를거쳐회사를세웠다.현재는현업에종사하는엔지니어의스킬향상을주제로스터디모임개최및교재제작활동을하고있다.온라인강좌유데미베스트셀러강좌를다수보유하고있다.AWS,도커/쿠버네티스,서버리스기술등을다루는‘야생의’클라우드네이티브인재이며최근에는랭체인전문가로인정받고있다.스터디커뮤니티인StudyCo를운영한다.

목차

1장:대규모언어모델(LLM)을이용한애플리케이션을개발하고싶다!
1.1챗GPT를사용해보자
1.2프롬프트로할수있는일
__일상업무에활용해보자
1.3프로그래밍에활용해보자
1.4챗GPT사용시주의사항
1.5챗GPT의유료플랜으로할수있는것들
__GPT-4
__브라우징
__데이터분석
__챗GPT외의OpenAI서비스
1.6대규모언어모델(LLM)을비즈니스에활용
1.7LLM을활용한비즈니스및응용사례소개
__사이다스주식회사사례:CYDASPEOPLECopilotChat
__PingCAP주식회사사례:Chat2Query
__Alexa기술사례(개인개발):helloGPT
__주식회사소라콤사례:SORACOMHarvestDataIntelligence
1.8LLM을이용한애플리케이션개발에서주의해야할점
1.9이책에서다루는기술에대하여
__랭체인
__클라우드서비스(특히서버리스)
__슬랙앱으로협업을촉진
요약

2장:프롬프트엔지니어링
2.1왜갑자기프롬프트엔지니어링?
__챗GPT의프롬프트엔지니어링
__애플리케이션개발에서의프롬프트엔지니어링
__프롬프트엔지니어링은위험하지않나?
2.2프롬프트엔지니어링이란?
2.3프롬프트구성요소의기초
__주제:레시피생성AI앱
__프롬프트템플릿화
__명령과입력데이터의분리
__문맥을제공하기
__출력형식지정하기
__프롬프트구성요소요약
2.4PromptEngineeringGuide에서:챗GPT의무한한잠재력을이끌어내다
__Zero-shot프롬프팅
__Few-shot프롬프팅
__Zero-shotChainofThought프롬프팅
요약

3장:챗GPT의API를사용하는방법
3.1OpenAI의문서생성모델
__챗GPT의‘모델’
__OpenAI의API로사용할수있는문서생성모델
__모델스냅숏
3.2챗GPT의API기본사항
__ChatCompletionsAPI
__ChatCompletionsAPI요금
__발생된요금확인
3.3입출력길이제한과과금에영향을미치는‘토큰’
__토큰
__Tokenizer와tiktoken소개
__한국어의토큰수
3.4ChatCompletionsAPI를사용할수있는환경준비하기
__GoogleColab이란?
__GoogleColab노트북만들기
__OpenAI의API키준비
3.5ChatCompletionsAPI를만져보기
__OpenAI의라이브러리
__ChatCompletionsAPI호출
__대화기록에기반한응답얻기
__응답을스트리밍으로받기
__기본파라미터
3.6Functioncalling
__Functioncalling개요
__Functioncalling샘플코드
__파라미터‘function_call’
__Functioncalling을응용한JSON생성
요약

4장:랭체인기초
4.1랭체인개요
__랭체인사용사례
__랭체인을배우는이유
__랭체인의모듈
__랭체인설치
4.2Languagemodels
__LLMs
__ChatModels
__Callback을이용한스트리밍
__언어모델요약
4.3Prompts
__PromptTemplate
__ChatPromptTemplate
__Exampleselectors
__프롬프트요약
4.4Outputparsers
__Outputparsers개요
__PydanticOutputParser를이용해Python객체가져오기
__Outputparsers요약
4.5Chains
__LLMChain-PromptTemplate,Languagemodel,OutputParser연결하기
__SimpleSequentialChain-Chain과Chain연결하기
__Chains요약
4.6Memory
__ConversationBufferMemory
__더욱편리한Memory
__Memory저장위치
__Memory요약

5장:랭체인활용
5.1Dataconnection
__RAG(RetrievalAugmentedGeneration)
__Dataconnection개요
__Documentloaders
__Documenttransformers
__Textembeddingmodels
__Vectorstores
__Retrievers
__RetrievalQA(Chain)
__Dataconnection요약
5.2Agents
__Agents개요
__Agents사용예시
__Agents의작동원리와ReAct개념
__Tools
__Toolkits
__Functioncalling을사용하는OpenAIFunctionsAgent
__한번에여러도구를사용하기
__Agents요약
요약

6장:외부검색과히스토리를바탕으로응답하는웹앱구현하기
6.1이번장에서구현할응용프로그램
__구현할애플리케이션의구성
__이책으로개발하는방법
__AWSCloud9개요
__스트림릿개요
__전체코드
6.2Cloud9실행및개발환경구축하기
__Cloud9환경만들기
__깃허브저장소생성하기
__Cloud9과깃허브연동
__파이썬환경구축하기
6.3스트림릿의헬로월드
6.4사용자입력받기
6.5입력내용과응답을화면에표시하기
6.6대화기록보기
6.7LangChain으로OpenAI의ChatCompletionsAPI실행하기
6.8Agent를사용하여필요에따라외부정보검색하게하기
6.9채팅대화기록을바탕으로응답하기
6.10스트림릿커뮤니티클라우드에배포
__종속패키지목록작성
__깃허브에소스코드업로드하기
__스트림릿커뮤니티클라우드에배포하기
__다른사용자초대하기
요약

7장:스트림형식으로히스토리를기반으로응답하는슬랙앱구현
7.1슬랙앱을만드는이유
__어떤구성으로할까?
__개발환경
__깃허브저장소의파일구성
7.2환경준비
__Cloud9환경만들기
__깃허브에서슬랙앱용저장소생성하기
__파이썬가상환경활성화하기
7.3환경설정파일만들기
7.4슬랙앱새로만들기
7.5소켓모드활성화
7.6애플리케이션만들기
7.7이벤트설정하기
7.8액션전송및응답하기
7.9스레드내답글달기
7.10.OpenAIAPI호출하기
7.11스트리밍으로응답하기
7.12대화기록보관하기
__MomentoCache란?
7.13Lazy리스너에서슬랙재시도전에간단한응답을반환하는방법
7.14AWSLambda에서실행되는핸들러함수만들기
7.15chat.updateAPI제한우회하기
7.16AI생성메시지임을표시하기
7.17배포하기
7.18SocketMode에서AWSLambda로전환하기
요약

8장:사내문서에관해답변하는슬랙앱구현하기
8.1챗GPT가독자적인지식으로답변하게한다
__파인튜닝과RAG
__RAG워크플로
__답변문생성에LLM이필요한가?
__업무를압박하는‘무언가를찾는시간’
__사내데이터정비하기
8.2임베딩이란?
8.3구현할애플리케이션개요
__완성판소스코드
8.4개발환경구축하기
__Cloud9의디스크공간이부족할때확장하는방법
8.5샘플데이터준비
8.6파인콘설정
__파인콘이란?
__파인콘이외의벡터데이터베이스
__파인콘가입하기
8.7파인콘에벡터데이터저장하기
8.8파인콘검색및답변하기
8.9대화기록을바탕으로질의응답하기
__단순히대화기록을넣어도잘작동하지않는경우
__대화이력을바탕으로질문을다시작성한다.
8.10RunnablePassthrough사용하기
요약

9장:LLM앱의프로덕션릴리스를향해
9.1기업에서생성AI를활용하려면
9.2공공기관·협회의‘생성형AI이용가이드라인’을바탕으로자체가이드라인마련
__외부서비스이용시서비스약관을꼼꼼히읽을것
9.3서비스기획및설계단계에서의과제
__프로젝트리스크대응
9.4테스트및평가에대하여
__LLM부분평가방법
__랭스미스의성능모니터링
9.5보안대책에대하여
__OWASPTop10forLargeLanguageModelApplications
__랭체인코어의취약점제거에대하여
9.6개인정보보호관점및일본의개인정보보호제도
__개인정보보호법에서규정한본인동의및목적내사용
__개인정보보호에관한‘결정지향적’이익모델과정보적타자성으로부터의자유에대하여
9.7EU에서규정한금지AI및고위험AI처리동향

부록A:웹앱,슬랙앱개발환경구축
A.1AWS가입
A.2Cloud9환경생성
__Cloud9요금설명
A.3Cloud9와깃허브연동
__깃허브와SSH설정
__Git사용자설정
__깃허브에서저장소복제하기
A.4Cloud9에서파이썬환경구축
__pyenv설치
__Python3.10설치
__Python3.10을사용하기위한절차
__가상환경에대하여
A.5Momento가입

부록B:랭체인의새로운표기법‘랭체인표현언어(LCEL)’소개
B.1LCEL(LangChainExpressionLanguage)이란?
B.2LCEL의기본사용법
__prompt와model을연결하기
__output_parser연결
B.3LCEL의작동방식
B.4약간더복잡한LCEL예제
__규칙기반처리(일반함수)끼워넣기
__RAG(검색증강생성)
B.5결론