Programming/AI

[LLM] 랭체인 part 1, 프롬프트 모듈 사용해보기 (feat: 환경 셋팅)

유로띠 2024. 3. 30. 13:03
반응형

안녕하세요 😉

유유자적한 개발자 유로띠 입니다 😀

 

👏👏👏👏

 

 

 

이번 포스팅에서는

✅ 랭체인 모듈에 필요한 환경 설치

✅ openAI 토큰 발급

✅ 허깅페이스 토큰발급

✅ 프롬프트 생성 및 LLM 호출

에 대해서 알아보겠습니다

 

 

 

 

랭체인의 모듈을 사용해 보자


 

랭체인으로 LLM 기반의 AI 서비스 개발하기 란 책에서 실습 부분을 읽고 작성한 글이며,

코드가 완전히 동일하지는 않고 최신 버전 사용 및 명령어가 실행되지 않아 부분적으로 오류를 찾아 수정하였습니다.

 

 

✅  python 설치

현재 로컬에 설치된 python version은 3.9이고 책에서 알려준 버전은 3.8이지만, 랭체인을 오류 없이 사용하기 위해서는 3.11 이상은 되어야 정상적으로 작동됩니다.

그래서 python 버전별로 설치하고 관리할 수 있는 pyenv를 설치합니다.

pyenv 설치

brew install pyenv

 

 

특정 버전의 python 설치 및 적용

저는 3.11.8 버전을 설치해 보겠습니다.

pyenv install 3.11.8

 

 

올바르게 설치되었는지 확인 해 봅니다. 🙌

pyenv versions
* system
  3.11.8 (set by /Users/msyu/.pyenv/version)

 

쉘 프로파일을 설정합니다.

공식 문서를 참고하세요! 👍

 

GitHub - pyenv/pyenv: Simple Python version management

Simple Python version management. Contribute to pyenv/pyenv development by creating an account on GitHub.

github.com

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

 

 

global 명령어로 설치된 버전으로 변경해 보겠습니다.

$ pyenv global 3.11.8

#변경 후 확인
$ pyenv versions
  system
* 3.11.8 (set by /Users/msyu/.pyenv/version)

$ python --version
Python 3.11.8

 

 

✅  Anaconda 설치

랭체인을 사용하기위한 환경구성으로 로컬 환경에 아나콘다(Anaconda)를 설치합니다.

설치 방법은 매우 간단하니 공식 사이트에서 다운로드를 진행하시면 됩니다.

 

Free Download | Anaconda

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

가상환경 생성

아나콘다 설치가 완료되었으면 가상환경을 만들어보겠습니다.

llm이라는 이름의 가상환경을 생성합니다.

conda create -n llm python=3.11

 

 

llm 가상 환경이 생성되었습니다. 😎

# conda environments:
#
base                  *  /Users/msyu/opt/anaconda3
llm                      /Users/msyu/opt/anaconda3/envs/llm

 

 

생성한 llm 가상환경을 활성화합니다.

activate llm

 

주피터 노트북 설치

다음으로 주피터 노트북을 설치 합니다.

가상 환경에 커널을 연결하기 위해 다음 명령어를 실행합니다.

$ pip install ipykernel

$ python -m ipykernel install --user --name llm --display-name "llm"
Installed kernelspec llm in /Users/msyu/Library/Jupyter/kernels/llm

 

 

환경 구성이 완료되었습니다. 👏👏👏👏

 

 

 

✅  주피터 노트북 실행

 

jupyter notebook 명령어를 통해 주피터 노트북을 실행합니다.

자동으로 웹브라우저에서 주피터 노트북이 실행됩니다.

