AI

LangGraph란?

shoney9254 2025. 3. 21. 15:45
반응형

LangGraph – LangChain에서 더 똑똑하게 멀티스텝 처리하는 법

LangChain을 사용하면서 "에이전트가 생각보다 복잡한 작업을 잘 못하네?" 라는 느낌을 받은 적이 있다.

단순 검색이나 API 호출 정도는 잘하지만, 여러 단계에 걸친 작업을 하면 이상한 답을 내놓거나, 비효율적으로 동작하는 경우가 많았다.

최근 프로젝트에서 LangGraph를 살짝 찍먹(?) 해봤는데,

이게 생각보다 LangChain의 부족한 부분을 꽤 잘 보완해줄 수 있는 기능 같아서 정리해본다.


LangGraph란?

LangGraph는 LangChain의 멀티스텝 처리 기능을 강화하기 위한 라이브러리다.

기존 LangChain은 한 번의 프롬프트 → 답변 생성 → 끝 이라는 단순한 흐름으로 동작하는 경우가 많았다.

하지만 현실에서는 AI가 여러 단계를 거쳐야 하는 작업이 많다.

예를 들어,

"서울에서 뉴욕까지 가는 최적의 비행편 찾아줘" 라고 하면,

1️⃣ 먼저 서울에서 뉴욕으로 가는 항공편 검색

2️⃣ 가격 비교

3️⃣ 경유 여부 확인

4️⃣ 가장 좋은 옵션 추천

이런 여러 단계의 작업이 필요하다.

LangGraph는 이런 멀티스텝 프로세스를 쉽게 구성할 수 있도록 돕는 프레임워크다.


LangGraph의 주요 특징

🚀 1. 그래프 기반 처리

LangGraph는 이름 그대로 "Graph(그래프)" 구조를 기반으로 동작한다.

기존 LangChain은 단순히 프롬프트를 주고받는 선형 구조였지만, LangGraph는 노드(Node)와 엣지(Edge)를 활용해서 유연한 흐름을 만들 수 있다.

  • 노드(Node): AI가 수행해야 하는 개별 작업 (예: 검색, 데이터 분석, 요약)
  • 엣지(Edge): 작업 간의 연결 관계 (예: 검색 결과를 분석 후, 분석된 데이터를 요약)

📌 즉, AI가 마치 플로우차트처럼 단계별로 작업을 수행할 수 있도록 만든다!


⚡ 2. 병렬 처리 가능

기존 LangChain에서는 하나의 작업이 끝나야 다음 작업이 가능했지만,

LangGraph에서는 여러 작업을 동시에 수행할 수도 있다.

예를 들어,

"오늘 서울과 뉴욕의 날씨를 각각 찾아줘" 라고 하면,

기존 LangChain 방식:

🔄 서울 날씨 검색 → 뉴욕 날씨 검색 → 답변 생성

LangGraph 방식:

⚡ 서울 & 뉴욕 날씨 동시에 검색 → 결과 합쳐서 답변

즉, 독립적인 작업을 병렬로 실행할 수 있어 속도가 훨씬 빨라진다.


🧠 3. 더 똑똑한 의사결정 가능

LangGraph에서는 AI가 상황에 따라 어떤 노드를 선택할지 동적으로 결정할 수도 있다.

즉, 모든 작업을 일괄적으로 처리하는 게 아니라, 필요한 작업만 선택적으로 실행할 수도 있다.

예를 들어,

"서울의 날씨 알려줘" 라고 했을 때,

  • 검색이 필요하면 날씨 API 호출
  • 데이터가 이미 캐시에 있으면 바로 응답
  • 검색 결과가 이상하면 추가적인 확인 과정 수행

📌 즉, AI가 유연하게 상황을 판단하고, 필요한 작업만 실행할 수 있다!


🎯 4. 다양한 AI 시스템과 결합 가능

