brunch

LangGraph로 복잡한 AI 워크플로 구현하기

by 위키북스


LangGraph는 복잡한 AI 워크플로를 그래프 구조로 설계하고 구현할 수 있게 해주는 도구로, 기존 순차적 처리 방식의 한계를 뛰어넘을 수 있습니다. 이 글에서는 『랭체인과 랭그래프로 구현하는 RAG·AI 에이전트 실전 입문』의 내용을 바탕으로 LangGraph의 핵심 개념과 특징을 소개합니다.






기존 LLM 애플리케이션 개발의 한계점

많은 개발자들이 LangChain으로 LLM 애플리케이션을 만들면서 다음과 같은 어려움을 겪고 있습니다.


복잡한 조건 분기 처리의 어려움: "답변이 마음에 들지 않으면 다시 처리"와 같은 루프 구조를 구현하기 복잡합니다.

시각적 이해의 한계: 코드만으로는 전체 워크플로를 파악하기 어렵습니다.

상태 관리의 복잡성: 여러 단계를 거치는 처리에서 중간 상태를 관리하기 까다롭습니다.

디버깅과 테스트의 어려움: 어느 단계에서 문제가 발생했는지 추적하기 힘듭니다.



물론 LangChain에서도 RouterRunnable이나 RunnableParallel 등을 통해 분기와 병렬 처리를 구현할 수 있지만, 복잡도가 커질수록 가독성이 떨어지는 문제가 있습니다. 이러한 표현 방식을 사용하면 복잡한 LLM 애플리케이션의 작동을 시각적으로 이해하기 쉬운 형태로 설계하고 구현할 수 있습니다.





LangGraph란 무엇인가?

LangGraph는 LLM을 활용한 복잡한 워크플로를 개발하기 위한 파이썬 라이브러리입니다. 가장 큰 특징은 워크플로를 그래프 구조로 모델링한다는 점입니다.


우리가 일상적으로 접하는 조직도나 지하철 노선도를 떠올려보세요. 이런 그래프는 노드(정점)와 에지(간선)로 구성되어 있죠. LangGraph도 마찬가지로 방향성을 가진 유향(Directed) 그래프를 사용하여 각 노드가 특정 처리를 담당하고, 에지가 처리 간의 연결 관계를 표현합니다.


ChatGPT_Image_2025년_7월_10일_오전_09_27_06.png

예를 들어, 사용자의 질문에 답변하는 AI 어시스턴트를 만든다면 다음과 같은 단계가 필요합니다.


사용자의 질문을 이해한다

필요한 정보를 검색한다

검색 결과를 분석한다

답변을 생성한다

답변의 품질을 체크한다

필요에 따라 답변을 수정한다



이런 과정을 그래프로 표현하면 시각적으로 이해하기 쉽고, '답변의 품질이 충분하지 않은 경우 다시 정보를 검색한다'와 같은 조건 분기나 루프 구조도 자연스럽게 구현할 수 있습니다.





LangGraph의 핵심 컴포넌트

1. 스테이트(State): 그래프의 상태 표현


LangGraph에서 스테이트란 워크플로에서 실행되는 각 노드에 의해 업데이트된 값을 저장하기 위한 메커니즘입니다. 대화 이력, 수집된 정보, 중간 결과 등을 포함하는 구조화된 데이터로 표현됩니다.


from pydantic import BaseModel, Field
from typing import Annotated
import operator

class State(BaseModel):
query: str = Field(..., description="사용자의 질문")
current_role: str = Field(default="", description="선정된 답변 역할")
messages: Annotated[list[str], operator.add] = Field(default=[], description="답변 이력")
current_judge: bool = Field(default=False, description="품질 검사 결과") judgement_reason: str = Field(default="", description="품질 검사 판정 이유")



2. 노드(Node): 그래프를 구성하는 처리 단위


각 노드는 현재 스테이트를 받아 처리를 수행한 후 스테이트를 업데이트합니다. 예를 들어 답변 생성 노드는 다음과 같이 구현할 수 있습니다.


def answering_node(state: State) -> dict[str, Any]:
query = state.query
role = state.current_role

# 답변 생성 로직
generated_message = generate_answer(query, role)

return {"messages": [generated_message]}



3. 에지(Edge): 노드 간의 연결


LangGraph에는 세 가지 유형의 에지가 있습니다.


엔트리 포인트: 그래프의 시작점

에지: 특정 노드에서 다른 노드로 무조건 전이

조건부 에지: 조건에 따라 전이할 노드를 결정


# 조건부 에지 예시
workflow.add_conditional_edges(
"check",
lambda state: state.current_judge,
{True: END, False: "selection"}
)



4. 체크포인트: 상태 영속화와 복구


LangGraph의 가장 강력한 기능 중 하나는 체크포인트 기능입니다. 이를 통해 다음과 같은 작업이 가능합니다.


워크플로의 실행 상태를 저장하고 나중에 재개 가능

오류 발생 시 특정 지점에서 처리 재개 가능

디버깅을 위한 실행 과정 추적 가능


다만 MemorySaver는 데모용이며, 실제 서비스에서는 SqliteSaverPostgresSaver 등 별도 패키지 설치와 데이터베이스 비용이 필요합니다. 자세한 내용은 『랭체인과 랭그래프로 구현하는 RAG·AI 에이전트 실전 입문』의 9.4절을 참고하세요.





LangGraph의 강력한 장점들

1. 시각적 이해 용이성

LangGraph는 그래프 구조를 이미지로 시각화할 수 있어 복잡한 워크플로도 한눈에 파악할 수 있습니다.


2. 강력한 디버깅 기능

LangSmith와 함께 사용하면 각 노드의 실행 과정을 상세하게 추적할 수 있어 문제 발생 지점을 쉽게 찾을 수 있습니다.


3. 유연한 확장성

새로운 기능을 추가하고 싶다면 기존 그래프에 새로운 노드를 추가하고 적절한 에지로 연결하기만 하면 됩니다.


4. 안정성과 복구 기능

체크포인트 기능을 통해 장시간 실행되는 태스크를 중단하고 나중에 재개하거나, 오류 발생 시 특정 지점에서 처리를 재개할 수 있습니다.


5. LangChain과의 완벽한 호환성

LangGraph는 LangChain 위에 구축되어 있어 기존 LangChain 컴포넌트들을 그대로 활용할 수 있습니다.





기존 방식과의 차이점

기존 LangChain 방식은 다음과 같습니다.


# 순차적 처리, 조건 분기가 복잡함
def traditional_qa_system(query):
role = select_role(query)
answer = generate_answer(query, role)
while not is_good_quality(answer):
role = select_role(query) # 반복 처리가 복잡
answer = generate_answer(query, role)
return answer



LangGraph 방식은 다음과 같습니다.


# 그래프 구조로 명확하게 표현, 조건 분기가 직관적
workflow.add_conditional_edges(
"check",
lambda state: state.current_judge,
{True: END, False: "selection"} # 조건에 따른 분기가 명확
)





마무리: AI 에이전트 개발의 미래

LangGraph는 그래프 구조를 통한 직관적인 워크플로 설계, 강력한 상태 관리, 뛰어난 디버깅 기능까지 - 복잡한 AI 애플리케이션 개발을 위한 모든 것을 갖추고 있습니다. 특히 다음과 같은 상황에서 LangGraph의 진가가 발휘됩니다.


여러 단계를 거치는 복잡한 처리가 필요한 경우

조건에 따른 분기나 루프 구조가 필요한 경우

중간 결과를 저장하고 관리해야 하는 경우

팀 단위로 큰 시스템을 개발하는 경우


더 자세한 LangGraph 활용법과 실전 구현 예제, 고급 에이전트 개발 기법이 궁금하다면 『랭체인과 랭그래프로 구현하는 RAG·AI 에이전트 실전 입문』 도서를 참고해 주세요. 9장에서는 Q&A 애플리케이션을 직접 구현해보는 실습이, 10장에서는 요구사항 정의서 생성 AI 에이전트 개발 프로젝트가 담겨 있어 실무에 바로 적용할 수 있습니다.




『랭체인과 랭그래프로 구현하는 RAG·AI 에이전트 실전 입문』












keyword
작가의 이전글[SQLD 책 추천] 고래책으로 합격한 선배들의 후기