jupyter notebook
[I 2024-03-29 00:05:28.017 LabApp] JupyterLab extension loaded from /Users/msyu/opt/anaconda3/lib/python3.9/site-packages/jupyterlab
[I 2024-03-29 00:05:28.017 LabApp] JupyterLab application directory is /Users/msyu/opt/anaconda3/share/jupyter/lab
[I 00:05:28.030 NotebookApp] Serving notebooks from local directory: /Users/msyu/day1/ai-study
[I 00:05:28.030 NotebookApp] Jupyter Notebook 6.4.5 is running at:
[I 00:05:28.030 NotebookApp] http://localhost:8888/?token=3d822fb8c86603d60d4103a97fe18a74bd911bda7a4eaf09
[I 00:05:28.030 NotebookApp]  or http://127.0.0.1:8888/?token=3d822fb8c86603d60d4103a97fe18a74bd911bda7a4eaf09
[I 00:05:28.030 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 00:05:28.037 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///Users/msyu/Library/Jupyter/runtime/nbserver-94805-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=3d822fb8c86603d60d4103a97fe18a74bd911bda7a4eaf09
     or http://127.0.0.1:8888/?token=3d822fb8c86603d60d4103a97fe18a74bd911bda7a4eaf09

 

오른쪽에 New > llm 이라는 가상환경이 생성된 것을 알 수 있습니다. 😏

 

 

 

 

 

라인별로 작성하고 Run 버튼이나 Shift + Enter 키를 사용해 실행하여 결과를 확인할 수 있습니다.

 

 

 

기본적인 환경 구성은 완료하였습니다. 다음으로 랭체인을 사용하기위해 필요한 라이브러리를 설치하여 모델 I/O가 파이썬에서 어떻게 활용되는지 알아보도록 하겠습니다.

 

✅  필요한 라이브러리 설치

 

주피터 노트북에 접속하여 다음 3가지를 설치합니다.

 

랭체인(langchain)을 설치합니다.

openai 라이브러리를 설치합니다.

허깅페이스의 LLM을 사용하기 위한 라이브러리를 설치합니다.

랭체인 openai 라이브러리를 설치합니다.

 

!pip install langchain==0.1.13
!pip install openai==1.14.2
!pip install huggingface-hub==0.21.4
!pip install langchain_openai

 

 

 

다음으로 LLM API를 사용하기 위해서는 오픈AI와 허깅페이스의 키를 발급받아야 합니다.

 

openAI 토큰 발급


 

✅  openAI 키 발급

 

openAI 키 발급 및 크레딧 충전은 다음 포스팅을 참고하시면 됩니다.

로컬에서 가성비있게 chatGPT 사용하기 (feat: ollama-webui)

 

로컬에서 가성비있게 chatGPT 사용하기 (feat: ollama-webui)

안녕하세요 😉 유유자적한 개발자 유로띠 입니다 😀 👏👏👏👏 이번 포스팅에서는 ✅ chatGPT 요금제 비교 ✅ chatGPT api 사용하기 ✅ ollama-webui에서 chatGPT 연동 에 대해서 알아보겠습니다 Ollama에

msyu1207.tistory.com

 

 

 

허깅페이스 로그인 및 토큰 발급


 

허깅페이스(huggingface)는 오픈소스 기반으로

LLM 모델을 누구나 무료로 사용할 수 있는 생태계를 조성하고 있습니다. 😏

 

✅  허깅페이스 로그인 or 회원가입

허깅페이스 웹사이트에 접속하여 회원가입 or 로그인을 진행합니다.

 

Hugging Face – The AI community building the future.

The Home of Machine Learning Create, discover and collaborate on ML better. We provide paid Compute and Enterprise solutions. We are building the foundation of ML tooling with the community.

huggingface.co

 

✅  토큰 발급

 

허깅페이스의 토큰을 발급해 보겠습니다.

로그인 후 우측의 프로필에서 settings > Access Tokens을 선택합니다.

 

 

위의 이미지는 토큰 생성 후의 이미지이며, 생성 전이면 아래의 이미지 처럼 보이고 New token을 선택하여 토큰 생성을 진행합니다.

name을 작성하고 Generate a token을 선택하여 토큰을 생성합니다.

 

 

 

토큰이 생성되었고 Show를 클릭하면 키를 확인할 수 있습니다. 🙌

 

 

프롬프트 생성 및 LLM 호출


 

✅  openAi & 허깅페이스 키 등록

 

아나콘다에서 생성한 키를 입력합니다.

여기서 중요한 점은 openAI 이름은 정확히 OPENAI_API_KEY 여야 합니다. 다른 이름으로 설정하면 에러가 발생됩니다.

 

import os
os.environ["OPENAI_API_KEY"] = "sk-xxx"
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "hf_XXX"

 

 

해당 명령어를 통해 올바르게 등록되었는지 확인 할 수 있습니다.

 

 

✅  프롬프트 생성

 

LLM이 어떤 문장을 만들어야 하는지를 알려주는 프롬프트 템플릿 사용법입니다.

product 부분에 정보를 입력하면 해당 부분만 변경되고 나머지 문구는 고정해서 출력하도록 합니다.

 

 

✅  LLM 호출

 

모델 I/O

모델 I/O는 언어 모델과 상호 작용을 위한 모듈입니다. 상호작용은 프롬프트 생성이나 답변을 받기 위해 모델 api을 호출하거나 답변에 대한 출력을 하는 작업들을 의미합니다.

 

GPT-3.5-turbo

gpt 3.5 turbo 모델을 불러와서 프롬프트를 실행해보겠습니다.

정확히 강아지라고 알려주는군요! 😏

 

 

google/flan-t5-xxl

다음은 구글에서 제공하는 모델인 T5(Text-to-Text Transfer Transformer) 모델의 변형 중 하나인 google/flan-t5-xxl을 이용하여 프롬프트를 실행해보겠습니다.

 

gpt보다  답변이 불완전합니다. 🤨

 

 

 

모델 성능 비교

랭체인에서 제공하는 ModelLaboratory을 이용하면 모델의 성능을 비교해 볼 수 있습니다.

 

 

 

출력 파서 (Output Parser)

렝체인에서는 다음과 같은 출력 파서를 제공합니다.

 

PydanticOutputParser : 입력된 데이터를 정의된 필드 타입에 맞게 자동으로 변환합니다.

SimpleJsonOutputParser : JSON 형태로 결과를 반환합니다.

CommaSeparatedListOutputParser : 콤마(,)로 구분하여 결과를 반환합니다.

DatetimeOutputParser : 날짜/시간 형태로 결과를 반환합니다.

XMLOutputParser : XML 형태로 결과를 반환합니다.

 

 

CommaSeparatedListOutputParser를 사용해서 한국의 7개의 야구팀의 결과를 콤마로 받아보겠습니다.

 

콤마 형식으로 결과를 보여주고 있습니다.

 

 

마치며


 

랭체인을 사용하기 위해 필요한 라이브러리와 환경 구성에 대해 알아보았고 가볍게 랭체인에 대해서도 사용해 보았습니다.

또한, 언어 모델과 상호 작용을 위한 모듈을 사용하여 프롬프트를 생성하고 답변을 받기 위해 모델 API을 호출하며, 답변에 대한 다양한 출력 방식에 대해 알아보았습니다.

 

앞으로 몇번의 포스팅을 통해 LLM에 대해 알아보겠습니다.

 

감사합니다. 😎

 

 

 

참고 문서

 

랭체인으로 LLM 기반의 AI 서비스 개발하기

 

랭체인으로 LLM 기반의 AI 서비스 개발하기 - 예스24

내 질문에 대답하고, PDF를 요약해주고, 번역도 하고, 메일도 써주는 똑똑한 AI 서비스 만들기!개념, 원리, 실습을 한 권으로 빠르게! RAG를 구현하며 배우는 LLM 입문! LLM의 기본 개념부터 동작 원리

m.yes24.com

 

https://python.langchain.com/docs/get_started/quickstart#llm-chain

 

Quickstart | 🦜️🔗 Langchain

In this quickstart we'll show you how to:

python.langchain.com

 

반응형