LangGraph 글로벌 멀티턴과 에이전트 멀티턴 대화 흐름 설계

AI 에이전트 기반 애플리케이션의 복잡성이 점점 더 고도화되고 있습니다. 단일 프롬프트에서의 응답 수준을 넘어서 이제는 다중 회차(turn) 기반의 대화, 다양한 상태(state) 관리, 그리고 복수 에이전트 간 협업(Agent Collaboration) 까지도 필요해졌습니다.

이러한 요구에 대응하기 위해 등장한 것이 LangGraph입니다. LangChain의 확장 생태계로서, 복잡한 멀티턴(Multiturn) 대화 흐름을 제어 가능한 그래프 기반 워크플로우로 전환해주는 이 프레임워크는 에이전트 지향(Agent-Oriented) 시스템을 구현하는 데 최적화되어 있습니다.

이번 글에서는 LangGraph의 글로벌 멀티턴(Global Multiturn)에이전트 멀티턴(Agent Multiturn) 개념을 중심으로, 개발자들이 어떻게 이를 실무에 활용할 수 있는지, 그리고 기술적으로 어떤 방식으로 설계되고 구현되는지를 설명하겠습니다.


LangGraph란 무엇인가?

LangGraph는 LangChain 기반의 상태 머신(state machine) 프레임워크입니다. 복잡한 에이전트 워크플로우를 Directed Graph 형태로 구성할 수 있도록 도와주며, 각 노드는 실행 단위를 의미하고, 엣지는 흐름의 조건을 정의합니다.

특히 LangGraph는 멀티턴 대화를 통해 상태를 유지하거나 수정하는 데에 강력한 기능을 제공하며, 이를 통해 대화형 에이전트가 단순한 문답 수준을 넘어, 장기적 문맥 추론이나 협력적 행동을 할 수 있도록 만듭니다.

멀티턴(Multiturn)이란?

멀티턴 대화란 간단히 말해서 여러 번의 질문과 응답이 오가는 복수 회차의 대화를 의미합니다. LangGraph에서는 이를 상태의 흐름으로 모델링합니다. 단일 입력 → 단일 출력 형태의 전통적인 파이프라인이 아니라, 각 단계에서 상태가 업데이트되고, 다음 동작이 결정되는 구조입니다.

LangGraph에서는 다음과 같은 멀티턴 흐름이 가능합니다:

  • 사용자 → 시스템 → 사용자 → 시스템 … (N번 반복)
  • 각 응답은 이전 상태를 기억하거나 새로운 상태를 만들어 냄
  • 동적 경로 분기를 통해 다양한 응답 경로 설계 가능

글로벌 멀티턴(Global Multiturn)의 개념

정의

LangGraph에서의 글로벌 멀티턴하나의 전역 상태(Global State) 를 중심으로 전체 워크플로우의 흐름을 구성하는 방식입니다. 이 구조는 단일 사용자 또는 단일 대화 세션을 기준으로 전체 대화의 모든 상태와 이력을 포함합니다.

특징

  • 전역 상태 컨텍스트 유지: 모든 노드와 흐름이 같은 글로벌 상태에 접근하고, 수정하며 공유합니다.
  • 단일 세션 기반 대화 흐름에 적합
  • 예: 하나의 사용자가 예약 시스템을 통해 항공권, 호텔, 렌터카를 연속으로 예약하는 시나리오

사용 예시

from langgraph.graph import StateGraph
from langchain.agents import AgentExecutor

class GlobalState(TypedDict):
    user_input: str
    memory: List[str]

graph = StateGraph(GlobalState)
graph.add_node("agent", agent_executor)
graph.set_entry_point("agent")
graph.set_finish_point("agent")
graph.compile()

이 구조에서 모든 대화 턴은 GlobalState를 공유하며, 한 번의 흐름이 끝날 때까지 전체 상태를 유지합니다.

에이전트 멀티턴(Agent Multiturn)의 개념

정의

에이전트 멀티턴은 LangGraph의 또 다른 핵심 개념으로, 하나의 노드가 에이전트로 구성되며, 이 에이전트가 내부적으로 멀티턴 대화를 수행합니다. 즉, LangGraph의 흐름 상 한 노드처럼 보이지만, 내부에서는 복잡한 멀티턴 로직을 수행합니다.

특징

  • 노드 내부에서 LangChain 에이전트가 독립적인 멀티턴 세션을 수행
  • 복잡한 추론, 툴 호출, 반복적인 질문/응답 처리에 적합
  • 여러 차례 LLM 호출 및 Tool interaction 가능
  • 에이전트 내부의 상태와 LangGraph 외부의 상태를 함께 연결해야 함

사용 예시

from langgraph.graph import StateGraph
from langchain.agents import initialize_agent
from langchain.agents.agent_toolkits import Tool

