brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 25. 2024

2. ChatGPT API 사용-2024-06

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> 발생 요금 확인

<2> 구글 코랩 사용하기

<3> 챗GPT API사용

<4> 랭체인

<5> colab에서 랭체인 코드 실습




<1> 발생 요금 확인


1

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


대시보드 클릭




Usage





<2> 구글 코랩 사용하기


1

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




2

새 섹션 > 코드 




print("hello world")







<3> 챗GPT API사용


1

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

함수를 사용 가능.






<4> 랭체인


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





<5> colab에서 랭체인 코드 실습


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



감사합니다.

매거진의 이전글 1. ChatGPT 사용-2024-06
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari