brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 08. 2024

AI 4탄-1. 랭체인 완벽 입문-1/7

랭체인 완벽 입문-1/7

Windows PC에 파이썬 설치, VSCode 설치

코랩 사용



<1> 챗GPT와  OPENAI API 

<2> 랭체인 개요

<3> 랭체인의 6개 모듈 개요

<4> 개발환경 설정 - 코랩 사용

<5> 개발환경 설정 - Windows에 파이썬 설치 (실습)

<6> 개발환경 설정 - Windows에 VSCODE 설치 (실습)

<7>  샘플코드 실행 - 코랩, VSCODE  (실습)

<8>  개인 정리






<1> 챗GPT와  OPENAI API 



1

챗GPT ?

OPEN AI가 2022년 11월에 공개한 챗GPT.

AI와 대화 하는 웹 서비스.



2

OPENAI API ?

좀더 세밀하게 OPEN AI서비스를 사용할수 있도록 API를 제공한다.

OPENAI의 API는 사용량에 따라 요금이 부과 되는 종량제이다.

사용량은 API호출 횟수가 아니다.

요금은 사용한 토큰 수를 기준으로 한다.



3

# poe.com에서 챗GPT 말고 다른 언어 모델 사용해보기~

https://poe.com/ 

# 나는 구글 계정으로 가입





<2> 랭체인 개요


1

언어 모델만으로 불가능한 작업이 있다.

학습한 지식 범위를 넘어선 정보

너무 복잡한 작업 내용

이러한 한계를 극복하는것이 RAG이다.

언어 모델이 알지 못하는 정보를 대답하게 하는 RAG(Retrival-Augumented Generation, 검색 증강 생성)

검색을 통해 더 보강하는 생성형 AI 이다.



2

랭체인은 애플리케이션 개발을 지원하는 오픈소스 라이블러리 이다.

랭체인은 언어모델이 아니다.

개발을 돕는 라이브러리라서 외부 언어 모델과 함께 사용해야 한다.

랭체인은 OPEN AI와 같은 언어 모델을 결합해, 간단한 텍스트 생성 뿐만 아니라 자연어를 이해하고, 특정 문제에 합을 생성하거나하는 애플리케이션을 개발하는 등 기존의 프로그래밍에서 어려웠던 작업을 효율적으로 수행 할수 있게 해준다.



3






<3> 랭체인의 6개 모듈


1

Model I/O 

언어 모델을 쉽게 다를수 있게 한다.

프롬프트 준비, 언어 모델 호출, 결과 수신 


2

Retrieval  (검색)

알수 없는 데이터를 다룬다.  

PDF 활용 등

RAG를 통해 이 문제를 해결 한다.




3

Memory

과거의 대화를  기억

챗GPT처럼 여러 개의 스레드를 각각 대화 기록에 따라 답변을 할수 있다.



4

Chains

여러 프로세스를 통합한다.

여러 모듈과 다른 기능을 조합해 하나의 애플리케이션을 만들수 있다.



5

Agents 

자율적으로 외부와 상호작용해 서비스를  만드는 모듈이다.

검색결과를 txt 파일에 저장하는 작업을 하기 위해서는 웹 페이지나 파일등 외부 데이터에 언어 모델이 상호작용해야 한다.



6

Callbacks

다양한 이벤트 발생을 처리한다.

단독으로 사용 불가.

다른 모듈과 결합하여 사용

주로 로그 출력이나 외부 라이브러리와 연동하여 사용한다.




<4> 개발환경 설정 - 코랩 사용


코랩에 파이썬 개발 환경이 세팅되어 있다.

구글 제미나이가 버전 업그레이드에 따른 라이브러리나 오류 문제와 해결법을 알려준다.


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





<5> 개발환경 설정 - Windows에 파이썬 설치 (실습)


1

파이썬 실행 환경 준비


Windows 시작 메뉴 > Microsoft Store  > 파이썬 3.11 설치 - Python Software Foundation > 설치


# 기타 

Python 3.11 - Windows에서 무료 다운로드 및 설치 | Microsoft Store

Download Python | Python.org



2

Windows 버전

Python Releases for Windows | Python.org


Add python.exe to PATH 체크후 설치



3

cmd

PS  

python3

3.11로 설치하도록 한다!!



# 설치가 제대로 안된경우

python3 --version

Python



// 정상 설치된 경우

python3 --version

Python 3.11




4

#langchain 설치


python3 -m pip install langchain      







<6> 개발환경 설정 - Windows에 VSCODE  설치  (실습)



1

# Visual studio code 설치


https://code.visualstudio.com/download


pc에 작업 디렉토리 생성

1chatgpt



2

# VSCODE  확장 프로그램 설치  

pylance 



3

Auto Import Completions 체크

클레스 이름 자동으로  후보 리스트 나옴 

                    



4

# OPENAI API 키 받아 두기

https://platform.openai.com/api-keys




5

# Windows 에 파워쉘 설치


Windows에 PowerShell 설치 - PowerShell | Microsoft Learn



winget search Microsoft.PowerShell 



6

OPEN_API_KEY  변수로 저장하기

# 설정후 pc 한번 리부팅해야 함



도스창

powershell


[System.Environment]::SetEnvironmentVariable('OPEN_API_KEY','sk-proj-lnrO','User')


echo $env:OPEN_API_KEY



