소개
[ 랭그래프 만드는 순서]
주요모듈 import
from typing import Annotated from typing_extensions import TypedDict from langgraph.graph import StateGraph, START, END from langgraph.graph.message import add_messages from IPython.display import Image, display # API 키를 환경변수로 관리하기 위한 설정 파일 from dotenv import load_dotenv # API 키 정보 로드 load_dotenv()
상태(state)를 정의
class State(TypedDict):
messages: Annotated[list, add_messages]
graph_builder = StateGraph(State)
우리가 정의하는 모든 것은 현재를 입력으로 받아 state를 업데이트하는 값을 반환합니다.
메시지를 직접 덮어쓰지 않고 현재 목록에 추가합니다. 이는 Annotated에 미리 빌드된 add_messages 함수를 통해 전달됩니다.
노드(node)를 추가
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o-mini",temperature=0)
def chatbot(state: State):
return {"messages": [model.invoke(state["messages"])]}
graph_builder.add_node("chatbot", chatbot)
첫 번째 인수는 고유한 노드 이름입니다.
두 번째 인수는 언제든지 호출될 함수 또는 객체입니다.
edge 추가 (선 긋기)
graph_builder.add_edge(START, "chatbot") # 그래프를 실행할 때마다 작업을 시작할 위치를 알려줍니다 graph_builder.add_edge("chatbot", END) # 그래프에 "이 노드가 실행될 때마다 종료할 위치 지정정
그래프를 컴파일
from IPython.display import Image, display
# 그래프 생성
graph = graph_builder.compile()
# 그래프 시각화
display(Image(graph.get_graph().draw_mermaid_png()))