1. LangChain 개요
LangChain은 LLM (Large Language Model) 기반 애플리케이션을 더욱 강력하고 유연하게 만들기 위한 프레임워크입니다. OpenAI, Hugging Face 등의 다양한 LLM을 쉽게 연결하고, 체인(Chain) 형태로 구성하여 복잡한 기능을 수행할 수 있도록 돕습니다.
LangChain은 단순한 프롬프트 관리 도구를 넘어서, 외부 데이터와의 연동, 메모리 유지, 데이터베이스 연결, API 호출 등 다양한 기능을 제공합니다.

2. LangChain의 주요 구성 요소

LangChain은 여러 개의 핵심 모듈로 구성됩니다.
2.1 LLM (Large Language Model)
LangChain은 다양한 LLM을 지원합니다.
- OpenAI (GPT-3.5, GPT-4)
- Hugging Face 모델
- Google PaLM
- Anthropic Claude 등
from langchain.llms import OpenAI
llm = OpenAI(model_name="gpt-4", temperature=0.7)
response = llm("인공지능이란?")
print(response)
2.2 프롬프트 템플릿 (Prompt Template)
LLM의 응답을 조정하기 위해 미리 정의된 프롬프트를 사용할 수 있습니다.
from langchain.prompts import PromptTemplate
template = PromptTemplate(
input_variables=["주제"],
template="다음 주제에 대해 자세히 설명해 주세요: {주제}"
)
prompt = template.format(주제="LangChain이란?")
print(prompt)
2.3 체인 (Chain)
LangChain의 강력한 기능 중 하나는 여러 개의 LLM 호출을 연결하여 복잡한 작업을 수행하는 것입니다.
👉 LLMChain
from langchain.chains import LLMChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
llm = OpenAI(model_name="gpt-4", temperature=0.7)
template = PromptTemplate(
input_variables=["topic"],
template="다음 주제에 대해 설명해 주세요: {topic}"
)
chain = LLMChain(llm=llm, prompt=template)
response = chain.run("LangChain의 특징")
print(response)
👉 Sequential Chain
여러 개의 체인을 순차적으로 연결할 수도 있습니다.
from langchain.chains import SimpleSequentialChain
chain1 = LLMChain(llm=llm, prompt=PromptTemplate(
input_variables=["topic"],
template="다음 주제에 대해 설명해 주세요: {topic}"
))
chain2 = LLMChain(llm=llm, prompt=PromptTemplate(
input_variables=["summary"],
template="이 요약을 더 짧게 만들어 주세요: {summary}"
))
sequential_chain = SimpleSequentialChain(chains=[chain1, chain2])
response = sequential_chain.run("LangChain의 기본 개념")
print(response)
2.4 메모리 (Memory)
LangChain은 대화의 맥락을 유지할 수 있도록 메모리 기능을 제공합니다.
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "안녕하세요!"}, {"output": "반갑습니다!"})
print(memory.load_memory_variables({}))
2.5 에이전트 (Agents)
에이전트는 LLM이 동적으로 다양한 도구를 사용하도록 돕습니다. 예를 들어, Google 검색, 데이터베이스, API 호출 등을 조합할 수 있습니다.
from langchain.agents import AgentType, initialize_agent
from langchain.tools import Tool
def weather_tool(query):
return "서울의 날씨는 맑음입니다."
tools = [Tool(name="WeatherTool", func=weather_tool, description="날씨 정보를 제공합니다.")]
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
response = agent.run("서울의 날씨는?")
print(response)
2.6 데이터베이스 연동 (Vector Store)
LangChain은 벡터 DB (Pinecone, FAISS, Chroma 등)를 사용하여 LLM이 데이터를 검색할 수 있도록 합니다.
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
docs = ["LangChain은 LLM을 활용한 애플리케이션 개발 프레임워크입니다.", "Python을 사용하여 LangChain을 실행할 수 있습니다."]
embeddings = OpenAIEmbeddings()
vector_store = FAISS.from_texts(docs, embeddings)
query = "LangChain이 무엇인가요?"
results = vector_store.similarity_search(query)
print(results[0].page_content)
3. LangChain을 활용한 주요 응용 분야
- 대화형 챗봇: LangChain을 사용하여 챗봇을 만들고, 대화 이력을 관리할 수 있습니다.
- 문서 QA 시스템: 문서를 벡터 DB에 저장하고, LLM을 활용해 문서 내용을 기반으로 질의응답을 수행합니다.
- 에이전트 기반 자동화: API 호출, 데이터 처리, 외부 도구 연동을 자동화할 수 있습니다.
- 프롬프트 최적화: 미리 정의된 템플릿을 사용하여 일관된 응답을 생성할 수 있습니다.
- AI 기반 검색 시스템: 자연어로 검색하고 관련 정보를 반환하는 검색 시스템을 구축할 수 있습니다.
4. LangChain 사용 시 고려해야 할 점
- LLM 비용 관리: OpenAI API 호출은 비용이 발생하므로 최적화가 필요합니다.
- 프롬프트 엔지니어링: 올바른 결과를 얻기 위해 적절한 프롬프트 설계가 중요합니다.
- 데이터 프라이버시: API를 사용할 경우 데이터 보호 및 보안 문제를 고려해야 합니다.
5. LangChain 구성 모듈 상세
LangChain은 다양한 구성 모듈로 이루어져 있으며, 이를 통해 AI 기반 애플리케이션을 쉽게 개발할 수 있습니다. 주요 구성 모듈은 다음과 같습니다.
1) 프롬프트 (Prompt)
- LLM과의 상호작용을 위한 프롬프트 템플릿을 제공
- 동적 프롬프트 생성 지원
- 주요 클래스:
PromptTemplate
,FewShotPromptTemplate
2) 언어 모델 (LLM, Large Language Model)
- OpenAI, Hugging Face, Cohere 등 다양한 LLM을 쉽게 사용할 수 있도록 연결
- 프롬프트를 입력받아 응답을 생성하는 역할
- 주요 클래스:
OpenAI
,ChatOpenAI
,LLMChain
3) 체인 (Chains)
- 여러 개의 모듈을 결합하여 복잡한 애플리케이션을 구축
- 단순한 LLM 호출부터 여러 개의 LLM과 도구(tool)를 결합하는 방식까지 지원
- 주요 클래스:
LLMChain
,SequentialChain
,SimpleSequentialChain
4) 메모리 (Memory)
- 대화의 맥락을 저장하고 유지하는 기능
- 상태 정보를 기반으로 지속적인 상호작용 가능
- 주요 클래스:
ConversationBufferMemory
,ConversationSummaryMemory
,VectorStoreRetrieverMemory
5) 에이전트 (Agents)
- 주어진 목표를 수행하기 위해 다양한 도구를 조합하여 실행하는 자동화된 시스템
- LLM이 외부 도구와 상호작용하여 복잡한 작업을 수행하도록 함
- 주요 클래스:
AgentExecutor
,ZeroShotAgent
,ConversationalAgent
6) 도구 (Tools)
- 에이전트가 사용할 수 있는 다양한 도구 (예: Google 검색, Python 실행, 데이터베이스 질의 등)
- 자체적인 API를 제공하여 사용자 정의 도구 추가 가능
- 주요 클래스:
Tool
,SerpAPIWrapper
,PythonREPLTool
7) 벡터 스토어 (VectorStore)
- 임베딩(embedding)을 기반으로 문서를 저장 및 검색하는 기능
- OpenAI, FAISS, ChromaDB 등의 벡터 데이터베이스와 연동 가능
- 주요 클래스:
FAISS
,Chroma
,Weaviate
8) 데이터 래퍼 (Retrievers)
- 데이터베이스 또는 문서에서 정보를 검색하는 역할
- 키워드 검색, 유사도 검색 등 다양한 방식 지원
- 주요 클래스:
VectorStoreRetriever
,BM25Retriever
9) 문서 로더 (Document Loaders)
- PDF, CSV, Notion, Google Drive 등 다양한 데이터 소스에서 문서를 불러오는 역할
- 주요 클래스:
TextLoader
,PyPDFLoader
,CSVLoader
10) 콜백 (Callbacks)
- LangChain 실행 중 발생하는 이벤트를 추적하고 로깅하는 기능
- 실행 과정 모니터링 및 디버깅 용이
- 주요 클래스:
StdOutCallbackHandler
,LangChainTracer
5. 마무리
LangChain은 LLM을 활용한 AI 애플리케이션을 구축하는 강력한 도구입니다. 다양한 모듈을 조합하여 챗봇, 검색 시스템, 에이전트 기반 자동화 등을 손쉽게 구현할 수 있습니다. Python 기반으로 쉽게 확장 가능하며, OpenAI, Hugging Face, Google PaLM 등의 다양한 모델과도 연동이 가능합니다.