複数ツール用のグラフワークフローを作成する
チャットボットのグラフを作るための部品は準備完了です! ここでは、ノード同士の接続をエッジで管理しながら、すべてのノードを1つのワークフローにまとめます。はじめに、チャットボットのメッセージ更新を追跡する MessagesState と StateGraph() を使ったグラフワークフローはすでに用意されています。グラフを LangGraph の図として描画する display() 関数も設定済みで、MemorySaver もインポートされています。
from langgraph.graph import StateGraph
from langgraph.checkpoint.memory import MemorySaver
workflow = StateGraph(MessagesState)
この演習はコースの一部です
LangChainで設計するエージェント型システム
演習の手順
call_modelを"chatbot"というラベルでノードとして追加し、tool_nodeを"tools"というラベルで追加します。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()