안녕하세요! 체인에 대한 설명과 작동 가능한 전체 코드를 자세히 알려드리겠습니다. 이 설명은 LangChain 라이브러리를 사용하여 언어 모델을 체인으로 연결하는 방법에 대한 것입니다. 마지막에는 .env
파일에서 OPENAI_API_KEY
를 불러와서 사용하는 전체 코드를 제공하겠습니다.
LangChain은 대형 언어 모델(LLM)을 쉽게 활용할 수 있게 해주는 파이썬 라이브러리입니다. 이 라이브러리는 프롬프트 관리, 체인 생성, 에이전트 구축 등 다양한 기능을 제공합니다. 그중에서도 체인(Chain)은 여러 모델 호출이나 작업을 순차적으로 연결하여 복잡한 작업을 수행할 수 있게 해주는 핵심 요소입니다.
체인은 여러 개의 처리 단계를 순차적으로 연결하여 데이터를 변환하거나 정보를 생성하는 구조입니다. 각 단계는 이전 단계의 출력물을 받아서 새로운 출력물을 생성합니다. 이를 통해 복잡한 작업을 작은 단계로 분해하고, 재사용성과 모듈성을 높일 수 있습니다.
예를 들어, 제품에 대한 재미있는 회사 이름을 생성하고, 그 이름을 사용하여 슬로건을 만드는 작업을 생각해볼 수 있습니다. 이 경우, 첫 번째 체인은 제품명을 받아서 회사 이름을 생성하고, 두 번째 체인은 생성된 회사 이름을 받아서 슬로건을 생성합니다.
체인은 데이터를 단계별로 처리하여 결과를 얻는 일종의 파이프라인 구조라고 할 수 있습니다. 각 단계는 독립적으로 설계되며, 각 단계의 입력과 출력을 정의하여 체인을 만들 수 있습니다. 이 방식은 복잡한 작업을 단순하고 작은 작업 단위로 분해하여 순차적으로 처리할 수 있도록 합니다.
체인은 기본적으로 다음과 같은 방식으로 작동합니다:
이를 통해 데이터를 여러 단계에 걸쳐 변형할 수 있으며, 각 단계는 독립적이고 재사용 가능한 모듈로 설계할 수 있습니다.
각 단계는 독립적이어서, 회사 이름 생성 체인과 슬로건 생성 체인을 개별적으로 사용할 수 있고, 필요에 따라 순서를 조정하거나 다른 체인과 결합할 수 있습니다.
LangChain 같은 라이브러리에서는 이러한 체인을 쉽게 정의하고, 연결하여 사용할 수 있는 도구들을 제공합니다.
LLMChain은 LangChain에서 제공하는 가장 기본적인 체인 중 하나로, 단일 언어 모델 호출을 감싸는 래퍼(wrapper) 역할을 합니다. 이 체인은 입력 프롬프트를 받아서 언어 모델을 호출하고, 그 결과를 반환합니다.
이제 실제 코드를 통해 LLMChain을 사용하는 방법을 알아보겠습니다.
import os
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
os
와 dotenv
는 환경 변수를 불러오기 위해 사용합니다.langchain.chat_models
에서 ChatOpenAI
를 임포트하여 OpenAI의 채팅 모델을 사용합니다.langchain.prompts.chat
에서 프롬프트 템플릿 관련 클래스를 임포트합니다.langchain.chains
에서 LLMChain
을 임포트하여 체인을 생성합니다.load_dotenv()
.env
파일에서 환경 변수를 불러옵니다. 이 파일에는 OPENAI_API_KEY
가 저장되어 있어야 합니다.human_message_prompt = HumanMessagePromptTemplate.from_template(
"Make up a funny company name for a company that produces {product}."
)
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
HumanMessagePromptTemplate
를 사용하여 사용자 메시지의 템플릿을 생성합니다. {product}
는 동적으로 입력될 부분입니다.ChatPromptTemplate
를 사용하여 전체 채팅 프롬프트를 생성합니다. 여기서는 하나의 메시지만 사용하지만, 시스템 메시지나 여러 사용자 메시지를 조합할 수 있습니다.chat = ChatOpenAI()
ChatOpenAI
인스턴스를 생성합니다. 기본적으로 환경 변수에 설정된 API 키를 사용합니다.chain = LLMChain(llm=chat, prompt=chat_prompt_template)
LLMChain
을 생성할 때, 사용할 언어 모델 llm
과 프롬프트 prompt
를 지정합니다.chat
모델과 chat_prompt_template
를 사용하여 언어 모델 호출을 수행합니다.result = chain.run(product="Computers")
print(result)
chain.run()
메서드를 호출하여 체인을 실행합니다. product
매개변수에 "Computers"
를 전달합니다.print
하여 출력합니다.아래는 위의 설명을 반영한 전체 코드입니다. 이 코드는 .env
파일에서 OPENAI_API_KEY
를 불러와서 사용합니다.
import os
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
# 1. 환경 변수 불러오기
load_dotenv() # 이 코드는 .env 파일에서 환경 변수를 로드합니다.
# 2. 프롬프트 템플릿 생성
human_message_prompt = HumanMessagePromptTemplate.from_template(
"Make up a funny company name for a company that produces {product}."
)
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
# 3. 언어 모델 초기화
chat = ChatOpenAI(temperature=0.9) # 온도를 높여서 더 창의적인 응답을 얻습니다.
# 4. LLMChain 생성
chain = LLMChain(llm=chat, prompt=chat_prompt_template)
# 5. 체인 실행 및 결과 출력
result = chain.run(product="Computers")
print(result)
.env
파일 설정프로젝트 폴더에 .env
파일을 만들고, 다음과 같이 API 키를 설정하세요.
OPENAI_API_KEY=your_openai_api_key_here
your_openai_api_key_here
를 실제 OpenAI API 키로 바꾸세요.
pip install langchain openai python-dotenv
.env
파일을 생성하고, OPENAI_API_KEY
를 설정합니다.
코드를 실행합니다.
python your_script_name.py
TechGiggles Computing Co.
실행하면 위와 같이 컴퓨터를 생산하는 회사에 대한 재미있는 이름이 생성됩니다.
이렇게 LangChain의 LMChain을 사용하여 간단한 체인을 생성하고 실행해 보았습니다. 체인을 사용하면 복잡한 언어 모델 작업을 단순화하고, 여러 단계를 연결하여 더 복잡한 응용 프로그램을 만들 수 있습니다.
LangChain은 이외에도 다양한 유형의 체인을 제공하며, 이를 활용하여 문서 질의응답, 수학 계산, 함수 호출 등 다양한 작업을 수행할 수 있습니다. 체인을 이해하고 활용하면 언어 모델의 능력을 최대한 활용할 수 있습니다.
앞으로 더 복잡한 체인과 기능을 탐구해 보시길 권장드립니다!