複数ツール向けに出力を構成する
チャットボットのグラフは準備完了です! これから、異なるツールを要するさまざまなクエリで動作をテストしてみましょう。チャットボットのメッセージ管理のために、次のモジュールはすでにインポート済みで、config パラメータは 1 セッション用に設定されています。
from langchain_core.messages import AIMessage, HumanMessage
config = {"configurable": {"thread_id": "1"}}
この演習はコースの一部です
LangChainで設計するエージェント型システム
演習の手順
- ユーザーの
queryをHumanMessageのcontentとして含むinputsメッセージ辞書を作成します。 .stream()メソッドを使って、inputsとconfigを組み込みながら結果を反復し、チャットボットappからmsgとmetadataをストリーミングします。- 各
msgにcontentがあり、かつHumanMessageでないことを確認したら、即時に出力されるようflush=Trueを指定してそのcontentを表示します。 - 異なるツールを必要とするクエリでチャットボットをテストするため、
multi_tool_output()を使って実行します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create input message with the user's query
def multi_tool_output(____):
inputs = {"messages": [____(____=____)]}
# Stream messages and metadata from the chatbot application
for ____, ____ in app.____(____, ____, stream_mode="messages"):
# Check if the message has content and is not from a human
if ____.____ and not isinstance(____, ____):
print(____.____, end="", flush=____)
print("\n")
# Call the chatbot with different tools
____("Is `may a moody baby doom a yam` a palindrome?")
____("What happened on 20th July, 1969?")