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. 다음 공부의 완료 기준

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