グラフにツールを追加する
Wikipedia ツールの準備ができました。次は、チャットボットのグラフワークフローに組み込みましょう。ツールを追加のノードとして組み込むために、グラフ内のノードとエッジを変更します。ユーザーの質問内容に応じて、必要なときだけチャットボットがツールを使えるようにグラフを設定します。ツールノードとその関連エッジを管理するために、次のモジュールがインポート済みです。作成済みの wikipedia_tool も環境で利用できます。グラフの構築が完了すると、LangGraph のダイアグラムとして視覚化されます。
from langgraph.prebuilt import ToolNode, tools_condition
この演習はコースの一部です
LangChainで設計するエージェント型システム
演習の手順
.add_node()を使って、"chatbot"ノードをグラフに追加し、chatbot関数に紐づけます。toolsにwikipedia_toolを指定してToolNode()を作成し、.add_node()で"tools"としてグラフに追加します。.add_conditional_edges()を適用し、tools_conditionに基づいて"chatbot"からのルーティングを行います。.add_edge()を使って、"tools"から"chatbot"、STARTから"chatbot"、そして"chatbot"からENDを接続し、ワークフローを完成させます。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add chatbot node to the graph
graph_builder.____("____", ____)
# Create a ToolNode to handle tool calls and add it to the graph
tool_node = ____(tools=[____])
graph_builder.____("tools", ____)
# Set up a condition to direct from chatbot to tool or END node
graph_builder.____("____", ____)
# Connect tools back to chatbot and connect START and END nodes
graph_builder.add_edge("____", "____")
graph_builder.add_edge(____, "chatbot")
graph_builder.add_edge("chatbot", ____)
graph = graph_builder.compile()
try:
display(Image(graph.get_graph().draw_mermaid_png()))
except Exception:
print("Plot generation failed... falling back to cached asset.")
display_fallback()