LangChain vs LangGraph, 체인과 그래프의 공존법
"프롬프트만 잔뜩 붙여 놓았는데, 어디서 터지는지 모르겠더라고요." 라는 말이 돌 정도로 복잡도가 빠르게 높아지고 있습니다.
1. 두 프레임워크의 기본 철학
- LangChain: 체인/에이전트/도구 호출을 블록처럼 조립하는 SDK. PromptTemplate, LLM, Tool, Memory를 순차적으로 엮는 구조가 익숙합니다.
- LangGraph: LangChain 위에서 동작하는 상태 머신/그래프 엔진. 노드와 엣지를 정의해 분기·루프가 있는 복잡한 워크플로우를 시각화하고 제어합니다.
- 핵심 차이는 제어 흐름입니다. LangChain만으로도 단순 파이프라인은 충분하지만, 다중 에이전트나 재시도/검증 루프가 필요하면 LangGraph가 더 깔끔합니다.
2. 호환성과 함께 쓰는 방법
- LangGraph는 LangChain 0.1+ API를 그대로 import합니다.
from langchain_openai import ChatOpenAI등의 구성요소를 그래프 노드에서 재사용할 수 있습니다. - 기존 LangChain 체인을 그래프 노드로 감싸면 됩니다. 예)
builder.add_node("draft", draft_chain). - 상태는
StateGraph에서 Dict 기반으로 관리하며, LangChain Memory 객체를 병행해 대화 맥락을 유지할 수 있습니다. - 실행은
graph.compile()후.ainvoke()/.stream()을 호출하는 방식으로, LangChain Runnable과 인터페이스가 맞춰져 있습니다.
3. 언제 어떤 도구를 써야 할까요?
| 시나리오 | LangChain 단독 | LangGraph 병행 |
|---|---|---|
| FAQ 챗봇, 순차 태스크 | ✅ 체인만으로 구현 간단 | △ 필요 시 분기만 추가 |
| 멀티 에이전트 협업 | △ AgentExecutor로 구현 가능하나 복잡 | ✅ 각 에이전트를 노드로 분리, 상태 공유 |
| 평가/재시도 루프 | △ Callback으로 처리해야 함 | ✅ 재시도/검증 노드를 명시 |
| 시각화·디버깅 | △ 텍스트 로그 중심 | ✅ graphviz UI, LangSmith 연동 |
| 운영 제약 (서버리스) | ✅ 단일 함수로 배포 용이 | △ 그래프 런타임을 함께 묶어야 함 |
4. 현업에서 본 패턴
- RAG 품질 점검 루프: LangChain으로 Retriever+LLM 체인을 만들고, LangGraph에서
draft -> critique -> revise노드를 구성해 BLEU/ROUGE 점수를 기준으로 재시도를 제어합니다. - 다중 콘텐츠 파이프라인: 마케팅 자료, FAQ, 이메일을 한 번에 생성할 때 LangGraph 흐름으로 콘텍스트 브랜치를 나누고, 각 노드에 LangChain 체인을 연결해 관리합니다.
- 안정성 확보: LangGraph
tools노드에 guardrail LLM을 넣어 금칙어 필터링을 수행하고, 실패 시 fallback 체인을 호출합니다.
5. 도입 전 체크리스트
- 그래프 복잡도: 노드가 5개 미만이면 굳이 LangGraph를 쓰지 않고 LangChain Callback만으로도 충분합니다.
- 관찰성 도구: LangSmith, Langfuse 같은 트레이스 수집기를 먼저 붙여야 그래프 디버깅이 수월합니다.
- 상태 스키마: 그래프 상태 Dict에 어떤 키가 들어갈지 스키마를 명시해야 팀 내 공유가 쉽습니다.
- 테스트 전략: LangChain Runnable 테스트에 추가로, LangGraph 노드 간 통합 시나리오 테스트(PyTest + snapshot)를 마련합니다.
6. 추천 설계 흐름
- 문제를 순차 체인으로 먼저 풀어 본 뒤, 복잡도를 유발하는 분기/루프를 목록화합니다.
- 해당 분기에만 LangGraph를 도입해 Proof-of-Concept을 만들어 보고, 전체 파이프라인으로 확장합니다.
- 배포 환경(서버리스/컨테이너)에 맞춰 LangChain, LangGraph 버전을 고정하고,
requirements.txt에 명시합니다.
LangChain과 LangGraph는 경쟁 관계라기보다, 체인 기반 개발을 그래프적 사고로 확장해 주는 짝꿍입니다. 팀이 필요로 하는 제어 수준과 운영 복잡도를 먼저 가늠해 본다면 두 도구 모두를 현명하게 묶어 쓸 수 있습니다.