始める無料で始める

メモリでマルチターンの会話を有効化する

もうすぐ、このチャットボットの更新版を学校の運営側に共有できます! 学習体験をスムーズにするには、学生が追問できるようにすることが重要です。こうすることで、最初の回答で不足があった場合でも、会話を通じて質問を言い換えられます。ここでは、チャットボットのストリーミング関数をマルチターン対応にし、ユーザーのクエリとチャットボットの回答の両方を表示するように変更します。メモリを有効化するために、追問があると LangGraph は会話全体を LLM に送信します。はじめに、1 人のユーザー向けに config パラメータはすでに設定されています。

config = {"configurable": {"thread_id": "1"}}

この演習はコースの一部です

LangChainで設計するエージェント型システム

コースを見る

演習の手順

  • 各ターンでは、まず queries リストからユーザーの query を出力します。
  • app.stream() を使って msgmetadata を反復処理し、config とともに、HumanMessagecontentquery を渡し、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)
コードを編集して実行