Skip to content

shqkel/langgraph-basics

Repository files navigation

LangGraph 기초 튜토리얼 🚀

이 디렉토리는 LangGraph를 활용한 AI 에이전트 및 대화형 시스템 구축을 위한 단계별 튜토리얼을 제공합니다. 기본적인 채팅 시스템부터 고급 기능까지 점진적으로 학습할 수 있도록 구성되었습니다.

📚 튜토리얼 개요

LangGraph의 기본 개념과 구조를 이해하기 위한 첫 번째 단계입니다.

학습 내용:

  • LangGraph의 기본 구조 이해
  • StateGraph와 메시지 상태 관리
  • 간단한 채팅 시스템 구현
  • 그래프 노드와 엣지 설정

핵심 개념:

  • StateGraph 생성과 컴파일
  • add_messages를 활용한 메시지 상태 관리
  • 챗봇 노드와 대화 흐름 구현

외부 도구를 연동하여 더 강력한 기능을 제공하는 채팅 시스템을 구축합니다.

학습 내용:

  • 외부 도구(Tools) 정의 및 연동
  • LLM과 도구의 연결 (bind_tools)
  • 조건부 엣지를 통한 도구 호출 제어
  • ToolNode를 활용한 도구 실행

핵심 개념:

  • @tool 데코레이터를 활용한 도구 정의
  • tools_condition을 통한 조건부 흐름 제어
  • 도구 호출과 결과 처리

LangGraph에서 제공하는 사전 제작된 도구들을 활용하는 방법을 학습합니다.

학습 내용:

  • LangGraph 내장 도구 활용
  • 사전 구축된 컴포넌트 사용
  • 빠른 프로토타이핑 방법

대화 맥락을 유지하고 다중 턴 대화를 지원하는 시스템을 구현합니다.

학습 내용:

  • 지속적인 체크포인팅 (Persistent Checkpointing)
  • MemorySaver를 활용한 메모리 관리
  • thread_id를 통한 독립된 대화 세션 관리
  • 이전 대화 맥락 유지 및 활용

핵심 개념:

  • MemorySaver를 통한 상태 저장
  • thread_id를 활용한 세션 분리
  • 대화 기록 조회 및 관리

실습 예시:

# 메모리 설정
memory = MemorySaver()
graph = workflow.compile(checkpointer=memory)

# 독립된 대화 세션 관리
config1 = {"configurable": {"thread_id": "user1"}}
config2 = {"configurable": {"thread_id": "user2"}}

인간의 개입이 필요한 시점에 워크플로우를 중단하고 재개할 수 있는 시스템을 구축합니다.

학습 내용:

  • interrupt 기능을 활용한 워크플로우 중단
  • 인간 검토 노드 구현
  • Human-assist 도구 정의
  • 중단점에서의 상태 관리

핵심 개념:

  • interrupt() 함수를 통한 실행 중단
  • Command(resume={}) 를 통한 실행 재개
  • 인간 피드백 통합

실습 예시:

@tool
def human_assist(query):
    """Human assist tool"""
    human_response = interrupt({"query": query})
    return human_response["data"]

복잡한 비즈니스 로직을 위한 커스텀 상태 관리와 외부 API 연동을 학습합니다.

학습 내용:

  • TypedDict를 활용한 커스텀 상태 정의
  • 외부 API (Kakao 장소 검색) 연동
  • 키워드 추출 및 장소 검색 워크플로우
  • 복합 데이터 구조 관리

핵심 개념:

  • 커스텀 State 클래스 정의
  • 외부 API 호출 및 데이터 처리
  • LLM을 활용한 키워드 추출

실습 예시:

class State(TypedDict):
    messages: Annotated[List[BaseMessage], add_messages]
    search_query: Optional[str]
    search_results: Optional[List[KakaoPlace]]

LangGraph에서 제공하는 사전 구축된 에이전트를 활용하여 빠르게 고품질 시스템을 구축합니다.

학습 내용:

  • create_react_agent 함수 활용
  • 정적 및 동적 프롬프트 설정
  • 메모리와 구조화된 출력 구성
  • ReAct 패턴 기반 에이전트 구현

핵심 개념:

  • 사전 구축된 에이전트 활용
  • 동적 프롬프트 생성
  • Pydantic 모델을 통한 구조화된 출력

실습 예시:

agent = create_react_agent(
    model="anthropic:claude-3-7-sonnet-latest",
    tools=[get_weather],
    prompt="You are a helpful assistant",
    checkpointer=checkpointer,
    response_format=WeatherResponse
)

🔧 설치 및 설정

필수 패키지 설치

pip install langgraph langchain-openai langchain-tavily python-dotenv

환경 변수 설정

.env 파일을 생성하고 다음 API 키들을 설정하세요:

# OpenAI API 키
OPENAI_API_KEY=your_openai_api_key

# Tavily 검색 API 키 (도구 사용 시)
TAVILY_API_KEY=your_tavily_api_key

# Kakao API 키 (장소 검색 시)
KAKAO_API_KEY=your_kakao_api_key

# LLM 모델 설정 (선택사항)
OPENAI_LLM_MODEL=gpt-4o-mini

📖 학습 순서 권장사항

  1. 기초 단계: 01, 02-1, 02-2번을 순서대로 학습하여 LangGraph의 기본 개념을 이해하세요.

  2. 중급 단계: 03, 04번을 통해 메모리와 인간 개입 기능을 학습하세요.

  3. 고급 단계: 05번에서 복잡한 상태 관리를, 06번에서 사전 구축된 에이전트 활용법을 학습하세요.

🎯 각 튜토리얼의 주요 특징

튜토리얼 난이도 핵심 기능 활용 사례
01 초급 기본 채팅 간단한 대화 시스템
02-1 초중급 도구 연동 기능 확장 가능한 챗봇
02-2 초중급 내장 도구 빠른 프로토타이핑
03 중급 메모리 관리 연속 대화 시스템
04 중고급 인간 개입 검토가 필요한 워크플로우
05 고급 커스텀 상태 복잡한 비즈니스 로직
06 중급 사전 구축 에이전트 빠른 배포용 시스템

🚀 실전 응용 아이디어

이 튜토리얼들을 바탕으로 다음과 같은 시스템을 구축할 수 있습니다:

  • 고객 서비스 챗봇: 메모리와 인간 개입 기능을 활용
  • 개인 비서 시스템: 다양한 도구와 커스텀 상태 활용
  • 교육용 AI 튜터: 사전 구축 에이전트와 구조화된 출력 활용
  • 워크플로우 자동화: 복잡한 상태 관리와 조건부 흐름 제어

🔗 참고 자료


💡 팁: 각 노트북은 독립적으로 실행 가능하지만, 순서대로 학습하시면 개념의 연결성을 더 잘 이해할 수 있습니다.

🤝 기여: 개선 사항이나 새로운 예제가 있다면 언제든지 기여해 주세요!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published