Published on
대형 언어 모델을 위한 LangChain 소개
대형 언어 모델 (LLM)은 자연 언어 처리 분야를 혁신시키며, 챗봇, 질문-응답 시스템 및 텍스트 생성 도구 등의 강력한 애플리케이션을 가능하게 합니다. 그러나 처음부터 이러한 애플리케이션을 구축하는 것은 도전적이고 시간이 많이 소요될 수 있습니다. 이를 해결하기 위해 LangChain이 등장했습니다. LangChain은 LLM 기반 애플리케이션을 개발하기 위한 Python 라이브러리로, 구축하는 것을 더 쉽게 도와줍니다.
이 글에서는 LangChain과 LLM 기반 애플리케이션을 구축하는 방법에 대해 알아보겠습니다. 설치, 핵심 개념 설명 및 코드 예제를 제공하여 시작하기를 돕겠습니다.
LangChain이란?
LangChain은 LLM과 상호 작용하는 데 사용하는 표준 인터페이스를 제공하는 오픈 소스 라이브러리입니다. 이는 LLM과 직접 상호 작용하는 복잡성을 추상화하여 개발자가 애플리케이션 구축에 중점을 둘 수 있도록 도와줍니다.
LangChain의 주요 기능은 다음과 같습니다.
- OpenAI, Cohere, Hugging Face 등 다양한 LLM 제공업체 지원
- Prompt, Chain, Agent, Memory 등 여러 모듈 구성
- 문서, 임베딩 및 벡터 스토어 작업을 위한 유틸리티 기능
- 다른 도구 및 프레임워크와의 통합
LangChain을 활용하면 개발자들은 LLM API의 저수준 세부 사항에 대해 걱정할 필요 없이 빠르게 프로토타입을 만들고 LLM 기반 애플리케이션을 배포할 수 있습니다.
설치
LangChain을 사용하려면 pip를 사용하여 설치해야 합니다. 가상 환경을 먼저 생성하는 것이 좋습니다.
python -m venv langchain-env
source langchain-env/bin/activate
pip install langchain
LLM을 사용하려는 제공업체의 패키지도 설치해야 합니다. 예를 들어, OpenAI의 모델을 사용하려는 경우:
pip install openai
사용할 제공업체의 API 키를 확인해야 합니다. 이를 환경 변수로 설정할 수 있습니다:
export OPENAI_API_KEY=your_api_key_here
핵심 개념
프롬프트
프롬프트는 LLM의 출력을 안내하는 명령 또는 문맥입니다. LangChain은 프롬프트 생성 및 사용을 쉽게하기 위해 PromptTemplate
클래스를 제공합니다.
프롬프트 템플릿을 만드는 예시는 다음과 같습니다:
from langchain import PromptTemplate
template = """
You are an assistant that helps users write professional emails.
Given the following context:
{context}
Write a professional email response. Sign the email as "John".
"""
prompt = PromptTemplate(
input_variables=["context"],
template=template,
)
입력 변수를 전달하여 프롬프트를 사용할 수 있습니다:
context = "I need to inform my boss that I'll be taking a vacation next week."
print(prompt.format(context=context))
이렇게 하면 전달한 문맥을 사용하여 완성된 프롬프트가 출력됩니다.
LLM
LangChain은 LLM
클래스를 통해 다양한 LLM 제공업체와 상호 작용할 수 있는 표준 인터페이스를 제공합니다.
다음은 OpenAI의 text-davinci-003
모델을 사용하는 예시입니다:
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-davinci-003")
result = llm("What is the capital of France?")
print(result)
이렇게 하면 모델의 질문에 대한 응답이 출력됩니다.
체인
체인은 프롬프트와 LLM과 같은 여러 구성 요소를 결합하여 보다 복잡한 애플리케이션을 만들 수 있게 해줍니다. LangChain은 여러 내장 체인뿐만 아니라 사용자 정의 체인 생성도 가능합니다.
다음은 순차적인 간단한 체인 예시입니다. 첫 번째 프롬프트를 입력으로 받아 LLM에 전달한 다음, LLM의 출력을 두 번째 프롬프트로 전달합니다:
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
first_prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)
second_prompt = PromptTemplate(
input_variables=["company_name"],
template="Write a catchphrase for the following company: {company_name}",
)
chain = LLMChain(llm=llm, prompt=first_prompt)
second_chain = LLMChain(llm=llm, prompt=second_prompt)
result = chain.run("colorful socks")
print(f"Company name: {result}")
result = second_chain.run(result)
print(f"Catchphrase: {result}")
이렇게 하면 "colorful socks" 제품에 기반한 회사 이름을 생성하고, 그 회사에 대한 캐치프레이즈를 생성합니다.
에이전트
에이전트는 사용자의 입력에 따라 동적으로 어떤 작업을 수행할지를 결정하는 데 LLM을 사용하는 시스템입니다. 이들은 외부 세계와 상호 작용하고 다음 동작을 결정하기 위해 도구를 사용할 수 있습니다.
다음은 검색 도구와 계산기 도구를 사용하는 간단한 에이전트 예시입니다:
from langchain.agents import initialize_agent, Tool
from langchain.tools import BaseTool
from langchain.llms import OpenAI
def search_api(query):
return "Search results for {query} would be returned here"
def calculator(expression):
return eval(expression)
search_tool = Tool(
name="Search",
func=search_api,
description="Useful for searching the internet for information."
)
calculator_tool = Tool(
name="Calculator",
func=calculator,
description="Useful for doing math calculations."
)
tools = [search_tool, calculator_tool]
llm = OpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
result = agent.run("What is the population of Canada divided by the population of the United States?")
print(result)
이 에이전트는 먼저 캐나다와 미국의 인구수를 검색하고, 검색 결과에서 숫자를 추출한 후 계산기를 사용하여 그들을 나눕니다.
결론
LangChain은 LLM들로 구동되는 애플리케이션 개발을 더욱 쉽게 만들어주는 강력한 라이브러리입니다. 표준 인터페이스와 모듈식 컴포넌트를 제공함으로써, 개발자들이 LLM API의 자세한 내용에 대해 걱정하지 않고 애플리케이션을 구축하는 데 집중할 수 있도록 도와줍니다.
이 기사에서는 LangChain의 기본 사항을 다루며, 설치, 프롬프트, LLMs, 체인, 그리고 에이전트와 같은 주요 개념을 다루고 있습니다. 또한 시작하는 데 도움이 되는 코드 예제도 제공되어 있습니다.
LangChain에 대해 더 자세히 알아보려면 https://langchain.readthedocs.io/에서 (opens in a new tab) 공식 문서를 참조하세요. 더 고급 사용 사례와 아이디어를 위해 GitHub 저장소의 예제 디렉터리를 탐색할 수도 있습니다.
LLM들이 계속 발전함에 따라, LangChain과 같은 도구들은 다양한 애플리케이션에 대해 접근 가능하고 사용하기 쉽게 만드는 데 점점 더 중요한 역할을 할 것입니다. LangChain을 활용하여 강력한 언어 기반 애플리케이션을 구축함으로써, 이 흥미로운 분야의 최전선에 서 있을 수 있습니다.