LangGraph로 멀티턴 AI 에이전트 만들기 - 파이썬 예제와 함께 배우기
최근 대화형 AI 시스템이 급속도로 발전하면서, 단순한 일문일답을 넘어서는 복잡한 멀티턴 에이전트 시스템이 요구되고 있습니다. 예를 들어 사용자의 요청을 이해하고, 외부 툴을 사용해 검색하고, 결과를 종합해 다시 사용자에게 답변을 주는 흐름은 단순한 '질문-답변' 체인으로는 구현하기 어렵습니다.
이럴 때 필요한 것이 바로 LangGraph입니다.
LangGraph란?
LangGraph는 LangChain 팀이 만든 오픈소스 프레임워크로, 복잡한 AI 에이전트의 대화 흐름을 그래프 구조로 정의하고 실행할 수 있게 해줍니다. LangChain이 "일렬 체인"이라면, LangGraph는 조건 분기, 반복 루프, 동적 흐름을 지원하는 "상태 기반 그래프" 구조입니다.
쉽게 말해, LangGraph는 아래와 같은 복잡한 작업을 유연하게 구현할 수 있도록 도와줍니다:
- 대화 중 조건에 따라 다른 경로로 흐름 전환
- 사용자 입력에 따라 반복 실행
- 여러 에이전트 간 협업 구성
- 외부 도구(예: 검색, 계산기 등)와의 통합
LangGraph가 필요한 이유
기존 LangChain만으로도 간단한 워크플로우를 만들 수 있지만, 아래와 같은 복잡한 요구사항이 생기면 제약이 생깁니다.
요구사항 | LangChain만으로 가능한가? | LangGraph의 장점 |
---|---|---|
조건 분기 | 복잡하게 구현해야 함 | 노드 간 조건 분기로 간단하게 구현 |
반복 흐름 | 매우 어려움 | 루프 구조를 쉽게 정의 가능 |
상태 유지 | Chain간 직접 전달해야 함 | 상태(state) 객체로 일괄 관리 |
플로우 시각화 | 없음 | 그래프 형태로 명확하게 설계 가능 |
LangGraph의 기본 개념
LangGraph를 사용하기 전 알아야 할 기본 개념은 다음과 같습니다:
1. 상태 (State)
LangGraph는 '현재 상태'를 항상 저장하며, 노드들이 이 상태를 입력받아 새로운 상태로 반환합니다. 예를 들어, 사용자 메시지, 에이전트 응답, 플래그 등을 상태에 저장할 수 있습니다.
state = {
"messages": [],
"continue": True
}
2. 노드 (Node)
각 노드는 하나의 작업 단위를 나타내며, 상태를 받아서 어떤 로직을 처리하고 다시 상태를 반환합니다.
3. 조건 분기 (Conditional Edge)
조건에 따라 다른 노드로 흐름을 분기할 수 있습니다. 예: 사용자가 '계속'을 선택하면 다시 질문, '그만'을 선택하면 종료.
LangGraph 파이썬 예제
간단한 멀티턴 대화를 LangGraph로 구현해보겠습니다.
목표
- 사용자 질문을 받고
- 에이전트가 응답하고
- 유저가 계속할지 결정
- 계속하면 반복, 그만하면 종료
코드
from langgraph.graph import StateGraph, END
from langchain_core.runnables import RunnableLambda
# 상태 초기화
state = {
"messages": [],
"continue": True
}
# 노드: 사용자 메시지 입력
def add_user_message(state):
state["messages"].append({"role": "user", "content": "LangGraph가 뭐야?"})
return state
# 노드: 에이전트 응답
def agent_response(state):
state["messages"].append({"role": "agent", "content": "LangGraph는 LangChain을 기반으로 하는 워크플로우 프레임워크야."})
return state
# 노드: 계속할지 확인
def check_continue(state):
# 예시에서는 한 번만 실행 후 종료
state["continue"] = False
return "continue" if state["continue"] else "end"
# 그래프 빌드
builder = StateGraph(state)
builder.add_node("add_user", RunnableLambda(add_user_message))
builder.add_node("agent", RunnableLambda(agent_response))
builder.add_node("check_continue", RunnableLambda(check_continue))
# 노드 간 흐름 설정
builder.set_entry_point("add_user")
builder.add_edge("add_user", "agent")
builder.add_edge("agent", "check_continue")
builder.add_conditional_edges("check_continue", {
"continue": "add_user",
"end": END
})
# 그래프 실행
graph = builder.compile()
final_state = graph.invoke(state)
# 결과 출력
for msg in final_state["messages"]:
print(f"{msg['role']}: {msg['content']}")
출력 결과:
user: LangGraph가 뭐야?
agent: LangGraph는 LangChain을 기반으로 하는 워크플로우 프레임워크야.
실전 활용 시나리오
LangGraph는 단순 예제를 넘어서 아래와 같은 실전 서비스 개발에 유용합니다:
고객지원 챗봇
- 문제 진단 → 해결책 제안 → 고객 반응에 따라 흐름 제어
복잡한 검색 어시스턴트
- 질문 → 키워드 추출 → 외부 검색 → 요약 응답
팀 기반 에이전트
- 질문 → 전문가 분배 → 결과 통합 → 최종 응답
워크플로우 자동화
- 명령 인식 → API 호출 → 결과 보고 및 후속 작업 수행
마무리: LangGraph는 새로운 AI 시스템 설계의 핵심
LangGraph는 단순한 LLM 챗봇을 넘어, 복잡한 워크플로우 기반의 에이전트 시스템을 구현하고자 하는 개발자들에게 매우 유용한 도구입니다. 특히 반복, 조건 분기, 상태 관리 등 현실적인 문제를 해결해야 할 때 강력한 힘을 발휘합니다.
파이썬을 다룰 줄 알고, LangChain을 사용해봤다면 LangGraph는 꼭 한 번 익혀둘 가치가 있는 프레임워크입니다.
'개발 창고 > AI' 카테고리의 다른 글
Q-Learning 기초부터 CartPole 적용까지: 강화학습 첫 번째 알고리즘 배우기 (6) | 2025.07.10 |
---|---|
강화학습 쉽게 시작하기: OpenAI Gym으로 첫 AI 에이전트 만들기 (7) | 2025.07.09 |
중국, 휴머노이드 로봇 축구 리그 개막! 어린이 수준 AI의 실제 경기 도전기 (1) | 2025.07.07 |
파라미터 수는 많지만 계산은 빠르게: Mixture of Experts(MoE)란? (1) | 2025.07.06 |
MCP(Monte Carlo Prediction)란? 강화학습 기초 개념과 파이썬 예제로 쉽게 이해하기 (2) | 2025.07.04 |