始める無料で始める

複数ツール用のグラフワークフローを作成する

チャットボットのグラフを作るための部品は準備完了です! ここでは、ノード同士の接続をエッジで管理しながら、すべてのノードを1つのワークフローにまとめます。はじめに、チャットボットのメッセージ更新を追跡する MessagesStateStateGraph() を使ったグラフワークフローはすでに用意されています。グラフを 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()
コードを編集して実行