LangGraph는 LangChain뿐만 아니라, OpenAI, Hugging Face, 기타 AI 프레임워크와도 쉽게 연동 가능하다.

즉, 기존 AI 시스템을 더 똑똑하게 만들기 위한 "업그레이드 키트" 같은 느낌이다.


LangGraph 코드 예제 (간단한 AI 워크플로우 만들기)

from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END

# 간단한 State 정의
class WorkflowState:
    user_input: str
    search_result: str = None
    summary: str = None

# LLM 설정
llm = ChatOpenAI(model="gpt-4-turbo")

# 노드 1: 검색 수행
def search(state):
    query = state.user_input
    print(f"🔍 검색 실행: {query}")
    return {"search_result": f"{query}에 대한 가짜 검색 결과"}

# 노드 2: 검색 결과 요약
def summarize(state):
    text = state.search_result
    print(f"📝 요약 실행: {text}")
    return {"summary": f"{text} 요약된 내용"}

# 그래프 설정
workflow = StateGraph(WorkflowState)
workflow.add_node("search", search)
workflow.add_node("summarize", summarize)

# 검색 후 요약하는 흐름 설정
workflow.set_entry_point("search")
workflow.add_edge("search", "summarize")
workflow.add_edge("summarize", END)

# 실행
app = workflow.compile()
result = app.invoke({"user_input": "LangGraph란 무엇인가?"})
print("최종 결과:", result["summary"])

코드 설명

  1. WorkflowState: LangGraph에서 사용할 상태를 정의 (user_input → search_result → summary)
  2. search() 노드: 사용자의 입력을 기반으로 가짜 검색 결과를 반환
  3. summarize() 노드: 검색된 결과를 요약
  4. LangGraph의 그래프 생성:
    • 검색 수행 → 요약 실행 → 최종 결과 반환하는 흐름을 만든다
  5. *app.invoke()**를 호출하면 전체 워크플로우가 실행됨

📌 이제 AI가 검색 후 요약까지 자동으로 수행할 수 있다! 🚀


LangGraph를 활용하면 뭐가 좋아?

복잡한 AI 플로우를 쉽게 설계 – 멀티스텝 프로세스를 효율적으로 구현 가능

작업 속도 향상 – 병렬 실행을 통해 처리 속도 개선

더 스마트한 AI 만들기 – 상황에 맞는 유연한 의사결정 가능

기존 LangChain 시스템과 연동 가능 – 기존 프로젝트에 바로 적용 가능


LangGraph를 어떻게 활용하면 좋을까?

📌 사용 사례 예제

💡 1. 복잡한 데이터 분석 자동화

  • 데이터를 수집 → 정리 → 분석 → 요약하는 전체 과정을 자동화
  • 예: 뉴스 기사 크롤링 후, 주요 내용을 추출해서 요약

💡 2. AI 비서 시스템

  • LangGraph를 활용하면 AI 비서가 여러 작업을 동시에 처리하면서 최적의 답을 줄 수 있도록 설계 가능
  • 예: 일정 확인 → 이메일 요약 → 미팅 준비 자동화

💡 3. AI 기반 검색 및 추천 시스템

  • 사용자의 질문을 분석 → 필요한 정보 검색 → 검색 결과 최적화 → 최종 추천
  • 예: 여행 추천 시스템 (날씨, 가격, 비행기 일정 분석 후 최적의 일정 추천)

한줄 요약 ✨

💡 LangGraph는 LangChain의 한계를 극복하고, AI가 더 복잡한 멀티스텝 작업을 할 수 있도록 돕는 강력한 도구다!

지금은 살짝 찍먹한 수준이지만, 앞으로 더 복잡한 AI 프로세스를 설계할 때 LangGraph를 적극 활용해보면 좋을 것 같다.

우리 팀에서도 AI 워크플로우를 만들 때, LangChain만 쓸 게 아니라 LangGraph까지 고려해보면 어떨까? 🚀

반응형