이 디렉토리는 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-
기초 단계: 01, 02-1, 02-2번을 순서대로 학습하여 LangGraph의 기본 개념을 이해하세요.
-
중급 단계: 03, 04번을 통해 메모리와 인간 개입 기능을 학습하세요.
-
고급 단계: 05번에서 복잡한 상태 관리를, 06번에서 사전 구축된 에이전트 활용법을 학습하세요.
| 튜토리얼 | 난이도 | 핵심 기능 | 활용 사례 |
|---|---|---|---|
| 01 | 초급 | 기본 채팅 | 간단한 대화 시스템 |
| 02-1 | 초중급 | 도구 연동 | 기능 확장 가능한 챗봇 |
| 02-2 | 초중급 | 내장 도구 | 빠른 프로토타이핑 |
| 03 | 중급 | 메모리 관리 | 연속 대화 시스템 |
| 04 | 중고급 | 인간 개입 | 검토가 필요한 워크플로우 |
| 05 | 고급 | 커스텀 상태 | 복잡한 비즈니스 로직 |
| 06 | 중급 | 사전 구축 에이전트 | 빠른 배포용 시스템 |
이 튜토리얼들을 바탕으로 다음과 같은 시스템을 구축할 수 있습니다:
- 고객 서비스 챗봇: 메모리와 인간 개입 기능을 활용
- 개인 비서 시스템: 다양한 도구와 커스텀 상태 활용
- 교육용 AI 튜터: 사전 구축 에이전트와 구조화된 출력 활용
- 워크플로우 자동화: 복잡한 상태 관리와 조건부 흐름 제어
💡 팁: 각 노트북은 독립적으로 실행 가능하지만, 순서대로 학습하시면 개념의 연결성을 더 잘 이해할 수 있습니다.
🤝 기여: 개선 사항이나 새로운 예제가 있다면 언제든지 기여해 주세요!