IT/python

[python] langchain을 활용한 기본 프롬프트 사용하기

고잉킴 2023. 10. 17. 13:52

langchain은 언어 모델을 기반으로 하는 app을 개발하기 위한 프레임워크입니다.
langchain에서 제공하는 라이브러리들을 활용하여 보다 쉽게 LLM (Large Language Model) 을 사용할 수 있죠.
 
semantic-kernel 과 같은 MS에서 주도하는 프레임워크도 있는데 langchain을 많이 쓰니 저도 이걸 활용해보려고 합니다.
 
langchain의 경우 javascript , python으로 제공되는데 아무래도 수많은 AI , 유관 플랫폼들이 python을 많이 사용하니 python으로 해보겠습니다.
 

Langchain 사용하기

1. 사전 셋업

1) python 설치
https://gniogolb.tistory.com/8

Windows PC 내 Python 설치 방법

1. Python 다운로드 Python 최신 버전의 경우 공식 홈페이지 python.org에서 다운받으시면 됩니다. 2. 설치 파일 실행 다운로드가 완료되면 설치 파일을 실행하시구요. 3. 설치 옵션 설정 설치 중에 "Add Py

gniogolb.tistory.com

 
2) openai api key 생성
https://platform.openai.com/ 로그인 후 우측 상단에 내 프로필을 클릭해서 View API keys 클릭하시고
API KEY 사용의 경우 비용이 발생하기 때문에 카드 등록을 해줘야 합니다.
카드 등록 후 Rate Limits 에서 비용 제한도 걸어두시면 좋을 거 같아요.
 

2. Langchain 설치

3.12에서 langchain, openai 를 설치하려고 보니 pip install 시 fail이 나네요.
저는 python 버전 3.11.6에서 진행하였으니 참고부탁드립니다.

*error message : Failed to build aiohttp frozenlist multidict yarl
ERROR: Could not build wheels for aiohttp, frozenlist, multidict, yarl, which is required to install pyproject.toml-based projects
pip install --upgrade pip 
pip install openai
pip install langchain

패키지 호환성, 보안 개선 등을 위해 pip는 upgrade해주는 것이 좋습니다.
 
저는 OPENAI_API_KEY를 main.py에 노출하지 않고 python-dotenv 패키지를 설치해서 .env파일에 별도로 변수를 넣어줬는데 main.py 에 os.environ 로 설정해주시거나 OS 환경변수로 넣어주셔도 무방할 것 같습니다.
 

3. Langchain을 통한 기본 프롬프트 생성

여기서 temperature의 경우 생성된 output의 다양성을 조절하는 값인데요. 높을수록 더 랜덤한 결과를 낼 수 있다고 합니다. 사실 이 부분은 정확하게 이해는 안되어서 우유부단하게 0.5로 설정했습니다. 
max_token의 경우 별도로 설정하지 않았더니 output이 짤려서 나와서 4000으로 설정하였습니다.
현재 max_token 값으로 설정할 수 있는 최대값은 질문 + 답변 포함 4096인걸로 보이는데
질문도 같이 호출되므로 질문 길이를 감안해서 설정 해주세요.

from dotenv import load_dotenv
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI

load_dotenv()  ## .env 파일에서 OPENAI_API_KEY 받아옴

llm = OpenAI(temperature=0.5, max_tokens=4000) ## temperature 0~1 

prompt = PromptTemplate(
    input_variables = ['contents'], 
    template = "{contents} 관련해서 구글 SEO에 맞게 글 작성해줘"
)

chain = LLMChain(llm=llm, prompt=prompt)

#실행
print(chain.run("python으로 웹 개발"))

 
Output

langchain을 사용해 프롬프트 날리기

 

4. 정리

작성하고 보니 별 내용은 없네요. 이를 활용해서 어떤 것을 하면 좋을지 고민해보려 합니다.
(고민만 수백만번)
 
감사합니다.