1. LangChain 이란?
LnagChain 은 LLM agent 나 애플리케이션 개발을 편리하게 해주는 프레임워크이다.
OpenAI, Anthropic, Google 등 다양한 LLM provider 와 연동할 수 있는 인터페이스를 제공하여 agent 를 개발하는데 사용할 수 있다. 이 외에도 HTTP API 호출, 데이터베이스 연동 등 다양한 tool 을 호출하여 사용할 수 있고, vector store, retriever 등을 사용하여 RAG 도 구현할 수 있다.
2. LangChain 장점
LangChain 을 사용하는 이유는 LLM 을 사용하는 agent 나 application 의 개발을 위한 다양한 기능들을 제공해주기 때문이다.
만약 LangChain 을 사용하지 않으면 OpenAI 나 Gemini 와 같이 각 모델을 사용하는 SDK 를 사용하여 agent 를 구현해야 한다. 이 과정에서 데이터베이스나 tool 호출, LLM 파이프라인을 구성하는 복잡한 로직 등을 직접 구현해야 한다.
LangChain 을 사용하게 되면 여러 SDK 를 사용할 필요없이 LangChain 에서 제공하는 인터페이스를 통해 여러 LLM 모델을 사용할 수 있다. 또한 agent 개발을 위해 필요한 여러 로직들을 prompt, tool, model 등의 구조로 추상화해두어 간편하게 구현할 수 있다.
이 외에도 같은 생태계의 LangGraph, LangSmith 등의 프레임워크를 함께 사용하여 agent orchestration, observability 등을 구현할 수 있다.
3. LangChain 예제
LangChain 을 사용한 간단한 agent 를 구현하려 한다. LLM 모델로는 OpenAI 를 사용하고, langchain 에서 제공해주는 in-memory vector store 를 retriever 로 사용하여 RAG 를 구현하여 사용자의 요청에 응답하도록 구현해보겠다.
- 패키지 설치
먼저 필요한 패키지들을 설치한다. 환경변수를 불러오기 위한 dotenv 와 예제에서 사용할 langchain 패키지들을 설치했다. langchain 의 메인 패키지인 langchain 과 추상화 인터페이스들을 제공하는 langchain-core, 그리고 OpenAI 와의 연동을 위한 langchain-openai 를 사용한다.
pip install dotenv langchain langchain-core langchain-openai
- vector store 초기화
먼저 vector store 를 생성하고 예시 문서들을 저장한다. langchain 에서 제공하는 InMemoryVectorStore 를 사용했고, OpenAIEmbeddings 를 통해 vector store 의 임베딩 함수를 지정해주었다.
from dotenv import load_dotenv
from langchain_core.documents import Document
from langchain_core.vectorstores import InMemoryVectorStore
from langchain_openai import OpenAIEmbeddings
load_dotenv()
EMBEDDING_MODEL = "text-embedding-3-small"
COLLECTION_NAME = "langchain-collection"
documents = [
"Agents combine language models with tools to create systems that can reason about tasks, decide which tools to use, and iteratively work towards solutions.",
"An LLM Agent runs tools in a loop to achieve a goal.",
"An agent runs until a stop condition is met - i.e., when the model emits a final output or an iteration limit is reached."
]
documents = [Document(page_content=doc) for doc in documents]
embeddings = OpenAIEmbeddings(model=EMBEDDING_MODEL)
vector_store = InMemoryVectorStore(embedding=embeddings)
vector_store.add_documents(documents=documents)
- LLM chain
langchain 의 LLM chain 은 사용자 입력 기반으로 LLM 에 질의할 프롬프트와 LLM 을 호출할 model 영역으로 구분된다.
예제에서는 vector store 와 format_docs 함수를 이용하여 RAG 를 구현했다. 그리고 RAG 의 결과와 쿼리를 프롬프트 템플릿에 입력하여 LLM 호출에 사용할 프롬프트를 구성하도록 했따.
LLM Provider 로는 OpenAI 를 사용하는데, langchain 은 여러 provider 에 대한 SDK 를 제공한다. 이 예제에서는 langchain_openai 패키지를 사용하여 OpenAI API 와 연동하여 개발했다.
그렇게 구현한 각 영역을 LCEL (LangChain Expression Language) 로 chain 을 만들고, 완성된 chain 의 invoke 함수를 통해 쿼리에 대한 답을 생성한다.
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
LLM_MODEL = "gpt-5"
retriever = vector_store.as_retriever()
def format_docs(docs):
return "\n".join(doc.page_content for doc in docs)
prompt = ChatPromptTemplate.from_template("""
Context:
{context}
Question:
{question}
Answer:
""")
model = ChatOpenAI(model=LLM_MODEL)
rag_chain = (
{'context': retriever | format_docs, 'question': RunnablePassthrough()}
| prompt
| model
| StrOutputParser()
)
query = "AI Agent 에 대해서 설명해줘."
response = rag_chain.invoke(input=query)
print(response)
이 글을 작성하면서 가장 어려웠던 점은 langchain 이 너무 빠르게 진화하다 보니 예전에 알고있던 정보들, 특히 langchain 인터페이스에 대한 부분들이 너무 많이 다르다는 점이다.
현재 최신버전은 1.2 버전으로 작년 말 1.0 버전 릴리즈를 통해 agent 개념과 production 에서 사용할 수 있는 안정적인 기능들이 배포되었다. 다음에는 해당 버전을 기준으로 langchain 의 기능들과 변천사를 정리해봐야겠다.
[Reference]
- https://docs.langchain.com/oss/python/langchain/install
Install LangChain - Docs by LangChain
Join us May 13th & May 14th at Interrupt, the Agent Conference by LangChain. Buy tickets >
docs.langchain.com
- https://docs.langchain.com/oss/python/langchain/quickstart
Quickstart - Docs by LangChain
Join us May 13th & May 14th at Interrupt, the Agent Conference by LangChain. Buy tickets >
docs.langchain.com
'AI' 카테고리의 다른 글
| [LLM] RAG (Retrieval-Augmented Generation) (0) | 2026.03.25 |
|---|---|
| [LLM] Vector, Embedding (0) | 2026.03.21 |
| [LLM] OpenAI SDK Quickstart (0) | 2026.03.09 |
| [LLM] LLM Provider 와 OpenAI API (0) | 2026.02.11 |