Next Study · LangGraph 실습 기록

LangGraph를 코드로 체화하기

오늘은 LangGraph의 개념을 이해했다면, 다음 공부의 목표는 명확하다. State, Node, Edge를 실제 코드로 만들어보고, 단순 라우터 구조에서 RAG Loop 구조까지 확장하는 것이다.

목표: 실행 가능한 Agent 흐름 만들기 핵심: StateGraph 중심 설계 확장: Router → Loop → Fallback

1. 다음 공부의 핵심 목표

다음 학습은 “LangGraph를 이해한다”에서 끝내지 않고, 작은 Agent를 직접 만들어보며 운영 가능한 구조 감각을 익히는 데 초점을 둔다.

Step 1 기본 StateGraph 만들기

사용자 질문을 State에 담고, Node를 거치며 값이 어떻게 변하는지 확인한다.

Step 2 Router 구조 만들기

질문 유형에 따라 weather, qa, chat 흐름으로 분기하는 구조를 만든다.

Step 3 RAG Loop 확장하기

검색 결과가 부족하면 질문을 재작성하고 다시 검색하는 반복 흐름을 만든다.

2. 1차 실습: Router Agent 만들기

첫 번째 실습은 가장 단순한 Router Agent다. 사용자의 질문을 입력받고, 질문 유형을 분류한 뒤 알맞은 Node로 보내는 구조를 만든다.

START
→
Input Question
→
Classify Type
→
Route
→
Generate Answer
→
END

처음 만들 Agent의 범위

class AgentState(TypedDict):
    user_query: str
    chat_type: str
    final_answer: str
    error: str | None

3. 2차 실습: RAG Loop 만들기

Router 구조가 익숙해지면 다음 단계는 RAG Loop다. 단순히 검색하고 답변하는 구조가 아니라, 검색 결과가 충분한지 평가하고 부족하면 다시 검색하는 구조를 만든다.

Retrieve
→
Grade Docs
→
Is Enough?
→
Rewrite Query
→
Retrieve Again
좋은 흐름 검색 결과를 평가한다

검색 결과가 질문과 관련 있는지, 답변에 충분한지 판단한다.

실패 대응 부족하면 되돌아간다

바로 답변하지 않고 질문을 재작성한 뒤 다시 검색한다.

Retrieve
  ↓
Grade Documents
  ↓
Is Enough?
  ├─ Yes → Generate Answer
  └─ No  → Rewrite Query → Retrieve Again

4. 단계별 실행 계획

Phase 01
환경 세팅

langgraph, langchain, langchain-openai 등 필요한 패키지를 설치하고 기본 실행 환경을 만든다.

Phase 02
State 설계

처음부터 많은 값을 넣지 않고 user_query, chat_type, final_answer, error 정도로 작게 시작한다.

Phase 03
Node 분리

classify_intent, weather_node, qa_node, chat_node, generate_answer처럼 책임을 작게 나눈다.

Phase 04
Conditional Edge 추가

chat_type 값에 따라 다음 Node를 선택하도록 조건부 Edge를 연결한다.

Phase 05
RAG Loop 확장

retrieve, grade_documents, rewrite_query, generate_answer Node를 추가해 반복 구조를 만든다.

5. 실수하기 쉬운 지점

핵심 주의점: 다음 실습의 목적은 멋진 Agent를 한 번에 만드는 것이 아니다. 작은 StateGraph를 끝까지 실행해보고, 값이 어떻게 흘러가는지 눈으로 확인하는 것이다.

6. 다음 공부의 완료 기준

공부가 끝났다고 말하려면 개념을 읽는 것보다, 아래 결과물을 직접 만들어봐야 한다.