LangGraph — AI 흐름이 꼬이지 않으려면 그래프가 필요하다

…

RoundPrep 제13화. 플로우 차트는 그려졌는데 코드에는 if 지옥만 쌓인다. 분기·재시도·체크포인트를 한 언어로 쓰고 싶다는 이유로 그래프를 본다.

한줄 요약

LangGraph는 AI 워크플로우를 흐름도처럼 설계하는 도구다. 어느 단계에서 멈춰도 그 단계부터 재개할 수 있고, 조건에 따라 경로가 달라질 수 있다.

테제

그래프는 멋이 아니라, 무한 루프와 분기를 끊어내기 위한 구조다.

스테이크

에이전트 데모가 현장에서 같은 툴을 열 번 부르면, 그날로 신뢰는 끝이다.

전환점 — RoundPrep 메모

AgentExecutor만 쓰다 로그에 어느 분기를 탔는지 안 남아 박과장이 감사 질문을 못 넘긴다.

본문

무한 루프 사고로 탄생한 도구

2023년 초, LangChain을 쓰던 개발팀들 사이에서 비슷한 불만이 터져나왔다.

“에이전트가 같은 툴을 계속 반복 호출하다가 멈추지 않는다.”

당시 LangChain의 AgentExecutor는 에이전트가 “다음 뭘 할지”를 매번 LLM에게 물어보는 방식이었다. 문제는 LLM이 “아직 정보가 부족하다”고 판단해서 같은 검색을 반복 실행하거나, 루프 탈출 조건 없이 계속 돌아가는 케이스가 잦았다는 것이다. 로그를 보지 않으면 에이전트가 지금 뭘 하고 있는지도 알 수 없었다.

LangChain 팀은 이 문제를 해결하기 위해 아예 새로운 레이어를 만들었다. 에이전트의 흐름을 미리 명확하게 그려두는 것. 이것이 2024년 초 공개된 LangGraph다.


수술실 체크리스트와 같은 구조

외과 의사라면 수술 전 체크리스트가 익숙할 것이다. WHO 수술 안전 체크리스트는 세 구간으로 나뉜다:

  1. Sign In: 마취 전 — 환자 확인, 알레르기 확인, 동의서 확인
  2. Time Out: 절개 전 — 팀 전원 소개, 예상 소요 시간, 항생제 투여 여부
  3. Sign Out: 봉합 전 — 기구 카운트, 검체 라벨 확인, 주요 우려사항 공유

각 단계는 순서가 있고, 이전 단계가 완료돼야 다음 단계로 넘어간다. 중간에 이상이 있으면 분기가 생긴다(수술 취소, 추가 확인 등).

LangGraph는 AI 워크플로우를 이와 동일한 방식으로 설계한다.

  • 노드(Node) = 체크리스트의 각 항목. AI 호출 하나 또는 도구 실행 하나.
  • 엣지(Edge) = 항목 간 연결. 단순 연결이거나 조건부 분기.
  • 상태(State) = 수술 기록지. 모든 단계에서 공유되며 업데이트된다.

가장 중요한 기능: 체크포인트

수술 도중 환자 상태가 급변해서 잠시 중단했다가 재개한다면, 처음 단계부터 다시 시작하지 않는다. 중단된 그 단계부터 이어간다.

LangGraph의 체크포인트(Checkpoint) 가 이 역할이다.

AI 작업이 10단계짜리인데 7단계에서 외부 API 오류가 났다면, 오류를 수정한 뒤 7단계부터 재시도한다. 1단계부터 다시 실행할 필요가 없다.

의료 현장에서 더 중요한 케이스가 있다. 사람의 승인을 기다리는 경우다.

예를 들어 AI가 오전 7시에 회진 요약을 준비해뒀는데, 주치의가 10시에 검토하고 “추가 검사가 필요하다”고 응답했다면, AI는 그 응답을 받아 다음 단계(추가 검사 오더 제안)를 실행한다. 3시간 동안 대기하는 것이 자연스럽다. 체크포인트가 없으면 이 대기가 불가능하다.


조건부 흐름: 진단에 따라 경로가 달라진다

일반 파이프라인은 경로가 고정이다. A → B → C.

그런데 실제 임상은 다르다. 혈압이 정상이면 퇴원 절차로 가고, 이상이면 추가 모니터링으로 분기한다.

LangGraph는 조건부 엣지(Conditional Edge) 로 이걸 표현한다.

[활력징후 분석]
        ↓
   {결과 분류}
    ├─ 정상 → [퇴원 체크리스트]
    ├─ 경계 → [6시간 후 재측정] ──→ 다시 [활력징후 분석]으로 루프
    └─ 위험 → [응급 프로토콜]

이 분기 로직은 코드로 짜는 게 아니라 그래프에 그리는 것이다. 나중에 흐름을 수정할 때도 그래프를 고치면 된다. 코드 전체를 뒤질 필요가 없다.


LangGraph가 필요한 순간과 필요 없는 순간

LangGraph가 힘을 발휘하는 경우:

  • 흐름에 분기가 있다 (조건에 따라 다른 경로)
  • 루프가 있다 (특정 조건이 될 때까지 반복)
  • 사람의 개입 대기가 있다 (Human-in-the-Loop)
  • 긴 작업을 중단했다가 재개해야 한다

반대로, 단순한 순차 작업이라면 오히려 복잡성만 늘어난다. “환자 메모 요약해줘” 같은 단일 AI 호출은 LangGraph 없이 충분하다.


LangGraph vs 기존 방식

항목기존 AgentExecutorLangGraph
흐름 제어LLM이 매번 결정설계자가 그래프로 정의
루프 방지취약명시적 종료 조건
중간 재개불가체크포인트로 가능
디버깅어려움각 노드별 상태 추적
사람 개입구현 어려움기본 기능으로 지원

이 글에서 나온 “사람 개입 대기” 기능을 실전에서 어떻게 설계하는지 → Human-in-the-Loop

역할 기반으로 AI 팀을 꾸리는 다른 접근법 → CrewAI 입문


다음 회의 한 줄

혜준: “RoundPrep v0.2는 노드와 엣지가 있는 그림부터 커밋합니다.”

다음 화

그래프 안에서 에이전트가 서로 말로 협상하게 두려면 — AutoGen 입문

편집 초안(cu2604021138). 프레임워크·API·임상 규정은 발행일 이후 바뀔 수 있으니 공식 문서와 병원 정책을 기준으로 확인한다.


더 알고 싶다면

🔗 관련 글

← 오케스트레이션 시리즈 전체 보기