LangChainでAIエージェントを開発する基本は、create_agentへモデル、ツール、指示を渡し、モデルがツールを選ぶ実行ループを作ることです。 短いコードで動かせますが、安全性はツールの説明、入力スキーマ、権限、停止条件で決まります。最初は検索などの読み取りツールを一つだけ接続し、呼び出し内容を追えるようにします。
AIエージェント開発を体系的に学びたい方は、AIエージェントが学べるおすすめスクールで、AI活用、Python実装、マンツーマン支援の違いを比較できます。
| 設定項目 | 決める内容 | 失敗しやすい例 |
|---|---|---|
| model | 利用するモデルと設定 | 能力を確認せず選ぶ |
| tools | 許可する関数と説明 | 似た道具を大量に渡す |
| system_prompt | 役割、制約、終了条件 | 目的だけを書いて禁止事項がない |
| context | 実行時に渡す依存情報 | 秘密情報を会話へ混ぜる |
| middleware | 監視、承認、動的制御 | 後から一括で足そうとする |
create_agentで実行ループの土台を作る
LangChainのエージェント公式資料によると、エージェントはモデルとツールを組み合わせ、ツール呼び出しを繰り返して最終出力または停止条件へ到達します。create_agentで作るエージェントはLangGraph上で動きます。
基本構成。
from langchain.agents import create_agent
agent = create_agent(
model=model,
tools=[search_inventory],
system_prompt="在庫を検索し、見つからない場合は推測しない",
)
result = agent.invoke({
"messages": [{"role": "user", "content": "青い在庫を3件探して"}]
})
この段階では、在庫更新や発注まで加えません。検索が正しい引数で呼ばれ、結果なしを正しく扱い、規定条件で終わることを確認します。
ツール名と説明で使い分けを明確にする
LangChainのツール公式資料では、ツールを入力と出力が定義された呼び出し可能な機能として扱います。モデルはツール名、説明、引数スキーマを手掛かりに、呼び出すかどうかと引数を判断します。
悪い例は、searchとfindのように用途が重なる道具を同時に渡すこと。良い例は、search_product_catalogへ「商品マスターを商品名と色で検索する。注文履歴には使わない」と対象外まで書くことです。
ツール定義の確認順。
- 一つの動詞と一つの対象を名前にする
- 使う場面と使わない場面を説明する
- 引数の型、範囲、必須項目を絞る
- 成功と失敗を区別できる値を返す
- 外部更新には承認を追加する
LangChainの概要資料では、LangChainを高水準のエージェント構築基盤、LangGraphを低水準のオーケストレーション基盤として位置付けています。既定のループで足りる間はLangChainを使い、細かな状態遷移が必要になったらLangGraphを検討できます。
実行時情報と会話履歴を混同しない
利用者のメッセージ、会話履歴、認証済みユーザーID、データベース接続は性質が異なります。秘密情報や接続オブジェクトをプロンプトへ書かず、実行時コンテキストからツールへ渡します。
| 情報 | 渡す場所 | 理由 |
|---|---|---|
| 利用者の依頼 | messages | モデルが意味を判断する |
| 操作ルール | system prompt | 毎回適用する |
| 接続情報 | 実行時context | モデルへ見せない |
| 一時的な検索結果 | state | 次の処理へ引き継ぐ |
| 監査用情報 | ログ | 後から追跡する |
LangChainのランタイム資料では、実行時コンテキスト、状態、ストアなどをツールやミドルウェアから利用する方法が説明されています。情報の置き場所を分けると、権限判定と監査がしやすくなります。
通常系より誤ったツール選択を検証する
正しい依頼で一度動いただけでは、ツール連携を評価できません。存在しない商品、許可外の顧客、曖昧な数量、ツール障害、連続呼び出しを試し、拒否または停止できるかを確認します。
Anthropicのエージェント設計ガイドは、単純な構成から始め、必要なときだけ複雑さを増す考え方を示しています。ツール数を増やす前に、既存ツールの説明、入力、結果、停止を整える方が原因を見つけやすくなります。
AIエージェントにツールを使わせる設計では、関数定義だけでなく、最小権限と承認を含めた考え方を確認できます。
LangChainのAIエージェント開発でよくある質問
LangChainを使えばLangGraphの知識は不要ですか?
基本的なツール呼び出しはLangChainの高水準APIで始められます。ただし途中状態の保存、複雑な分岐、人の承認後の再開を細かく制御する場合、基盤であるLangGraphの概念を知ると挙動を理解しやすくなります。
ツールはいくつまで追加できますか?
技術上の上限だけでなく、モデルが用途を区別できる数かで判断します。似た名前や重複した機能が増えるほど誤選択の原因になるため、業務単位で絞り、必要なら専門エージェントへ分けます。
プロンプトだけで危険な操作を禁止できますか?
指示は重要ですが、確実な権限制御ではありません。更新ツール自体を許可対象へ限定し、引数検証、認証、人の承認、回数上限を実行側に置いて、モデルの判断とシステムの許可を分けます。
LangChainではツールの境界から設計する
LangChainはエージェントループを短く実装できますが、道具の意味と権限まで自動で決めてはくれません。ツールを少数に絞り、モデルが選ぶ範囲とコードが拒否する範囲を分けます。
create_agentへモデル、ツール、指示を渡す- ツール名、説明、引数で用途を重複させない
- 秘密情報と接続は実行時コンテキストへ分ける
- 誤選択、権限外、障害、連続呼び出しを試す
状態保存や承認後の再開を明示したい方は、LangGraphによる状態管理と分岐設計へ進むと、ループの内部をグラフとして整理できます。




