랭그래프의 구조

https://www.langchain.com/langgraph

이전에 langchain으로 만든 에이전트끼리 협업하고, 어떤 에이전트가 일하게 하고, 언제 작업이 끝나게 할지 등 워크플로우를 작성하는 프레임워크가 랭그래프이다.

상태그래프(state Graph) 개요

상태를 기반으로 동작하는 그래프 구조를 StateGraph라고 한다. 상태는 애플리케이션의 현재 스냅샷을 나타내는 공유 데이터 구조를 말함. 주로 TypeDict 을 사용해 정의한다.

그래프를 구성하는 노드는 Agent의 로직을 표현하는 python 함수를 말한다.

현재의 상태(State)를 입력으로 받고, 다시 업데이트된 상태(State)를 반환한다.

엣지(Edge)는 현재 State를 기반으로 다음에 실행할 Node를 결정하는 함수를 말한다.

조건부로 분기할 수도 있고, 흐름 제어가 고정적일 수도 있음.

이렇게 만들어진 그래프는 Runnable객체이기 때문에 invoke() 메서드로 킥오프 할 수 있음. 이때 invoke() 함수의 인자로 초기 상태를 전달할 수 있다.

상태 그래프 구현하기

가장 먼저 해야할 일은, 상태(state)를 정의하는 것이다. 이 애플리케이션은 어떤 상태를 가져야 하는가? 이 애플리케이션이 가져야하는 자료구조는 무엇이 있는가?

from typing import TypedDict

# 상태 Schema 정의 - 사용자의 선호도, 추천된 메뉴, 그리고 메뉴 정보를 저장
class MenuState(TypedDict):
    user_preference: str
    recommended_menu: str
    menu_info: str