tools = [Tool.from_function(...)]
agent = initialize_agent(tools, llm, agent_type="zero-shot-react-description")

graph = StateGraph(GlobalState)
graph.add_node("agent", AgentMultiturn(agent))
graph.set_entry_point("agent")
graph.set_finish_point("agent")
graph.compile()

여기서 AgentMultiturn(agent)은 LangGraph가 제공하는 고유 구조로, 하나의 에이전트가 스스로 판단하여 여러 턴을 반복할 수 있는 구조를 말합니다. 에이전트는 내부적으로 LLMChain, Tool usage, memory update 등을 반복하면서 의사결정을 내립니다.

글로벌 멀티턴 vs 에이전트 멀티턴 – 비교

항목 글로벌 멀티턴 에이전트 멀티턴
상태 범위 전역 상태 에이전트 내부 상태
적합한 시나리오 유저 대화 기반 플로우 에이전트 중심 복잡 로직
흐름 제어 그래프의 흐름으로 처리 에이전트 내부 판단
툴 사용 명시적 노드 구성 암시적 에이전트 Tool 사용
구조적 난이도 낮음 높음 (Tool, Prompt 설계 필요)

실제 개발 시 멀티턴을 어떻게 설계할 것인가?

LangGraph의 구조를 설계할 때 가장 중요한 질문은 다음과 같습니다:

이 플로우의 주체는 누구인가? 사용자인가, 에이전트인가?

  • 사용자 중심이라면 글로벌 멀티턴
  • 에이전트 중심의 자동화된 판단 로직이라면 에이전트 멀티턴

실무 팁:

  1. Global Multiturn을 기본으로 시작하되, 필요한 곳에만 AgentMultiturn을 추가하세요.
  2. Tool을 사용하는 경우, 에이전트의 툴 사용 로직이 복잡해질 수 있으므로 Prompt 관리 및 Tool 정의를 명확히 하세요.
  3. 상태(State) 설계를 신중하게 구성하세요. 글로벌 상태가 과도하게 무거워지면 각 노드의 독립성이 줄어들 수 있습니다.
  4. 에러 핸들링은 필수입니다. 멀티턴 흐름 중 어느 한 부분에서 예외가 발생하면 전체 플로우가 중단될 수 있으므로 fallback 노드를 설정하세요.
  5. Graph Visualization 도구를 활용해 흐름을 도식화하고 디버깅하세요.

기술적으로 LangGraph는 어떻게 동작하는가?

LangGraph는 아래와 같은 내부 흐름을 따릅니다:

  1. StateGraph 정의
    TypedDict 기반으로 상태를 정의
  2. 노드(Node) 추가
    각 노드는 함수 또는 LangChain Agent
  3. 경로(Path) 설정
    조건 분기, 순환, 종료 포인트 등 정의
  4. 컴파일(compile)
    최종 그래프를 워크플로우 엔진으로 컴파일
  5. 실행(execute)
    입력 상태를 바탕으로 그래프를 따라 상태 전이 수행

LangGraph는 내부적으로 LangChain Runnable Interface와 호환되며, 에이전트는 LangChain이 제공하는 LLM 기반 Chain 및 Tool Executor를 사용합니다.

LangGraph로 가능한 대표적 멀티턴 시나리오

  • 고객 상담 플로우: 고객의 질문을 받고, 상품 추천, 견적 요청, 결제 절차까지 이어지는 복수 턴 흐름
  • 문서 기반 Q&A: 문서를 기반으로 유저가 여러 차례 질문하는 경우
  • 에이전트 협업: 하나의 에이전트가 해결하지 못하는 문제를 복수 에이전트가 분업 수행
  • 의료 챗봇 시나리오: 증상 확인 → 추가 질문 → 의심 질환 판단 → 추천 조치

마무리: LangGraph를 멀티턴의 핵심 엔진으로

LangGraph는 단순히 ‘LangChain의 확장 도구’가 아닙니다. 이는 AI 기반 시스템을 상태 지향적으로 제어하고, 복잡한 멀티턴 대화 흐름을 체계적으로 설계할 수 있도록 지원하는 핵심 엔진입니다.

글로벌 멀티턴은 전체 컨텍스트 흐름을 전역적으로 관리할 수 있는 강력한 구조이며, 에이전트 멀티턴은 한 노드 내에서 복잡한 추론 및 반복 처리를 수행할 수 있는 고급 기능입니다. 이 둘을 적절히 조합함으로써 개발자들은 더욱 강력하고 유연한 대화형 시스템을 구축할 수 있습니다.

LangGraph의 설계 철학은 분명합니다.
“대화 흐름도 소프트웨어 아키텍처처럼 설계할 수 있어야 한다.”

Leave a Comment