여러 도구를 위한 그래프 워크플로 만들기
이제 챗봇 그래프를 만들기 위한 구성 요소가 모두 준비되었어요! 각 노드를 엣지로 연결해 하나의 워크플로로 묶어 보겠습니다. 시작을 돕기 위해, 그래프 워크플로에는 이미 챗봇의 메시지 업데이트를 추적하는 MessagesState와 StateGraph()가 설정되어 있어요. 그래프를 LangGraph 다이어그램으로 렌더링하는 display() 함수도 준비되어 있고, MemorySaver도 가져와 두었습니다.
from langgraph.graph import StateGraph
from langgraph.checkpoint.memory import MemorySaver
workflow = StateGraph(MessagesState)
이 연습은 강의의 일부입니다
LangChain으로 에이전트형 시스템 설계하기
연습 안내
- 라벨
"chatbot"으로call_model을 노드로 추가하고, 라벨"tools"로tool_node를 추가하세요. START노드에서"chatbot"노드로 이어지는 엣지를 정의하세요.should_continue를 사용해"chatbot"노드에서"tools"와END노드로 가는 조건부 엣지를 추가한 뒤,"tools"노드를 다시"chatbot"노드로 연결하세요.MemorySaver()인스턴스를 만들고, 메모리checkpointer를 사용해 워크플로를 애플리케이션으로 컴파일하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Add nodes for chatbot and tools
workflow.add_node("____", ____)
workflow.add_node("____", ____)
# Define an edge connecting START to the chatbot
workflow.add_edge(____, "____")
# Define conditional edges and route "tools" back to "chatbot"
workflow.add_conditional_edges("____", ____, ["____", ____])
workflow.add_edge("____", "____")
# Set up memory and compile the workflow
memory = ____()
app = workflow.____(checkpointer=____)
try:
display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
print("Plot generation failed... falling back to cached asset.")
display_fallback()