Skip to content
해설: LangChain이란 무엇인가? LangChain 체인은 어떻게 쓰나?

LangChain 체인의 복잡성: 현대 AI 워크플로의 힘을 끌어내기

Updated on

LangChain은 지금도 빠르게 진화하고 있으며, 그중에서도 체인(Chain) 은 가장 핵심적인 개념 중 하나로 남아 있습니다. 이 업데이트된 가이드에서는 2025년 시점에서 LangChain 체인이 실제로 무엇을 의미하는지, 새로운 LCEL (LangChain Expression Language) 을 사용해 어떻게 동작하는지, 그리고 어떻게 신뢰할 수 있는 다단계 AI 애플리케이션을 만드는 데 도움을 주는지 살펴봅니다.

이 글에서는 예제들을 모두 최신 LangChain 표준에 맞게 수정하여, LLMChain 같은 더 이상 권장되지 않는 클래스 대신 Runnables, PromptTemplate, ChatModels, 그리고 순차 파이프라인을 사용합니다.


LangChain이란 무엇인가? (2025 개요)

LangChain은 다음과 같은 요소들을 활용해 AI 애플리케이션을 만들 수 있게 도와주는 강력한 Python/JavaScript 프레임워크입니다:

  • Large language models (LLMs)
  • Prompt templates
  • Memory
  • Tools & agents
  • Retrieval (RAG)
  • Workflow graphs (LangGraph)

LangChain의 가장 상징적인 개념은 바로 체인(Chain) 입니다:

프롬프트, 모델, 도구, 변환, 출력 파서들을 단계별로 통과시키는 재사용 가능하고 합성 가능한 파이프라인.

📘 기초 입문이 필요하다면? LangChain 입문 글을 참고하세요.


LangChain 체인이란?

2023년에는 체인을 주로 LLMChain 과 사용자 정의 Python 클래스로 만들었습니다.
2025년에는 권장 방식이 LCEL로 바뀌었고, 함수형 파이프라인 문법을 사용합니다:

chain = prompt | model | output_parser

체인(Chain) 은 단순히 이렇게 이해할 수 있습니다:

  • 여러 단계의 시퀀스
  • 하나의 호출 가능한 단위로 연결된 구조
  • 이전 단계의 출력이 다음 단계의 입력 이 되는 구조

LangChain은 이제 다음과 같은 체인들을 제공합니다:

  • Simple Chains (단일 모델 + 프롬프트)
  • Sequential Chains (여러 단계가 순차적으로 연결된 체인)
  • Parallel Chains (분기형 워크플로)
  • Agents (도구를 동적으로 선택하는 체인)

이제 최신 예제들을 통해 살펴보겠습니다.


기본 체인 (2025 버전)

기본 체인은 하나의 프롬프트로 하나의 모델을 호출합니다.

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
 
prompt = PromptTemplate.from_template(
    "Describe a perfect day in {city}."
)
 
model = ChatOpenAI(model="gpt-4o-mini")
 
chain = prompt | model
 
chain.invoke({"city": "Paris"})

내부에서 무슨 일이 일어나나?

  1. PromptTemplate이 "Describe a perfect day in Paris." 로 포맷합니다.
  2. LLM이 해당 설명을 생성합니다.
  3. 설정에 따라 출력이 ChatMessage 또는 문자열로 반환됩니다.

이것이 현대 LangChain에서 가능한 가장 단순한 형태의 체인입니다.


고급 체인: 다단계 파이프라인

다단계 체인은 여러 작업을 결합합니다.

예시: LCEL을 사용한
요약 → 번역 파이프라인:

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
 
summarize_prompt = PromptTemplate.from_template(
    "Summarize this text:\n\n{text}"
)
 
translate_prompt = PromptTemplate.from_template(
    "Translate this into Spanish:\n\n{summary}"
)
 
model = ChatOpenAI(model="gpt-4o-mini")
 
summarize_chain = summarize_prompt | model
translate_chain = translate_prompt | model
 
full_chain = summarize_chain | (lambda x: {"summary": x.content}) | translate_chain
 
full_chain.invoke({"text": "Climate change is causing rapid ocean warming..."})

왜 중요한가

이 예제는 최신 LangChain 모범 사례를 잘 보여줍니다:

  • 기존 체인 클래스 대신 Runnables 사용
  • | 연산자를 통한 함수형 합성
  • Python 함수를 이용한 중간 데이터 매핑

LLM 없이 구성하는 체인 (Transform + Clean 파이프라인)

모든 체인에 LLM이 필요하지는 않습니다. 전처리 또는 후처리용 파이프라인도 만들 수 있습니다.

예시: 공백 제거 → 소문자 변환 → LLM에 전달:

def cleanup(text):
    return text.strip().lower()
 
chain = cleanup | model
chain("   WHAT is the    WEATHER   LIKE?   ")

