LangGraph

LangGraph 1강

[개요] 그래프 vs 체인 · State · 설치

LangGraph는 LangChain 팀이 만든 상태 기반 그래프 프레임워크다. LLM 애플리케이션을 노드(작업)와 엣지(연결)로 이뤄진 그래프로 표현하고, 노드들이 하나의 State(상태)를 공유하며 갱신한다. 단순 체인과 달리 조건 분기·순환(loop)·사람 개입을 자연스럽게 표현할 수 있어, 도구를 반복 호출하는 에이전트를 만드는 데 특히 강력하다.

LangGraph 1강 구성도

LangGraph는 LangChain 위에 얹어 쓰지만 독립적으로도 동작하며, 실제로 Uber·LinkedIn·Replit 등이 프로덕션 에이전트에 사용한다.

이 강의 목표는 다음과 같다.

  • 체인과 그래프의 차이, LangGraph가 왜 필요한지 이해한다.
  • State·노드·엣지라는 세 가지 핵심 개념을 잡는다.
  • 설치하고 첫 그래프를 준비한다.

1. 왜 그래프인가

LangChain의 체인(Chain)A → B → C처럼 한 방향으로 흐른다. 하지만 실제 에이전트는 "도구를 부르고 → 결과를 보고 → 다시 판단하고 → 필요하면 또 도구를 부른다". 이 순환조건 분기를 체인으로 표현하긴 어렵다. LangGraph는 이를 그래프의 엣지로 명시해 흐름을 눈에 보이게 만든다.

2. 세 가지 핵심 개념

  • State(상태): 모든 노드가 공유하는 데이터. 그래프의 "메모리".
  • Node(노드): State를 입력받아 일부를 바꿔 반환하는 함수.
  • Edge(엣지): 노드에서 노드로 가는 연결. 조건부일 수도 있다.

3. 설치

pip install -U langgraph langchain
pip install langchain-openai          # 모델 공급자(예: OpenAI)
export OPENAI_API_KEY=sk-...

핵심 명령·용어

용어
StateGraph 그래프를 정의하는 클래스
State 노드들이 공유하는 상태 데이터
Node / Edge 작업 함수 / 노드 간 연결
compile() 실행 가능한 그래프로 변환

예제

from langgraph.graph import StateGraph, START, END
from typing import TypedDict

class State(TypedDict):
    text: str

def upper(state: State):
    return {"text": state["text"].upper()}

g = StateGraph(State)
g.add_node("upper", upper)
g.add_edge(START, "upper")
g.add_edge("upper", END)
app = g.compile()
print(app.invoke({"text": "hello"}))   # {'text': 'HELLO'}

해설) LLM 없이도 그래프는 동작한다. 노드는 그냥 함수다. 뒤 강의에서 이 골격에 LLM·도구·메모리·사람 개입을 하나씩 얹어 에이전트로 키운다.

댓글 0