챗GPT와 랭체인을 활용한 LLM기반 AI 앱 개발 -2/5
실습 환경
Python 3.10
LangChain 0.1.14
코랩 사용
1
https://platform.openai.com/docs/overview
대시보드 클릭
2
Usage
3
사용량 제한 기능도 있다.
테스트이면 일단 제한해놓고 사용하자~
1
API 비용 계산 법 ?
비용 = 사용 모델의 단가(토큰) * (입력 문장의 토큰수 + 출력 문자의 토큰수)
% 참고: 입력 토근 가격과 출력 토큰 가격이 다르다.
2
코랩에서 실습하자.
코랩 > 새노트
https://colab.research.google.com/?hl=ko
코랩 실행
Shift + Enter로 실행함.
3
# 입력과 출력의 길이 제한 및 요금에 영향을 주는 '토큰'
토큰수 확인!
!pip install tiktoken==0.6.0
import tiktoken
text = "It’s easy to make something cool with LLMs, but very hard to make something production-ready with them."
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
tokens = encoding.encode(text)
print(len(tokens))
23
# 한국어 토큰수가 영어보다 많는것을 알수 있다.
text = "LLM을 사용해서 멋져 보이는 것을 만들기는 쉽지만, 프로덕션 수준으로 만들어 내기는 매우 어렵다."
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")
tokens = encoding.encode(text)
print(len(tokens))
47
# 한국어 토큰수가 영어보다 많는것을 알수 있다.
4
https://github.com/ychoi-kr/langchain-book/blob/main/chapter3/notebook.ipynb
https://github.com/ychoi-kr/langchain-book
1
https://colab.research.google.com/
2
새 섹션 > 코드
3
print("hello world")
SHIFT + ENTER = 실행
hello world
OPENAI 가입하기
https://platform.openai.com/docs/overview
# 나는 구글 계정으로 가입
2
Dashboard에서 API Key 발급
3
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-nshLnswfxxxxxxxxxxxxxxxxxxlnrO"
1
코랩
https://colab.research.google.com/
# Chat Completions API 사용
!pip install openai==1.14.3
2
# 대화 기록에 기반한 응답 얻기
https://github.com/ychoi-kr/langchain-book/blob/main/chapter3/notebook.ipynb
3
# 응답을 스트리밍으로 받기
4
# 기본 파라미터
Chat Completions API에서 model , messages , stream 외 사용하는 파라미터.
response = client.chat.completions.create 다음에 사용하는 파라미터~~
modesl
messages
temperature
n
stop
max_tockens
user
5
Function calling 샘플 코드
함수를 사용 가능.
1
LLM을 이용한 애플리케이션 개발 프레임워크이며, LLM을 이용한 다양한 애플리케이션에 사용할 수 있다.
2
사용사례?
LLM을 이용한 애플리케이션 개발에 필요한 구성요소를 추상화된 모듈로 제공한다.
특정 사용 사례에 특화된 기능을 제공한다.
3
LLM을 이용한 응용 프로그램?
챗GPT처럼 대화할 수 있는 챗봇
문장 요약 도구
사내 문서 및 PDF파일에 대한 Q&A앱
AI 에이전트
4
LLM을 이용한 애플리케이션 개발 프레임워크 라이브러리 = 랭체인.
랭체인 이외 라이브러리들은 아래와 같은 종류가 있다.
라마인덱스
시맨틱 커널
가이던스
5
랭체인 모듈?
랭체인은 LLM을 이용한 얘플리케이션 개발에 있어 범용으로 사용할 수 있는 다양한 모듈과 특정 사례에 특화된 기능을 제공하는 두 가지 측면이 있다.
6
랭체인 주요 모듈 6가지
코랩
랭체인 기초
https://github.com/ychoi-kr/langchain-book/blob/main/chapter4/notebook.ipynb
7
모듈 1 - Model/IO - Language models
LLMs와 Chat models 두 가지로 분류한다.
1) LLMs?
하나의 텍스트 입력에 대해 하나의 텍스트 출력을 반환하는 모듈.
2) 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://github.com/ychoi-kr/langchain-book/blob/main/chapter4/notebook.ipynb
3
모듈 1 - Model/IO - Language models 실습 ~~
import os
os.environ["OPENAI_API_KEY"] = "sk-proj-hLnswflnrO"
4
# 랭체인 설치
!pip install langchain==0.1.14 openai==1.14.3 langchain-openai==0.1.1
4
모듈 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)
5
모듈 1 - Model/IO > Language models > Chat models 실습
6
모듈 6 - Callback을 이용한 스트리밍 실습
7
모듈 1 - Model/IO > 프롬프트 실습
8
모듈 3 - Chains 실습
LLM을 사용하는 애플리케이션에서 단손 LLM에 입력해서 출력을 얻는 것이 아니라.
처리를 연쇄적으로 연결하고 싶을 때 사용한다.
프롬프트 템플릿을 채우고 결과를 랭귀지 모델에 제공하고, 파이션 객체로 가져오도록 하고 싶을 때 사용한다.
9
모듈 5 - Memory 실습
대화 ~
1
모듈 2 - Data Connection
LLM과 외부 데이터를 연결하기 위한 기능. = RAG에서 사용하는 랭체인 모듈
모듈 2 - Data Connection 의 5가지 기능.
2
Document loaders : 데이터 소스로부터 문서를 불러온다.
깃허브에 저장된 문서를 불러온다.
3
Document transformers : 문서에 어떤 종류의 변화를 가한다.
불러온 데이터를 문서라고 부른다.
문서를 일정 길이의 청크로 분할한다. = CharacterTextSplitter 클래스 사용.
4
Text embedding models : 문서를 벡터화 한다.
문서 변환을 마치고 벡터화 한다.
오픈 ai의 임베딩 API를 사용해 텍스트를 벡터화 한다.
5
Vector stores : 벡터화된 문서를 저장할수 있는 저장소.
문서를 벡터화하여 저장한다.
6
Retrievers : 입력한 텍스트와 관련된 문서를 검색한다.
벡터 스토어에서는 사용자의 입력과 관련된 문서를 가져오는 작업을 수행한다.
랭체인에서 텍스트와 관련된 문서를 가져오는 인터페이스를 Retrievers라고 한다.
7
Data Connection 실습
https://github.com/ychoi-kr/langchain-book/blob/main/chapter5/5_1_Data_connection.ipynb
1
모듈 4 - Agents
체인에서는 벡터스토어를 검색하고 검색 결과를 바탕으로 LLM이 응답하도록 하였다.
이러한 체인은 고정된 처리 흐름을 구현한 것이다.
반면, 어떤 처리를 할것인지 LLM이 선택하여 움직여 주기를 윈하는 경우.
사용자가 입력한 내용을 바탕으로 필요에 따라 사내 문서를 벡터 스토어에서 검색하여 답하거나 웹상의 정보를 검색하여 답하게 해준다.
이런 작동하게 하는것이 에이전트 이다.
2
실습
https://github.com/ychoi-kr/langchain-book/blob/main/chapter5/5_2_Agents.ipynb
https://brunch.co.kr/@topasvga/3890