brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 25. 2024

AI 1탄-3-2. ChatGPT API 사용

챗GPT와 랭체인을 활용한 LLM기반 AI 앱 개발 -2/5

<1> 발생 요금 확인

<2> 토큰 = 비용

<3> 구글 코랩 사용하기

<4> 챗GPT API사용

<5> Chat Completions API 사용

<6> 랭체인 기초

<7> colab에서 랭체인 6가지 실습

<8> 랭체인 모듈 중 Data Connection

<9> 랭체인  모듈 중  Agents



실습 환경

Python 3.10

LangChain 0.1.14

코랩 사용




<1> 발생 요금 확인


1

https://platform.openai.com/docs/overview


대시보드 클릭




2

Usage



3

사용량 제한 기능도 있다.

테스트이면 일단 제한해놓고 사용하자~




<2> 토큰 = 비용



1

API 비용 계산 법 ?

비용 = 사용 모델의 단가(토큰)  *   (입력 문장의 토큰수 + 출력 문자의 토큰수)

% 참고: 입력 토근 가격과 출력 토큰 가격이 다르다.



2

코랩에서 실습하자.

코랩 > 새노트

https://colab.research.google.com/?hl=ko


코랩 실행

Shift + Enter로 실행함.




3

# Tokenizer와 tiktoken 소개


# 입력과 출력의 길이 제한 및 요금에 영향을 주는 '토큰'


토큰수 확인!


!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






<3> 구글 코랩 사용하기


1

https://colab.research.google.com/




2

새 섹션 > 코드 





3

print("hello world")


SHIFT + ENTER  = 실행


hello world






<4> 챗GPT API사용


1

OPENAI 가입하기

https://platform.openai.com/docs/overview


# 나는 구글 계정으로 가입



2

Dashboard에서 API Key 발급



3

import os

os.environ["OPENAI_API_KEY"] = "sk-proj-nshLnswfxxxxxxxxxxxxxxxxxxlnrO"







<5> Chat Completions API 사용



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 샘플 코드

함수를 사용 가능.






<6> 랭체인 기초


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이다.





<7> colab에서 랭체인 6가지 실습



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 실습

대화 ~





<8> 랭체인 모듈 중 Data Connection



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




<9> 랭체인  모듈 중  Agents



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


keyword
매거진의 이전글 AI 1탄-3-1. LLM기반 AI 앱 개발
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari