LLM기반 AI 앱 개발
실습 환경
Python 3.10
LangChain 0.1.14
코랩 사용
코드
https://github.com/ychoi-kr/langchain-book/blob/main/chapter3/notebook.ipynb
https://github.com/ychoi-kr/langchain-book
1
https://platform.openai.com/docs/overview
대시보드 클릭
Usage
1
https://colab.research.google.com/
2
새 섹션 > 코드
print("hello world")
OPENAI 가입하기
https://platform.openai.com/docs/overview
나는 구글 계정으로 가입
2
Dashboard에서 API Key 발급
3
3-3 입력과 출력의 길이 제한 및 요금에 영향을 주는 '토큰'부터 시작~
(45 Page)
4
토큰수 확인!
한국어 토큰수가 영어보다 많다.
https://github.com/ychoi-kr/langchain-book/blob/main/chapter3/notebook.ipynb
5
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-nshLnswflnrO"
6
Chat Completions API 사용
!pip install openai==1.14.3
https://github.com/ychoi-kr/langchain-book/blob/main/chapter3/notebook.ipynb
7
대화 기록에 기반한 응답 얻기
8
응답을 스트리밍으로 받기
9
기본 파라미터
Chat Completions API에서 model , messages , stream 외 사용하는 파라미터.
response = client.chat.completions.create 다음에 사용하는 파라미터~~
modesl
messages
temperature
n
stop
max_tockens
user
10
Function calling 샘플 코드
함수를 사용 가능.
1
LLM을 이용한 애플리케이션 개발 프레임워크이며, LLM을 이용한 다양한 애플리케이션에 사용할 수 있다.
2
사용사례?
LLM을 이용한 애플리케이션 개발에 필요한 구성요소를 추상화된 모듈로 제공한다.
특정 사용 사례에 특화된 기을을 제공한다.
3
LLM을 이용한 응용 프로그램?
챗GPT처럼 대화할 수 있는 챗봇
문장 요약 도구
사내 문서 및 PDF파일에 대한 Q&A앱
AI 에이전트
4
LLM을 이용한 애플리케이션 개발 프레임워크 라이브러리 랭체인.
랭체인 이외 라이브러리
라마인덱스
시맨틱 커널
가이던스
5
랭체인 모듈?
랭체인은 LLM을 이용한 얘플리케이션 개발에 있어 범용으로 사용할 수 있는 다양한 모듈과 특정 사례에 특화된 기능을 제공하는 두 가지 측면이 있다.
6
랭체인 모듈 6개
모듈 1- Model/IO
모듈 2- Data Connection
모듈 3- Chains
모듈 4- Agents
모듈 5- Memory
모듈 6- Callbacks
7
모듈 1- Model/IO > Language models?
LLMs와 Chat models 두 가지로 분류한다.
LLMs?
하나의 텍스트 입력에 대해 하나의 텍스트 출력을 반환하는 모듈
Chat Models?
단순히 하나의 텍스트를 입력하는 것이 아니라, 채팅 형식의 대화를 입력하면 응답을 받는다.
Callback을 이용한 스트리밍 응답?
Chat Completions API 응답을 스트리밍으로 받을 수 있다.
8
모듈 1- Model/IO > Prompts?
PromptTemplate?
프롬프트를 템플릿화 한다.
ChatPromptTemplate ?
Chat Completions API의 형식에 맞게 만든 것이 ChatPromptTemplate
9
모듈 1- Model/IO > Output parsers?
Prompts는 LLM의 입력에 관한 모듈.
LLM을 특정 형식으로 출력하고, 그 출력을 프로그래밍 방식으로 처리한다. Output parsers이다.
1
코랩
https://colab.research.google.com/
2
새 노트
https://colab.research.google.com/
3
실습
https://github.com/ychoi-kr/langchain-book/blob/main/chapter4/notebook.ipynb
4
모듈 1- Model/IO > Language models 실습 ~~
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-hLnswflnrO"
5
랭체인 설치
!pip install langchain==0.1.14 openai==1.14.3 langchain-openai==0.1.1
6
모듈 1- Model/IO > Language models > LLM 실습
from langchain_openai import OpenAI
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=0)
result = llm.invoke("자기소개를 해주세요.")
print(result)
7
모듈 1- Model/IO > Language models > Chat models 실습
8
모듈 6- Callback을 이용한 스트리밍 실습
9
모듈 1- Model/IO > 프롬프트 실습
10
모듈 3- Chains 실습
LLM을 사용하는 애플리케이션에서 단손 LLM에 입력해서 출력을 얻는 것이 아니라.
처리를 연쇄적으로 연결하고 싶을 때 사용한다.
프롬프트 템플릿을 채우고 결과를 랭귀지 모델에 제공하고, 파이션 객체로 가져오도록 하고 싶을 때 사용한다.
11
모듈 5- Memory 실습
대화 ~
12
모듈 2- Data Connection
Data Connection = LLM과 외부 데이터를 연결하기 위한 기능. = RAG에서 사용하는 랭체인 모듈
모듈 2- Data Connection 의 5가지 기능.
Document loaders : 데이터 소스로부터 문서를 불러온다.
Document transformers : 문서에 어떤 종류의 변화를 가한다.
Text embedding models : 문서를 벡터화 한다.
Vector stores : 벡터화된 문서를 저장할수 있는 저장소.
Retrievers : 입력한 텍스트와 관련된 문서를 검색한다.
13
Document loaders : 데이터 소스로부터 문서를 불러온다.
깃허브에 저장된 문서를 불러온다.
14
Document transformers : 문서에 어떤 종류의 변화를 가한다.
불러온 데이터를 문서라고 부른다.
문서를 일정 길이의 청크로 분할한다. = CharacterTextSplitter 클래스 사용.
15
Text embedding models : 문서를 벡터화 한다.
문서 변환을 마치고 벡터화 한다.
오픈 ai의 임베딩 API를 사용해 텍스트를 벡터화 한다.
16
Vector stores : 벡터화된 문서를 저장할수 있는 저장소.
문서를 벡터화하여 저장한다.
17
Retrievers : 입력한 텍스트와 관련된 문서를 검색한다.
벡터 스토어에서는 사용자의 입력과 관련된 문서를 가져오는 작업을 수행한다.
랭체인에서 텍스트와 관련된 문서를 가져오는 인터페이스를 Retrievers라고 한다.
데이터 커넥션 실습
https://github.com/ychoi-kr/langchain-book/blob/main/chapter5/5_1_Data_connection.ipynb
18
모듈 4- Agents
체인에서는 벡터스토어를 검색하고 검색 결과를 바탕으로 LLM이 응답하도록 하였다.
이러한 체인은 고정된 처리 흐름을 구현한 것이다.
반면, 어떤 처리를 할것인지 LLM이 선택하여 움직여 주기를 윈하는 경우.
사용자가 입력한 내용을 바탕으로 필요에 따라 사내 문서를 벡터 스토어에서 검색하여 답하거나 웹상의 정보를 검색하여 답하게 해준다.
이런 작동을 하게하는것이 에이전트 이다.
실습
https://github.com/ychoi-kr/langchain-book/blob/main/chapter5/5_2_Agents.ipynb
감사합니다.