# 설정후 pc 한번 리부팅해야 함

확인


echo $env:OPEN_API_KEY




7

# 랭체인과 필요한 라이블러리 설치


powershell


wget https://raw.githubusercontent.com/wikibook/langchain/master/requirements.txt -Outfile requirements.txt


 python3 -m pip install -r .\requirements.txt



8

# openai 설치

 python3 -m pip install openai==0.28






9

소스 다운로드

https://github.com/wikibook/langchain


Code > Download ZIP



10

소스 열기

왼쪽 위 탐색기 > 파일 > 폴더 열기  >  01_SETTING





11

# Vscode 터미널 열기

# VSCODE > 오른쪽위 터미널(T) > 새 터미널


powershell

pwd






<7>  샘플코드 실행 - 코랩, VSCODE  (실습)



1

코랩 사용


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



2

# 샘플 코드 

https://github.com/wikibook/langchain/tree/master/01_setting



3

# 샘플 코드 실행하기

pip install openai==0.28




# colab 실행



# 코드에 API키 추가 필요.

openai.api_key = "sk-phYAxCTN9F8WYKVU2jOIV2s-b14YPAhYTrpkVB0-nJrncpCfKDxouo0A" 


import json

import openai  #← OpenAI에서 제공하는 Python 패키지 가져오기

response = openai.ChatCompletion.create(  #←OpenAI API를 호출하여 언어 모델을 호출합니다.

    model="gpt-3.5-turbo",  #← 호출할 언어 모델의 이름

    messages=[

        {

            "role": "user",

            "content": "iPhone8 출시일을 알려주세요"  #←입력할 문장(프롬프트)

        },

    ]

)

print(json.dumps(response, indent=2, ensure_ascii=False))




4

# vscode > 터미널 실행

 python3 .\sample.py


결과



5

# ChatCompletion 호출!!!


VSCore  > sample.py 에서 content 내용 변경







7

OPENAI의 다른 모델인 Completion 호출!!!

랭체인을 사용하지 않고 사용.



sample_complete.py


import json

import openai

response = openai.Completion.create(  #←ChatCompletion 대신 Completion을 사용

    engine="gpt-3.5-turbo-instruct",  #←model 대신 engine을 지정하고 gpt-3.5-turbo-instruct를 지정

    prompt="오늘 날씨가 매우 좋고 기분이",  #←prompt를 지정

    stop=".",  #←문자가 나타나면 문장 종료

    max_tokens=100,  #← 최대 토큰 수

    n=2,  #← 생성할 문장 수

    temperature=0.5  #←다양성을 나타내는 매개변수

)

print(json.dumps(response, indent=2, ensure_ascii=False))



답변


import json

import openai

response = openai.Completion.create(  #←ChatCompletion 대신 Completion을 사용

    engine="gpt-3.5-turbo-instruct",  #←model 대신 engine을 지정하고 gpt-3.5-turbo-instruct를 지정

    prompt="오늘 날씨가 매우 좋고 기분이",  #←prompt를 지정

    stop=".",  #←문자가 나타나면 문장 종료

    max_tokens=100,  #← 최대 토큰 수

    n=2,  #← 생성할 문장 수

    temperature=0.5  #←다양성을 나타내는 매개변수

)

print(json.dumps(response, indent=2, ensure_ascii=False))




8

# 코랩 사용시 오류에 대해 알려줌


버전이 변경되며 함수가 변경됨

구글 제미나이 AI가 오류 설명해줌!!




10

# 책 내용 = 구 함수

# 함수 변경 됨  , 구글 제미나이 AI가 오류 설명해줌!!



import json
import openai  #← OpenAI에서 제공하는 Python 패키지 가져오기

# OpenAI API Key 설정
# openai.api_key = "YOUR_API_KEY" # 주석 해제 후 API Key 입력



12


# VSCODE

# API는 매개변수를 지정해 답변을 변경할수 있다.



response = client.chat.completions.create(  # Use client.chat.completions.create for chat completions

    model="gpt-3.5-turbo",  # Use 'model' instead of 'engine'

    messages=[

        {"role": "user", "content": "냉면 원재료 알려줘"},

    ],

    max_tokens=100,  # Maximum number of tokens

    n=2,  # Number of completions to generate

    temperature=0.5,  # Controls randomness

    stop="."  # Stop sequence

)

print(response.choices[0].message.content)


답변

냉면의 주요 원재료는 다음과 같습니다: 

1



# 오류시 예전 함수 사용  - 샘플코드 참고

response = openai.ChatCompletion.create(  #←OpenAI API를 호출하여 언어 모델을 호출합니다.


# 최근 버전에서는  openai.ChatCompletion.create  이   client.chat.completions.create 으로 변경됨.





<8>  개인 정리


1

OPENAI API 버전에 따라 함수가 변경된다.

코랩에서 돌려보면 제미나이 AI가 조치법을 알려준다.


예)

# 오류시 예전 함수 사용  - 샘플코드 참고

예전 버전  openai.ChatCompletion

최근버전 client.chat.completions


response = openai.ChatCompletion.create(  #←OpenAI API를 호출하여 언어 모델을 호출합니다.


# 최근 버전에서는  openai.ChatCompletion.create  이   client.chat.completions.create 으로 변경됨.





다음

https://brunch.co.kr/@topasvga/3902



                    

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari