この記事で学べること

  • LangChainを用いた「Tool Calling Agent」の構造と実装手順
  • 外部ツール(検索や計算)をLLMに実行させるための具体的コード
  • 現場で通用する、エージェントの思考プロセスを制御するテクニック

前提条件

  • Python 3.9以上がインストールされていること
  • OpenAI APIキー(GPT-4o推奨。ケチって古いモデルを使うと、エージェントの推論が壊れるので注意しろ)
  • 基本的なPythonの非同期処理やクラスの知識(説明は省く、自分で調べておけ)

Step 1: 環境準備

まずは依存ライブラリを叩き込む。LangChainは進化が速すぎて、古いドキュメントを参考にするとすぐにエラーを吐く。現時点での最新版に近いパッケージ構成を使え。

# 仮想環境を作成(お節介だが、環境を汚さないのは基本だ)
python -m venv venv
source venv/bin/activate  # Windowsなら venv\Scripts\activate

# 必要なライブラリのインストール
pip install -U langchain langchain-openai langchain-community tavily-python

環境変数にAPIキーを設定する。.envファイルを作るのが一般的だが、ここでは手っ取り早くコマンドで設定する。

export OPENAI_API_KEY="your_openai_api_key_here"
export TAVILY_API_KEY="your_tavily_api_key_here" # 検索ツール用

Step 2: 基本設定

単にチャットさせるだけなら初心者でもできる。ここでは「最新情報を検索し、それを元に回答する」エージェントを構築する。まずは必要なモジュールをインポートし、ツールとLLMを定義する。

import os
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate

# 1. LLMの定義(推論能力が低いモデルだとツール選択を間違えるぞ)
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# 2. ツールの準備
# TavilyはAIエージェントに特化した検索エンジンだ。Google検索より精度が高い。
tools = [TavilySearchResults(max_results=2)]

# 3. プロンプトのテンプレート
# Agentにどのような役割を与えるかを定義する。
prompt = ChatPromptTemplate.from_messages([
    ("system", "あなたはNegi Lab所属の優秀なアシスタントです。必要に応じてツールを使い、正確な情報を提供しなさい。"),
    ("placeholder", "{chat_history}"),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])

# 4. エージェントの構築
agent = create_tool_calling_agent(llm, tools, prompt)

# 5. 実行環境(Executor)の作成
# verbose=Trueにしておかないと、裏で何が起きているか分からずデバッグが詰むぞ。
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

Step 3: 実行と確認

構築したエージェントに、LLMが知らないはずの最新情報を聞いてみる。

# 実行例
response = agent_executor.invoke({"input": "2024年現在のLangChainの最新動向と、エージェント開発のトレンドを要約して。"})

print(f"\n--- 最終回答 ---\n{response['output']}")

実行すると、ターミナルにLLMが「検索ツールを使う」と判断し、検索結果を受け取ってから回答を生成するプロセスが表示されるはずだ。これこそが、単なるLLMではなく「エージェント」である証拠だ。

よくあるエラーと対処法

エラー1: OutputParserException / Tool selection failed

InvalidFormatError: Could not parse LLM output...

解決策: これはLLMがプロンプトで指定されたフォーマット(JSONなど)を無視した場合に起きる。原因の多くはLLMの知能不足(GPT-3.5など)だ。モデルを gpt-4o に上げるか、create_tool_calling_agent を使用しているか確認しろ。旧式の initialize_agent はもう非推奨だ。

エラー2: RateLimitError

openai.RateLimitError: You exceeded your current quota...

解決策: 無料枠や低いティアのAPIキーだと、エージェントの多段思考ですぐに制限に引っかかる。OpenAIの管理画面でクレジットをチャージするか、使用モデルの制限を確認しろ。ビジネスで使うならTier 1以上は必須だ。

まとめと次のステップ

エージェントの基本は「LLM・ツール・プロンプト」の三要素だ。今回作ったのはあくまで基礎。現場で使うなら、以下のステップに進む必要がある。

  1. 独自ツールの作成: 自社のDBを叩く、特定のAPIを操作するなど、@toolデコレータを使って関数を定義しろ。
  2. 記憶の実装: ChatMessageHistory を追加して、過去のやり取りを考慮した推論をさせろ。
  3. LangGraphへの移行: 複雑なループや条件分岐が必要なら、線形なLangChain Agentでは限界が来る。状態管理ができるLangGraphを学べ。

お遊びのチャットボット作りは卒業だ。ツールを使いこなし、実務を自動化するエージェントを構築しろ。


キーワード選定タスク


📚 さらに学習を深めるためのリソース

この記事の内容をより深く理解するために、以下の書籍・教材がおすすめです:

🔍 Amazonで「LangChain 入門書」を検索 🔍 楽天で検索

※上記リンクはアフィリエイトリンクです。