# 가장 기본적인 상태그래프
fromtypingimportTypedDictfromlanggraph.graphimportStateGraph,START,ENDclassAppState(TypedDict):value:int...graph=StateGraph(AppState)graph.add_node("generate",generate_node)graph.add_node("terminate",terminate_node)graph.add_edge(START,"generate")graph.add_conditional_edges("generate",routing_function)graph.add_edge("terminate",END)
2. 컴파일 Compile
앞서 살펴본 그래프(graph)는 작업의 “구조도”일 뿐이므로, 실행할 수 없다.
따라서 그래프에 정의된 작업을 실행하기 위해서는 그래프 객체를 컴파일(.compile())을 하여 실행 가능한 객체를 만들어야 한다.
컴파일 단계에서는 그래프 구조에 기본적인 문제가 없는지 검사한다. (어디에도 연결되지 않은 노드가 있는지.. 등)
또한 체크포인터(checkpointer)나 브레이크포인트(breakpoint)처럼 실행시 사용할 설정도 이 단계에서 지정할 수 있다.
fromtypingimportTypedDictfromlanggraph.graphimportStateGraph,START,ENDimportrandomclassAppState(TypedDict):value:int...graph=StateGraph(AppState)graph.add_node("generate",generate_node)graph.add_node("terminate",terminate_node)graph.add_edge(START,"generate")graph.add_conditional_edges("generate",routing_function)graph.add_edge("terminate",END)app=graph.compile(...)# 컴파일
app# --> 컴파일된 실행 가능한 객체
3. 컴파일된 그래프 실행 방식
invoke() : 한 번 실행하고 최종 상태를 한 번 반환받는 실행 방식.
stream() : 실행 중간 과정을 단계별로 보면서 반환받는 실행 방식.
최종 결과만 필요할 경우 → invoke / 중간 흐름도 보고 싶은 경우 → stream
이외로 ainvoke() 와 astream() 이라는 비동기 실행 방법도 있으며, 이는 추후 심화 포스팅에서 다룬다.
Comments