본문 바로가기

AI

[LLM] LangChain

반응형

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