3부가 시작됩니다. LangGraph는 LangChain 생태계의 일부로, LLM 기반 에이전트들의 상태를 관리하고 복잡한 워크플로를 구현하는 프레임워크입니다. 상태 머신(state machine) 개념을 기반으로 하여, 각 에이전트의 상태 변화와 에이전트 간의 상호작용을 체계적으로 관리할 수 있게 해줍니다.
LangGraph의 세 요소
| 요소 | 비유 | 하는 일 |
|---|---|---|
| 상태(state) | 에이전트의 ‘기억’이자 ‘작업 공간’ | 사람이 대화하면서 이전 내용을 기억하고 현재 진행 중인 작업을 파악하듯, 문의 내용·대화 내용·확인된 고객 정보·현재 처리 단계를 담는다 |
| 노드(node) | 요리 레시피의 단계 | ‘재료 준비하기’, ‘썰기’, ‘볶기’처럼 ‘정보 검색하기’, ‘답변 생성하기’, ‘요약하기’ 등 하나의 명확한 작업을 담당한다 |
| 에지(edge) | 내비게이션의 교차로 판단 | 노드 사이의 ‘길’ 또는 ‘의사결정 규칙’. 질문이 명확하지 않으면 ‘추가 정보 요청’ 노드로, 명확하면 ‘답변 생성’ 노드로 보낸다 |
세 요소는 하나의 유기체처럼 긴밀하게 협력합니다.
상태는 모든 노드가 공유하는 ‘공통의 기억 공간’ 입니다. 각 노드는 이 공간에서 필요한 정보를 읽고, 자신의 작업 결과를 기록합니다. 마치 여러 요리사가 하나의 요리를 완성하려고 각자의 역할을 수행하는 것과 비슷합니다. 에지는 상태의 내용을 검토해 다음에 어떤 노드가 작업을 수행할지 결정합니다. 이는 마치 프로젝트 매니저가 작업의 진행 상황을 보고 다음 단계를 결정하는 것과 유사합니다.
다른 에이전트 프레임워크
LangGraph 말고도 선택지가 있습니다.
| 프레임워크 | 개발 | 특징 |
|---|---|---|
| 마이크로소프트 시맨틱 커널 | 마이크로소프트 | AI 오케스트레이션 프레임워크. 파이썬을 제공하긴 하지만 닷넷(.NET) 환경에 최적화. 플러그인 시스템으로 확장성 제공, 멀티모달 데이터 처리 가능 |
| Haystack | deepset | 검색 중심의 프레임워크. 파이프라인 기반 워크플로, 검색 관련 다양한 기능, 모듈식 아키텍처 |
| LlamaIndex | — | RAG 애플리케이션 구축에 특화. 데이터 인덱싱과 검색에 강점, Query Engine을 이용한 효율적인 정보 검색, 다양한 데이터 커넥터 |
그래서 LangGraph의 자리는 어디인가.
LangGraph는 이러한 프레임워크들과 비교했을 때, 상태 관리와 에이전트 간 상호작용에 더 중점을 둡니다. 특히 LangChain 생태계와의 긴밀한 통합은 LangGraph만의 큰 장점입니다. LlamaIndex나 Haystack이 데이터 처리와 검색에 중점을 둔다면, LangGraph는 에이전트의 행동과 상태 관리에 초점을 맞추고 있습니다.
LangChain과 무엇이 다른가
LangChain과 LangGraph는 같은 개발사의 제품이지만 목적과 특징이 다릅니다.
- LangChain: 체인과 시퀀스로 선형적인 워크플로를 구성한다. 각 단계가 순차적으로 실행되는 파이프라인 방식이라 명확하고 예측 가능한 실행 흐름을 만든다.
- LangGraph: 상태 기반 시스템으로 복잡한 에이전트의 행동을 관리한다. 그래프 구조로 비선형적인 워크플로를 구성하고, 현재 상태에 따라 다음 단계가 동적으로 결정된다.
① 워크플로 구성
LangChain의 워크플로는 공장의 조립 라인처럼 A → B → C 형태로 실행됩니다.
| LangChain 체인 | LangGraph | |
|---|---|---|
| 실행 | 순차적 실행 — 각 단계가 이전 단계의 출력을 입력으로 받는다. 명확한 시작점과 끝점이 있고, 흐름을 예측하기 쉽다 | 비선형적 실행 — 현재 상태에 따라 다음 단계가 동적으로 결정된다. 여러 개의 경로가 동시에 존재할 수 있고, 이전 단계로 돌아가거나 특정 단계를 반복할 수 있다 |
| 분기 | 제한된 분기 처리 — 조건부 분기는 가능하지만 복잡한 분기 로직은 어렵다. 한 번 분기된 후 다시 합쳐지는 구조 구현이 제한적이고, 순환이 필요하면 새로운 체인을 만들어야 한다 | 복잡한 의사결정 — 조건부 라우팅으로 세밀한 제어, 여러 조건을 조합한 분기, 동적인 우선순위 기반 태스크 선택 |
책은 이 차이를 이렇게 정리합니다. LangChain의 선형적 워크플로는 문서 요약, 번역, 감정 분석처럼 간단하거나 절차가 명확한 태스크에 효과적입니다. 반면 LangGraph의 순환적 실행 구조는 실제 인간의 의사결정 과정과 유사합니다.
② 상태 관리 — 이 장의 핵심
LangChain은 메모리 컴포넌트로 상태를 관리합니다. 주로 대화 이력이나 중간 결과물을 저장하는 데 쓰입니다.
| 메모리 | 한계 |
|---|---|
| 대화 메모리 | 이전 대화 내용을 저장하지만 단순 리스트 형태로만 관리한다 |
| 버퍼 메모리 | 최근 N개 메시지만 유지하며 오래된 정보는 자동 삭제된다 |
| 요약 메모리 | 대화를 요약해 저장하지만 세부 정보가 손실될 수 있다 |
더 근본적인 제약은 상태 접근의 제한성입니다. 체인 내부에서만 상태에 접근할 수 있고, 외부에서 상태를 관찰하거나 수정하기 어려우며, 상태 변화의 이력 추적이 제한적입니다.
LangGraph는 명시적이고 중앙화된 상태 관리 시스템을 제공합니다.
- 상태의 구조화: 모든 상태 정보가 중앙화된 객체에 저장되고, 타입과 구조를 명확하게 정의할 수 있으며, 복잡한 중첩 구조도 쉽게 관리한다.
- 상태 변화의 추적: 모든 상태 변화가 기록되어 디버깅이 쉽고, 각 노드에서 변화의 원인을 추적할 수 있으며, 상태 변화의 히스토리로 에이전트의 의사결정 과정을 분석할 수 있다.
차이가 드러나는 두 시나리오가 구체적입니다.
| 상황 | LangChain | LangGraph |
|---|---|---|
| 검색 및 요약 작업 | 검색 결과를 임시 변수나 메모리에 저장해 다음 체인으로 전달한다. 중간 과정의 데이터는 대부분 휘발성이라 문제가 생기면 디버깅이 어렵다 | 검색 시작, 검색 결과 저장, 요약 시작, 요약 완료 등 모든 과정의 상태가 명시적으로 저장·추적된다 |
| 오류 처리 | 오류가 났을 때 이전 상태로 돌아가기 어렵고, 원인을 파악하려면 별도의 로깅이 필요하다 | 오류 발생 시점의 전체 상태가 보존되어 무엇이 잘못되었는지 쉽게 파악할 수 있고, 필요하면 이전 상태로 롤백도 가능하다 |
책은 앞으로의 발전 방향도 셋 꼽습니다. 분산 상태 관리(여러 에이전트가 협업할 때 상태를 동기화·공유), 상태 지속성(장기 실행되는 에이전트의 상태를 데이터베이스에 저장·복구), 상태 분석 도구입니다.
이러한 상태 관리의 차이는 단순한 기술적 차이를 넘어, 전체 시스템의 설계와 운영에 큰 영향을 미칩니다.
③ 언제 무엇을 쓰나
| LangChain이 적합 | LangGraph가 적합 |
|---|---|
| 단순한 질의응답 시스템 | 복잡한 의사결정이 필요한 에이전트 |
| 문서 요약 | 여러 에이전트 간의 상호작용 |
| 정해진 순서대로 처리되는 작업 | 상태에 따라 다른 행동을 해야 하는 상황 |
| 빠른 프로토타입 개발 | — |
고객 서비스 에이전트를 만든다고 하면 차이가 이렇게 납니다.
LangChain 접근 방식
- ‘질문 접수 → 의도 파악 → 답변 생성 → 응답’ 순으로 진행한다.
- 추가 질문이 있으면 새로운 체인을 시작한다.
LangGraph 접근 방식
- 질문의 성격에 따라 다른 처리 경로를 선택한다.
- 필요하면 추가 정보를 요청한 뒤 이전 단계로 돌아간다.
- 여러 주제를 동시에 처리할 수 있다.
둘 중 하나를 고르는 문제가 아니다
이 장이 끝나는 방식이 중요합니다.
두 프레임워크는 상호 배타적이지 않습니다. LangChain의 컴포넌트를 LangGraph의 노드로 사용할 수 있어 두 프레임워크의 장점을 모두 활용할 수 있습니다.
즉 2부에서 만든 것들이 버려지지 않습니다. retriever, 프롬프트 템플릿, LCEL로 엮은 체인이 모두 LangGraph 그래프 안의 노드가 될 수 있습니다.
특히 복잡한 에이전트 시스템을 구축할 때는 LangChain의 기본 컴포넌트들을 LangGraph의 구조 안에서 활용하는 방식이 효과적일 수 있습니다.
정리
- LangGraph는 상태 머신이다. 상태(공통 기억 공간)를 노드들이 읽고 쓰며, 에지가 상태를 보고 다음 노드를 정한다.
- 경쟁 프레임워크와의 차이는 관심사다. LlamaIndex·Haystack이 데이터와 검색이라면 LangGraph는 에이전트의 행동과 상태다.
- LangChain은 선형, LangGraph는 비선형이다. 순환·복귀·동시 경로가 필요하면 체인으로는 부족하다.
- 상태 관리가 진짜 분기점이다. LangChain의 메모리는 휘발성이고 외부에서 들여다보기 어렵지만, LangGraph는 상태가 명시적이라 추적·디버깅·롤백이 된다.
- 빠른 프로토타입은 LangChain, 복잡한 의사결정은 LangGraph. 그리고 둘은 겹쳐 쓸 수 있다 — LangChain 컴포넌트가 곧 LangGraph의 노드다.