始める無料で始める

会話履歴に基づいて質問する

LangChain の基本的な ReAct エージェントでは、エージェントの会話履歴を保持することで、後続の質問を行えるようになります。LLM は直前だけでなくそれまでのすべてのメッセージにアクセスできるため、新しい質問に対しても、完全な文脈を踏まえて応答できます。

ここでは、別の三角形の辺についての追加質問をしてみます。

HumanMessage と AIMessage の機能を使えるように、次のモジュールはすでにインポート済みです: HumanMessage, AIMessage

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

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

コースを見る

演習の手順

  • 与えられた自然言語の質問を new_query に代入します。
  • message_historynew_query を含むすべてのメッセージを渡して、app オブジェクトを呼び出します。
  • リスト内包表記を使い、response["messages"] から HumanMessage または AIMessage とラベル付けされたメッセージを抽出します。
  • 新しいクエリを入力として渡し、メッセージのクラスを "agent_output" に渡して抽出結果を出力します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

message_history = response["messages"]
____ = "What about one with sides 12 and 14?"

# Invoke the app with the full message history
response = app.____({"messages": ____ + [("human", ____)]})

# Extract the human and AI messages from the result
filtered_messages = [msg for msg in ____["____"] if isinstance(msg, (____, ____)) and msg.content.strip()]

# Pass the new query as input and print the final outputs
print({
    "user_input": ____,
    "agent_output": [f"{msg.____.____}: {msg.content}" for msg in ____]
})
コードを編集して実行