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