자바/스프링 개발자를 위한 실용주의 프로그래밍 또는 챗GPT와 랭체인을 활용한 LLM 기반 AI 앱 개발
로즈
2024-09-23 12:09
96
0
본문
자바/스프링 개발자를 위한 실용주의 프로그래밍
도서명 : 자바/스프링 개발자를 위한 실용주의 프로그래밍
저자/출판사 : 김우근, 위키북스
쪽수 : 496쪽
출판일 : 2024-06-11
ISBN : 9791158395155
정가 : 32000
[1부] 객체지향
▣ 들어가며
개발을 배워야 한다
__기술 vs. 개발
__개발 능력을 길러야 하는 이유
__스프링과 JPA는 기술이다
이 책을 출간하게 된 이유
▣ 01장: 절차지향과 비교하기
1.1 책임과 역할
1.2 TDA 원칙
▣ 02장: 객체의 종류
2.1 VO(Value Object: 값 객체)
__2.1.1 불변성
__2.1.2 동등성
__2.1.3 자가 검증
2.2 DTO(Data Transfer Object: 데이터 전송 객체)
2.3 DAO(Data Access Object: 데이터 접근 객체)
2.4 엔티티(Entity: 개체)
__2.4.1 도메인 엔티티
__2.4.2 DB 엔티티
__2.4.3 JPA 엔티티
__2.4.4 해석
2.5 객체의 다양한 종류
▣ 03장: 행동
3.1 덕 타이핑
3.2 행동과 구현
3.3 인터페이스
3.4 행동과 역할
3.5 메서드
▣ 04장: SOLID
4.1 SOLID 소개
__4.1.1 단일 책임 원칙
__4.1.2 개방 폐쇄 원칙
__4.1.3 리스코프 치환 원칙
__4.1.4 인터페이스 분리 원칙
__4.1.5 의존성 역전 원칙
4.2 의존성
__4.2.1 의존성 주입
__4.2.2 의존성 역전
__4.2.3 의존성 역전과 스프링
__4.2.4 의존성이 강조되는 이유
4.3 SOLID와 객체지향
4.4 디자인 패턴
▣ 05장: 순환 참조
5.1 순환 참조의 문제점
__5.1.1 무한 루프
__5.1.2 시스템 복잡도
5.2 순환 참조를 해결하는 방법
__5.2.1 불필요한 참조 제거
__5.2.2 간접 참조 활용
__5.2.3 공통 컴포넌트 분리
__5.2.4 이벤트 기반 시스템 사용
5.3 양방향 매핑
5.4 상위 수준의 순환 참조
[2부] 스프링과 객체지향 설계
▣ 06장: 안티패턴
6.1 스마트 UI
6.2 양방향 레이어드 아키텍처
__6.2.1 레이어별 모델 구성
__6.2.2 공통 모듈 구성
6.3 완화된 레이어드 아키텍처
6.4 트랜잭션 스크립트
▣ 07장: 서비스
7.1 Manager
7.2 서비스보다 도메인 모델
7.3 작은 기계
7.4 조언
▣ 08장: 레이어드 아키텍처
8.1 레이어드 아키텍처의 최소 조건
8.2 잘못된 레이어드 아키텍처
__8.2.1 JPA 엔티티 우선 접근
__8.2.2 API 엔드포인트 우선 접근
__8.2.3 본질을 다시 생각하기
8.3 진화하는 아키텍처
__8.3.1 인지 모델 변경하기
__8.3.2 JPA와의 결합 끊기
__8.3.3 웹 프레임워크와의 결합 끊기
8.4 새로운 접근법
8.5 빈약한 도메인
▣ 09장: 모듈
9.1 모듈성
__9.1.1 독립성
__9.1.2 은닉성
9.2 패키지 구조
__9.2.1 계층 기반 구조
__9.2.2 도메인 기반 구조
__9.2.3 정리
9.3 패키지와 모듈
▣ 10장: 도메인
10.1 소프트웨어 개발의 시작
10.2 애플리케이션의 본질
10.3 도메인 모델과 영속성 객체
__10.3.1 통합하기 전략
__10.3.2 구분하기 전략
__10.3.3 평가
▣ 11장: 알아두면 유용한 스프링 활용법
11.1 타입 기반 주입
11.2 자가 호출
[03부] 테스트
▣ 12장: 자동 테스트
12.1 Regression
12.2 의도
12.3 레거시 코드
▣ 13장: 테스트 피라미드
13.1 구글의 테스트 피라미드
13.2 테스트 분류 기준
13.3 소형 테스트의 중요성
▣ 14장: 테스트 대역
14.1 Dummy
14.2 Stub
14.3 Fake
14.4 Mock
__14.4.1 상태 기반 검증
__14.4.2 행위 기반 검증
__14.4.3 상태 기반 vs. 행위 기반
14.5 Spy
14.6 정리
▣ 15장: 테스트 가능성
15.1 테스트를 어렵게 만드는 요소
__15.1.1 숨겨진 입력
__15.1.2 숨겨진 출력
15.2 테스트가 보내는 신호
▣ 16장: 테스트와 설계
16.1 테스트와 SRP
16.2 테스트와 ISP
16.3 테스트와 OCP, DIP
16.4 테스트와 LSP
▣ 17장: 테스트와 개발 방법론
17.1 TDD
17.2 BDD
[부록]
A: 포트-어댑터 패턴
B: 클린 아키텍처
C: 소프트웨어 엔지니어
D: 실용주의
E: 참고 자료
챗GPT와 랭체인을 활용한 LLM 기반 AI 앱 개발
도서명 : 챗GPT와 랭체인을 활용한 LLM 기반 AI 앱 개발
저자/출판사 : 요시다 신고 , 오시마 유키, 위키북스
쪽수 : 300쪽
출판일 : 2024-06-05
ISBN : 9791158395230
정가 : 27000
▣ 1장: 대규모 언어 모델(LLM)을 이용한 애플리케이션을 개발하고 싶다!
1.1 챗GPT를 사용해 보자
1.2 프롬프트로 할 수 있는 일
__일상 업무에 활용해 보자
1.3 프로그래밍에 활용해 보자
1.4 챗GPT 사용 시 주의 사항
1.5 챗GPT의 유료 플랜으로 할 수 있는 것들
__GPT-4
__브라우징
__데이터 분석
__챗GPT 외의 OpenAI 서비스
1.6 대규모 언어 모델(LLM)을 비즈니스에 활용
1.7 LLM을 활용한 비즈니스 및 응용 사례 소개
__사이다스 주식회사 사례: CYDAS PEOPLE Copilot Chat
__PingCAP 주식회사 사례: Chat2Query
__Alexa 기술 사례 (개인 개발) : helloGPT
__주식회사 소라콤 사례: SORACOM Harvest Data Intelligence
1.8 LLM을 이용한 애플리케이션 개발에서 주의해야 할 점
1.9 이 책에서 다루는 기술에 대하여
__랭체인
__클라우드 서비스 (특히 서버리스)
__슬랙 앱으로 협업을 촉진
요약
▣ 2장: 프롬프트 엔지니어링
2.1 왜 갑자기 프롬프트 엔지니어링?
__챗GPT의 프롬프트 엔지니어링
__애플리케이션 개발에서의 프롬프트 엔지니어링
__프롬프트 엔지니어링은 위험하지 않나?
2.2 프롬프트 엔지니어링이란?
2.3 프롬프트 구성 요소의 기초
__주제: 레시피 생성 AI 앱
__프롬프트 템플릿화
__명령과 입력 데이터의 분리
__문맥을 제공하기
__출력 형식 지정하기
__프롬프트 구성 요소 요약
2.4 Prompt Engineering Guide에서: 챗GPT의 무한한 잠재력을 이끌어내다
__Zero-shot 프롬프팅
__Few-shot 프롬프팅
__Zero-shot Chain of Thought 프롬프팅
요약
▣ 3장: 챗GPT의 API를 사용하는 방법
3.1 OpenAI의 문서 생성 모델
__챗GPT의 ‘모델’
__OpenAI의 API로 사용할 수 있는 문서 생성 모델
__모델 스냅숏
3.2 챗GPT의 API 기본 사항
__Chat Completions API
__Chat Completions API 요금
__발생된 요금 확인
3.3 입출력 길이 제한과 과금에 영향을 미치는 ‘토큰’
__토큰
__Tokenizer와 tiktoken 소개
__한국어의 토큰 수
3.4 Chat Completions API를 사용할 수 있는 환경 준비하기
__Google Colab이란?
__Google Colab 노트북 만들기
__OpenAI의 API 키 준비
3.5 Chat Completions API를 만져보기
__OpenAI의 라이브러리
__Chat Completions API 호출
__대화 기록에 기반한 응답 얻기
__응답을 스트리밍으로 받기
__기본 파라미터
3.6 Function calling
__Function calling 개요
__Function calling 샘플 코드
__파라미터 ‘function_call’
__Function calling을 응용한 JSON 생성
요약
▣ 4장: 랭체인 기초
4.1 랭체인 개요
__랭체인 사용 사례
__랭체인을 배우는 이유
__랭체인의 모듈
__랭체인 설치
4.2 Language models
__LLMs
__Chat Models
__Callback을 이용한 스트리밍
__언어 모델 요약
4.3 Prompts
__PromptTemplate
__ChatPromptTemplate
__Example selectors
__프롬프트 요약
4.4 Output parsers
__Output parsers 개요
__PydanticOutputParser를 이용해 Python 객체 가져오기
__Output parsers 요약
4.5 Chains
__LLMChain-PromptTemplate, Language model, OutputParser 연결하기
__SimpleSequentialChain-Chain과 Chain 연결하기
__Chains 요약
4.6 Memory
__ConversationBufferMemory
__더욱 편리한 Memory
__Memory 저장 위치
__Memory 요약
▣ 5장: 랭체인 활용
5.1 Data connection
__RAG(Retrieval Augmented Generation)
__Data connection 개요
__Document loaders
__Document transformers
__Text embedding models
__Vector stores
__Retrievers
__RetrievalQA(Chain)
__Data connection 요약
5.2 Agents
__Agents 개요
__Agents 사용 예시
__Agents의 작동 원리와 ReAct 개념
__Tools
__Toolkits
__Function calling을 사용하는 OpenAI Functions Agent
__한 번에 여러 도구를 사용하기
__Agents 요약
요약
▣ 6장: 외부 검색과 히스토리를 바탕으로 응답하는 웹 앱 구현하기
6.1 이번 장에서 구현할 응용 프로그램
__구현할 애플리케이션의 구성
__이 책으로 개발하는 방법
__AWS Cloud9 개요
__스트림릿 개요
__전체 코드
6.2 Cloud9 실행 및 개발 환경 구축하기
__Cloud9 환경 만들기
__깃허브 저장소 생성하기
__Cloud9과 깃허브 연동
__파이썬 환경 구축하기
6.3 스트림릿의 헬로 월드
6.4 사용자 입력 받기
6.5 입력 내용과 응답을 화면에 표시하기
6.6 대화 기록 보기
6.7 LangChain으로 OpenAI의 Chat Completions API 실행하기
6.8 Agent를 사용하여 필요에 따라 외부 정보 검색하게 하기
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. OpenAI API 호출하기
7.11 스트리밍으로 응답하기
7.12 대화 기록 보관하기
__Momento Cache란?
7.13 Lazy 리스너에서 슬랙 재시도 전에 간단한 응답을 반환하는 방법
7.14 AWS Lambda에서 실행되는 핸들러 함수 만들기
7.15 chat.update API 제한 우회하기
7.16 AI 생성 메시지임을 표시하기
7.17 배포하기
7.18 Socket Mode에서 AWS Lambda로 전환하기
요약
▣ 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.10 RunnablePassthrough 사용하기
요약
▣ 9장: LLM 앱의 프로덕션 릴리스를 향해
9.1 기업에서 생성 AI를 활용하려면
9.2 공공기관·협회의 ‘생성형 AI 이용 가이드라인’을 바탕으로 자체 가이드라인 마련
__외부 서비스 이용 시 서비스 약관을 꼼꼼히 읽을 것
9.3 서비스 기획 및 설계 단계에서의 과제
__프로젝트 리스크 대응
9.4 테스트 및 평가에 대하여
__LLM 부분 평가 방법
__랭스미스의 성능 모니터링
9.5 보안 대책에 대하여
__OWASP Top 10 for Large Language Model Applications
__랭체인 코어의 취약점 제거에 대하여
9.6 개인 정보 보호 관점 및 일본의 개인정보 보호 제도
__개인정보보호법에서 규정한 본인 동의 및 목적 내 사용
__개인정보 보호에 관한 ‘결정지향적’ 이익모델과 정보적 타자성으로부터의 자유에 대하여
9.7 EU에서 규정한 금지 AI 및 고위험 AI 처리 동향
▣ 부록A: 웹 앱, 슬랙 앱 개발 환경 구축
A.1 AWS 가입
A.2 Cloud9 환경 생성
__Cloud9 요금 설명
A.3 Cloud9와 깃허브 연동
__깃허브와 SSH 설정
__Git 사용자 설정
__깃허브에서 저장소 복제하기
A.4 Cloud9에서 파이썬 환경 구축
__pyenv 설치
__Python 3.10 설치
__Python 3.10을 사용하기 위한 절차
__가상 환경에 대하여
A.5 Momento 가입
▣ 부록B: 랭체인의 새로운 표기법 ‘랭체인 표현 언어(LCEL)’ 소개
B.1 LCEL(LangChain Expression Language)이란?
B.2 LCEL의 기본 사용법
__prompt와 model을 연결하기
__output_parser 연결
B.3 LCEL의 작동 방식
B.4 약간 더 복잡한 LCEL 예제
__규칙 기반 처리(일반 함수) 끼워 넣기
__RAG(검색 증강 생성)
B.5 결론
댓글목록0