この記事で学べること
- LangChainにおける「エージェント」の基本構造とツールの持たせ方
- 最新の
create_tool_calling_agentを使用した実装手順 - 外部検索ツール(Tavily)と連携し、最新情報を取得するエージェントの作成
前提条件
- Python 3.9以上がインストールされていること
- OpenAI APIキー(
gpt-4oなどのモデルが利用可能なもの) - Tavily APIキー(Web検索用。無料枠あり)
Step 1: 環境準備
まずは必要なライブラリをインストールする。中途半端なバージョンだと依存関係で死ぬから、一気に最新版を入れておけ。
# ライブラリのインストール
pip install -U langchain langchain-openai langchain-community python-dotenv tavily-python
# プロジェクトディレクトリに移動
mkdir my-agent-lab && cd my-agent-lab
touch .env agent.py
次に、.env ファイルにAPIキーを記述する。これを忘れてコードに直書きするような素人は、この先読み進める必要はない。
OPENAI_API_KEY=sk-xxxx...
TAVILY_API_KEY=tvly-xxxx...
Step 2: 基本設定
エージェントに「道具(Tools)」を定義し、思考エンジンとなるLLMを設定する。今回はWeb検索ツールを装備させる。
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilyAnswer
from langchain import hub
from langchain.agents import AgentExecutor, create_tool_calling_agent
# 環境変数の読み込み
load_dotenv()
# 1. LLMの定義(賢いモデルを使わないとエージェントは迷走する)
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 2. ツールの準備
tools = [TavilyAnswer()]
# 3. プロンプトの取得(公式のリポジトリから定番のものを引っ張る)
prompt = hub.pull("hwchase17/openai-functions-agent")
# 4. エージェントの構築
agent = create_tool_calling_agent(llm, tools, prompt)
# 5. 実行環境(Executor)の作成
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
Step 3: 実行と確認
実際にエージェントを動かしてみる。verbose=True に設定しているから、エージェントがどう「考えて」ツールを選んだかが出力されるはずだ。
# agent.py の末尾に追記
def main():
query = "現在の日本の総理大臣は誰?また、その人物の最近の大きなニュースを1つ教えて。"
print(f"質問: {query}")
response = agent_executor.invoke({"input": query})
print("\n--- 最終回答 ---")
print(response["output"])
if __name__ == "__main__":
main()
実行コマンド:
python agent.py
ログに Invoking: tavily_search_api_answer と出れば成功だ。LLMが自分の知識外だと判断し、ツールを自律的に使った証拠だ。
よくあるエラーと対処法
エラー1: AuthenticationError
openai.AuthenticationError: Error code: 401 - {'message': 'Incorrect API key provided...'}
解決策: .env ファイルが読み込まれていないか、キーが間違っている。os.getenv("OPENAI_API_KEY") が正しく値を取得できているか確認しろ。
エラー2: OutputParserException
langchain_core.exceptions.OutputParserException: Could not parse LLM output...
解決策: temperature が高すぎるとエージェントが勝手なフォーマットで喋り出し、解析に失敗する。エージェントを動かすときは temperature=0 が鉄則だ。
まとめと次のステップ
「エージェント」とは、単なるチャットボットではない。LLMが「自らツールを選ぶ判断力」を持った状態を指す。今回の構成は基本中の基本だが、これを応用すれば「DBからデータを抜く」「ファイルを操作する」「自社APIを叩く」といった複雑なタスクも自動化できる。
次は、LangGraph を使って、より複雑なワークフローや状態管理(State Management)を備えたエージェント構築に挑戦してみるといい。単発の実行だけでは限界があることにすぐ気づくはずだ。
関連商品をチェック
※上記リンクはアフィリエイトリンクです。購入により当サイトに収益が発生する場合があります。






