langchain 기반의 LLM 애플리케이션 개발을 위해 chain 및 agent 모듈 사용을 위한 단계적 가이드 – 1부) LLMChain

개요

langchain의 chain과 agent 모듈은 LLM을 이용하여 단순 질의응답을 넘어서는 좀 더 지능적인 기능을 구현할 수 있도록 도와줍니다. 이 글에서는 langchain을 사용하여 대규모 언어 모델 개발을 위한 chain과 agent에 대해 설명합니다.

또한 이 글은 langchain에 대해 어느정도 구현 경험이 있는 사람을 대상을 작성되었습니다.

LangChain: Chain

일반적으로 chain은 LLM을 프롬프트와 통합하여 텍스트 또는 기타 데이터 세트에 대해 일련의 작업을 실행할 수 있는 모듈을 형성합니다. 이 chain은 여러 입력을 동시에 처리하도록 설계되었습니다. 가장 일반적인 LLM 제공업체는 OpenAI, Cohere, Bloom, Huggingface 등입니다.

우리는 다음 유형의 체인에 대해 논의할 것입니다:

  1. LLM Chain
  2. Sequential Chain – SimpleSequentialChain 및 SequentialChain
  3. Router Chain

위의 3가지 내용을 3부로 나누어서 정리하려고 합니다.

LLMChain

LLMChain은 기본이지만 가장 일반적으로 사용되는 체인 유형입니다. 이는 PromptTemplate, Open AI 모델(LLM 또는 ChatModel) 및 선택적 출력 파서로 구성됩니다. LLMChain은 여러 입력 변수를 사용하고 PromptTemplate을 사용하여 이를 프롬프트 형식으로 지정합니다. 프롬프트를 모델에 전달합니다. 마지막으로 OutputParser(제공된 경우)를 사용하여 LLM의 출력을 최종 형식으로 구문 분석합니다. LLMChain의 한 예는 아래에서 볼 수 있습니다.

아래 코드에서 먼저 OpenAI의 API 서비스에 가입해서 API_KEY를 발급받아서 윗줄에 선언해야합니다.

import os
# 환경변수에 OPENAI_API_KEY를 설정합니다.
os.environ["OPENAI_API_KEY"] = "sk-XXXXXXXXXXXXXXXXXXXXXXX" 

# import OpenAI Model, Prompt Template and LLm Chain
from langchain.chat_models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain

# Initialize the language model
llm = ChatOpenAI(temperature=0.9, model="gpt-3.5-turbo")

# Initialize a prompt. This prompt takes in a variable called product asks the 
# LLM to generate the best name to describe a company that makes that product. 
prompt = ChatPromptTemplate.from_template("{product}을(를) 만드는 회사를 설명하는 가장 좋은 이름은 무엇입니까")

이제 LLM과 prompt를 LLMChain이라는 chain으로 결합합니다. 따라서 LLM 체인은 LLM과 prompt의 조합입니다.

# LLM과 프롬프트를 LLm으로 결합 Chain 
chain = LLMChain(llm=llm, prompt=prompt)

이 Chain은 프롬프트와 LLM을 순차적으로 통과합니다. 이제 chain.run을 사용하여 “책상위에 두고 쓰기 좋은 블루투스 스피커”라는 제품을 실행할 수 있습니다.

# chain.run formats the prompt under the hood and passes the whole prompt to LLM.
product = "책상위에 두고 쓰기 좋은 블루투스 스피커"
chain.run(product)

이를 바탕으로 “SoundScape”라는 가상 회사의 이름을 얻을 수 있습니다.

마음에 들지 않으면 여러번 실행하면 다른 이름이 계속 나올것이고 그래도 별로라면 위의 model 부분을 아래와 같이 gpt-4로 변경해서 실행할 수 있습니다. (API 사용료가 gpt-3.5에 비해 조금더 비쌉니다)

# Initialize the language model
llm = ChatOpenAI(temperature=0.9, model="gpt-4")

Leave a Comment