입력과 출력을 직렬화할 수 있는 데이터로 주고받기만 하면, 어떤 Python 함수든 체인에 포함시킬 수 있습니다.


Sequential Chains (SimpleSequentialChain 대체)

SimpleSequentialChainSequentialChain 은 더 이상 권장되지 않습니다.
LCEL에서의 대응은 아주 간단합니다:

chain = step1 | step2 | step3

예시: 프롬프트 정리 → 다시 쓰기 → 질문에 답하기

from langchain_openai import ChatOpenAI
 
clean = lambda x: x.strip()
rewrite_prompt = PromptTemplate.from_template(
    "Rewrite this more clearly: {text}"
)
answer_prompt = PromptTemplate.from_template(
    "Answer this question: {question}"
)
 
model = ChatOpenAI(model="gpt-4o-mini")
 
rewrite_chain = rewrite_prompt | model
answer_chain = answer_prompt | model
 
chain = clean | (lambda x: {"text": x}) | rewrite_chain | (lambda x: {"question": x.content}) | answer_chain
 
chain.invoke("   What is LangChain used for?  ")

이 패턴이 SimpleSequentialChain 을 대체하는 현대적인 방식입니다.


LangChain에서 에이전트의 역할 (2025 버전)

에이전트는 LLM이 도구를 동적으로 선택해서 사용하는 기능을 제공합니다:

  • 검색 엔진
  • 코드 실행
  • 계산기
  • 다양한 API
  • Retrievers
  • 커스텀 함수

예시 (최신 문법):

from langchain.agents import AgentExecutor, load_tools, create_react_agent
from langchain_openai import ChatOpenAI
 
llm = ChatOpenAI(model="gpt-4o-mini")
tools = load_tools(["llm-math"], llm=llm)
 
agent = create_react_agent(llm, tools)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
 
executor.invoke({"input": "If I'm half my dad's age and he'll be 60 next year, how old am I?"})

에이전트는 다음과 같은 상황에 가장 적합합니다:

  • 추론이 필요할 때
  • 적절한 도구를 골라야 할 때
  • 여러 번의 의사결정 단계가 필요할 때

반대로, 단계가 고정된 작업에는 단순 체인이 더 깔끔합니다.


실전 예시: 영화 추천 워크플로 (업데이트 버전)

기존의 “LLM 두 개를 연결한 체인” 예제를 LCEL로 현대화해 보겠습니다.

1단계 — 사용자에게 장르 질문하기

from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
 
ask_prompt = PromptTemplate.from_template(
    "Ask the user about their favorite movie genres."
)
 
ask_chain = ask_prompt | ChatOpenAI(model="gpt-4o-mini")

2단계 — 영화 추천하기

recommend_prompt = PromptTemplate.from_template(
    "Based on these genres: {genres}, recommend 5 movies."
)
 
recommend_chain = recommend_prompt | ChatOpenAI(model="gpt-4o-mini")

두 체인 결합하기

chain = ask_chain | (lambda x: {"genres": x.content}) | recommend_chain
chain.invoke({})

메모리 추가하기 (최신 방식)

from langchain.memory import ConversationBufferMemory
 
memory = ConversationBufferMemory(return_messages=True)
 
# pipelines can load memory before passing to next step

마무리

현대 LangChain(2024–2025)은 LCEL 파이프라인, Runnables, 에이전트를 통해 확장 가능한 AI 워크플로를 그 어느 때보다 쉽게 구축할 수 있게 합니다. 여러분이:

  • 텍스트를 전처리하든
  • 다단계 워크플로를 만들든
  • 다양한 도구를 통합하든
  • 동적인 에이전트를 설계하든

LangChain은 이 모든 것을 깔끔하고 신뢰성 있게 연결할 수 있는 빌딩 블록을 제공합니다.

가볍게 실험해 보세요 — 단순한 체인도 금세 강력한 AI 애플리케이션으로 진화할 수 있습니다.


FAQ (업데이트)

  1. LangChain이란?
    LangChain은 프롬프트, 모델, 도구, 메모리, 워크플로 그래프를 사용해 AI 애플리케이션을 구축하는 프레임워크입니다.

  2. SimpleSequentialChain은 무엇으로 대체되었나요?
    | 연산자를 사용하는 LCEL 파이프라인이 순차 처리 방식의 대체제입니다.

  3. 메모리는 어떻게 추가하나요?
    ConversationBufferMemory, SummaryMemory 또는 직접 구현한 메모리를 체인에 주입해서 사용할 수 있습니다.

  4. 에이전트는 여전히 유용한가요?
    네. 도구를 동적으로 선택해야 하는 작업에는 여전히 적합합니다. 단계가 고정된 경우에는 체인이 더 단순하고 명확합니다.

  5. 더 배우려면 어디를 참고해야 하나요?
    LangChain 공식 문서나 LangGraph를 참고해 워크플로 기반 에이전트 오케스트레이션을 살펴보세요.

📚