メモリでマルチターンの会話を有効化する
もうすぐ、このチャットボットの更新版を学校の運営側に共有できます! 学習体験をスムーズにするには、学生が追問できるようにすることが重要です。こうすることで、最初の回答で不足があった場合でも、会話を通じて質問を言い換えられます。ここでは、チャットボットのストリーミング関数をマルチターン対応にし、ユーザーのクエリとチャットボットの回答の両方を表示するように変更します。メモリを有効化するために、追問があると LangGraph は会話全体を LLM に送信します。はじめに、1 人のユーザー向けに config パラメータはすでに設定されています。
config = {"configurable": {"thread_id": "1"}}
この演習はコースの一部です
LangChainで設計するエージェント型システム
演習の手順
- 各ターンでは、まず
queriesリストからユーザーのqueryを出力します。 app.stream()を使ってmsgとmetadataを反復処理し、configとともに、HumanMessageのcontentにqueryを渡し、msg.contentの値を連結します。- チャットボットの応答を取り出すために、
HumanMessageとラベル付けされたmsgを除外してmsg.contentを出力し、次のクエリの前に新しい行を追加します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Print the user query first for every interaction
def user_agent_multiturn(queries):
for ____ in ____:
print(f"User: {____}")
# Stream through messages corresponding to queries, excluding metadata
print("Agent: " + "".join(____.____ for ____, ____ in app.____(
{"messages": [____(____=_____)]}, config, stream_mode="messages")
# Filter out the human messages to print agent messages
if ____.____ and not isinstance(____, ____)) + "____")
queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
"What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)