https://www.langchain.com/langgraph
이전에 langchain으로 만든 에이전트끼리 협업하고, 어떤 에이전트가 일하게 하고, 언제 작업이 끝나게 할지 등 워크플로우를 작성하는 프레임워크가 랭그래프이다.
상태를 기반으로 동작하는 그래프 구조를 StateGraph라고 한다. 상태는 애플리케이션의 현재 스냅샷을 나타내는 공유 데이터 구조를 말함. 주로 TypeDict
을 사용해 정의한다.
그래프를 구성하는 노드는 Agent의 로직을 표현하는 python 함수를 말한다.
현재의 상태(State)를 입력으로 받고, 다시 업데이트된 상태(State)를 반환한다.
START
, END
노드로 추상화되어있다.엣지(Edge)는 현재 State를 기반으로 다음에 실행할 Node를 결정하는 함수를 말한다.
조건부로 분기할 수도 있고, 흐름 제어가 고정적일 수도 있음.
이렇게 만들어진 그래프는 Runnable객체이기 때문에 invoke()
메서드로 킥오프 할 수 있음. 이때 invoke()
함수의 인자로 초기 상태를 전달할 수 있다.
가장 먼저 해야할 일은, 상태(state)를 정의하는 것이다. 이 애플리케이션은 어떤 상태를 가져야 하는가? 이 애플리케이션이 가져야하는 자료구조는 무엇이 있는가?
from typing import TypedDict
# 상태 Schema 정의 - 사용자의 선호도, 추천된 메뉴, 그리고 메뉴 정보를 저장
class MenuState(TypedDict):
user_preference: str
recommended_menu: str
menu_info: str