始める無料で始める

LLM の応答を返す関数を作成する

あなたのチャットボットには、すでに多くのツールが用意されています。ただし、チャットボットに追加したツールと無関係な質問には、LLM 単体で応答させることも依然として有用です。ここでは、会話の最後のメッセージにツール呼び出しが含まれているかを確認する関数を定義します。もしツール呼び出しがなければ、チャットボットは単純に LLM を使って回答を返します。ユーザーからの問い合わせとチャットボットの応答の両方を扱えるように、次のモジュールがインポートされています。

from langchain_core.messages import AIMessage, HumanMessage

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

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

コースを見る

演習の手順

  • "messages" を使って state から最後のメッセージにアクセスします。
  • last_messageAIMessage であり、かつそのメッセージが tool_calls を持つかどうかを確認する条件文を書きます。
  • 条件を満たす場合は、last_messagetool_calls から最初の "response" を取り出し、AIMessagecontent フィールドに設定して返します。
  • 条件を満たさない場合は、model_with_tools.invoke() を適用し、state["messages"] から会話履歴全体を渡してレスポンスを生成します。

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

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

# Extract the last message from the history
def call_model(state: MessagesState):
    ____ = ____["____"][____]

    # If the last message has tool calls, return the tool's response
    if isinstance(____, ____) and ____.____:
        
        # Return only the messages from the tool call
        return {"messages": [____(content=____.____[0]["____"])]}
    
    # Otherwise, proceed with a regular LLM response
    return {"messages": [____.____(____["____"])]}
コードを編集して実行