LLM API를 연결해서 묻고 답하는 간단한 챗봇은 누구나 쉽게 만들 수 있다.
하지만 "스스로 웹 검색을 하고, 그 내용을 요약한 뒤, 부족하면 다시 검색해 줘"
위와 같은 복잡한 일을 시키면 어떻게 될까?
문제 제기: 기존의 단순한 연결 방식(Chain)으로는 한계가 있다.
AI가 판단하고, 되돌아가고, 수정하는 '루프(Loop)'가 필요하기 때문.
그래서 이번 내용에서는 LLM 개발의 표준이 된 LangChain과,
이를 복잡한 에이전트(Agent) 시스템으로 진화시킨 LangGraph의 차이와 활용법을 알아볼 예정이다.
① 정의: LLM을 다른 데이터 소스(PDF, 웹, 데이터베이스)나 도구와 연결해주는 프레임워크.
② 비유: "정해진 순서대로 움직이는 공장 컨베이어 벨트"
③ 핵심 철학: Chain(사슬).
-> Input이 들어오면 'A → B → C' 단계를 거쳐 Output이 나온다.
코드 예시: chain = prompt | model | output_parser
LangChain의 기본 구조는 DAG(Directed Acyclic Graph).
-> 즉, 단방향을 의미.
"컨베이어 벨트"라서 한 번 지나간 단계로 되돌아오기 어려움.
AI가 스스로 "어? 결과가 이상하네? 다시 1단계로 가야겠다."라고 판단하는 Loop 구현이 복잡함.
① 정의
② 비유
① State
컨베이어 벨트는 지나간 물건을 잊어버리지만, LangGraph는 '회의록'을 공유함.
모든 단계에서 현재까지의 대화 맥락과 정보를 공유하고 업데이트함.
② Nodes & Edges
노드: 실제로 일을 하는 작업자,
엣지: 작업 순서로 바라볼 수 있다.
-> 특히 '조건부 엣지(Conditional Edge)'가 핵심이다.
조건부 엣지란?
상황에 따라 다음 행선지를 바꾸는 '자동 개찰구'
LangGraph가 기존 LangChain과 결정적으로 다른 점인 '판단'과 '반복'을 가능하게 해주는 핵심 기능.
조건부 엣지가 있어야만 루프가 만들어지기 때문에 핵심인 것이다.
비유: "노드 A의 결과가 좋으면 노드 B에게 보내고, 별로면 다시 노드 A에게 시켜. 즉, Loop함."
③ Cycles
AI가 답을 찾을 때까지 특정 행동을 반복함.
멀티 에이전트: 검색 담당 AI, 코딩 담당 AI, 비평 담당 AI가 서로 대화하며 협업하는 시스템 구축.
Human-in-the-loop: AI가 작업하다가 모르는 게 있으면, 사람에게 물어보고 승인을 기다리는 프로세스 구현.
| 구분 | LangChain | LangGraph |
|---|---|---|
| 핵심 구조 | Chain (사슬) | Graph (네트워크) |
| 방향성 | 단방향 (Start → End) | 순환 가능 (Loop, Cycle) |
| 비유 | 레시피대로 요리하기 | 간을 보며 조리법 수정하기 |
| 적합한 작업 | 단순 Q&A, 번역, 요약 | 자율 에이전트, 복잡한 워크플로우 |
| 복잡도 | 낮음 (초보자 추천) | 높음 (심화 과정) |
LangChain은 강력한 '도구 상자'
-> (개별적인 기능을 구현할 때 필수적)
LangGraph는 이 도구들을 쥐어준 '작업반장'
-> (도구를 언제, 어떻게, 반복해서 쓸지 결정하는 역할.)