728x90
반응형
LangGraph의 기본적인 개념에 대해 복습하는 시간을 가져보도록 하겠습니다.
1. LangGraph란?
LangGraph는 LLM 기반 워크플로우에 순환 연산 기능을 추가하여 복잡한 AI 애플리케이션의 흐름을 효과적으로 제어할 수 있는 프레임워크입니다. 노드(Node), 엣지(Edge), 상태(State)라는 세 가지 핵심 요소를 통해 RAG 파이프라인과 같은 복잡한 시스템을 유연하게 구성할 수 있습니다.
- Node, Edge, State 를 통해 LLM을 활용한 워크플로우에 순환 연산 기능을 추가하여 손쉽게 흐름을 제어
- RAG 파이프라인의 세부 단계별 흐름 제어가 가능
- Conditional Edge를 통한 조건부 흐름 제어 가능
- Human-in-th-loop를 통해 필요시 중간에 개입하여 다음 단계 결정이 가능
- Checkpointer 기능으로 과거 실행 과정에 대한 "수정" 및 "리플레이" 기능 제공
2. 핵심 구성 요소
2.1 State (상태)
상태는 노드 간에 정보를 전달하는 데이터 컨테이너입니다.
- TypedDict: 일반 파이썬 딕셔너리에 타입힌팅을 추가한 구조
- 부분 업데이트: 모든 값을 채울 필요 없이 필요한 필드만 업데이트 가능
- Overwrite 방식: 새로운 노드에서 동일한 키의 값을 덮어쓰는 방식으로 상태 갱신
- Reducer: add_messages나 operator.add와 같은 함수로 자동으로 리스트에 항목 추가
- Annotated: 타입 외에 키값에 대한 추가 정보 제공 가능
2.2 Node (노드)
노드는 워크플로우의 개별 단계를 정의하는 함수입니다.
- 함수로 정의
- 입력인자 : State
- 반환 : 대부분 State (Conditional Edge의 경우 다를 수 있음)
- add_node("노드이름",함수)로 노드 추가
2.3 Edge (엣지)
엣지는 노드 간의 연결을 정의합니다.
- 노드에서 노드간의 연결
- add_edge("노드이름","노드이름")로 노드 연결
- 노드에 조건부 엣지를 추가해 분기 수행 가능
- add_conditional_edges("노드이름", 조건부 판단 함수, dict 로 다음 단계 결정)
3. 그래프 구성 및 실행
3.1 시작점 지정
- set_entry_point("노드이름")
- 지정한 시작점부터 Graph가 시작
3.2 체크포인터(Checkpointer)
체크포인터는 그래프의 실행 흐름과 상태를 추적하고 저장합니다.
- Checkpointer : 각 노드간 실행결과를 추적하기 위한 메모리(대화에 대한 기록과 유사 개념)
- 체크 포인터를 활용하여 특정 시점(Snapshot)으로 되돌리기 기능도 가능
- compile(checkpointer=memory)로 지정하여 그래프 생성
3.3 그래프 실행
- RunnableConfig
recursion_limit : 최대 노드 실행 개수를 지정
thread_id : 그래프 실행 아이디를 기록하고, 추후 추적하기 위한 목적으로 활용 - invoke(상태,config)로 전달하여 실행
참고자료
'LLMops' 카테고리의 다른 글
[Prompt Engineering] 프롬프트 엔지니어링의 심화 기법들(2) (0) | 2025.05.01 |
---|---|
[Prompt Engineering] 프롬프트 엔지니어링의 심화 기법들(1) (0) | 2025.04.30 |
[Prompt Engineering] 프롬프트 엔지니어링의 기초 기법들 (0) | 2025.04.29 |
[LLM 평가]LLM 및 RAG 평가 프레임워크 비교 분석 (1) | 2025.04.18 |
[RAG Evaluation] RAG 평가의 기초 (0) | 2025.04.17 |