ページ作成日時:2026-06-25 13:46 JST
最終更新日時:2026-06-30 00:01 JST
はじめに
平易版では、外部ツールを「記憶ではなく、行為可能性である」と説明した。Notion、Gmail、Google Drive、GitHub、Web検索。これらは、AIの中に保存された記憶ではない。AIが必要に応じて読みに行き、場合によっては書き込みに行く場所である。
AIがツールを使うとは、単に「ボタンを選んで押す」ことではない。ツールの存在、説明、引数、権限、実行結果が、AIの文脈に入り込み、AIの行動空間そのものを変える。この回では、外部ツールを、ツール呼び出し(tool calling)とツール発見レイヤー(tool discovery layer)という観点から整理する。
1. ツールとは何か
ここでいうツール(tools)とは、モデルの外側にある機能や情報源を、モデルが利用できる形にしたものである。Web検索、ファイル検索、Gmail検索、Google Calendarの予定作成、Notionページ作成、GitHub Issue取得、関数実行、データベース検索、外部API呼び出しなどがある。
ツールは、LLMのモデル本体に含まれる知識ではない。モデル本体は、言葉の反応傾向を持っている。一方、ツールは、モデルの外側にある世界へアクセスする経路である。モデルは文章を生成できるが、現在の天気、Gmailの中身、Notionへの書き込みは、外部ツールを通じて行う。
2. ツール呼び出しとは何か
ツール呼び出し(tool calling)とは、モデルが外部機能を使うために、あるツールを選び、必要な引数を組み立て、その実行を要求する仕組みである。ユーザーが「明日の東京の天気を調べて」と言ったとき、モデル本体だけでは明日の天気を正確に知ることはできない。そこで、天気ツールやWeb検索が使えるなら、そのツールを呼び出す判断をする。
このときモデルは、ツール名、説明、必要な引数を見て、自然言語の依頼を外部機能の実行形式へ変換している。人間から見ると「調べて」の一言でも、AIの実行環境では、どのツールを使うか、どんな引数にするか、実行結果をどう扱うか、という段階に分かれる。
3. 関数呼び出しという基本形
関数呼び出し(function calling)とは、開発者があらかじめ定義した関数を、モデルが必要に応じて呼び出せるようにする仕組みである。顧客IDから注文履歴を取得する、指定都市の天気を取得する、社内データベースから文書を検索する、予定をカレンダーに登録する、といった関数が考えられる。
ここで重要なのは、モデルが関数の中身を持っているわけではないという点である。モデルは関数の説明を読み、「この関数はこういうときに使える」と判断し、自然言語から必要な引数を構成する。実際の実行は、APIやアプリケーション側の環境が担う。
4. ツールスキーマとは何か
ツールスキーマ(tool schema)とは、そのツールが何をするものか、どう使うかを定義したものである。ツール名、説明、使うべき場面、必要な引数、引数の型、返り値、禁止条件、読み取り専用か書き込みも行うか、といった情報が含まれる。
ツールスキーマは、中立な説明ではない。説明が広すぎれば、AIはそのツールを過剰に使いやすくなる。説明が狭すぎれば、本来使うべき場面で使わないかもしれない。読み取りと書き込みの違いが曖昧なら、危険な操作につながる。ツールスキーマは、AIが世界へ手を伸ばすときの地図である。
5. ツールレジストリとツール発見レイヤー
ツールレジストリ(tool registry)とは、現在の実行環境で利用できるツールの一覧や定義が置かれている場所である。どんなツールがあるか、それぞれ何ができるか、どう呼び出すか、どの引数が必要か、どの権限が必要か、といった情報が登録されている。
ツール発見レイヤー(tool discovery layer)とは、モデルや実行環境が「どのツールが使えるか」「そのツールにどんな機能があるか」を確認する層である。ユーザーは「Notionに転記して」とだけ言う。しかし実行環境では、Notionツールは使えるのか、ページを作れるのか、既存ページを更新できるのか、検索できるのか、親ページIDやデータベーススキーマが必要なのか、といった確認が必要になることがある。
こうした確認は、ユーザーの目には「余計な前処理」として見えることがある。ユーザーは目的を見ている。AIの実行環境は、目的へ到達するための使用可能な経路を確認している。このズレが、ツール利用の摩擦になる。
6. ツール検索という考え方
ツールが多くなると、すべてのツール定義を最初からモデルに渡すことは文脈を圧迫する。そこで、必要に応じて関連するツールを探し、モデルに見せる仕組みが使われることがある。これを、ここではツール検索(tool search)と呼ぶ。
ツール検索は文脈を節約できる一方、ユーザーの意図とのズレも生む。ユーザーが「このツールだけ使って」と言っても、実行環境側では「まず使えるツールを検索する」段階が入るかもしれない。ユーザーが「ツール一覧を取得しないで」と言っても、実行環境側では「ツールを使うために一覧取得が必要」と判断するかもしれない。
7. MCPとは何か
外部ツールとの接続でよく出てくる言葉に、MCP(Model Context Protocol)がある。MCPは、Anthropicが提唱・公開した、モデルやエージェントが外部のツールやデータ源と接続するためのオープンな標準である。プロトコルとは、通信や連携の約束事である。
ここで注意したいのは、MCPはOpenAI固有のAPI仕様ではないという点である。OpenAIのApps SDKやChatGPT連携の文脈でもMCPは重要になっているが、MCPそのものは、ClaudeやChatGPTなど複数のAIアプリケーションが外部システムと接続するための共通プロトコルとして理解する方がよい。
MCPでは、外部サービス側がツールやリソースを提供し、AI側がそれを一定の形式で発見・呼び出し・利用できるようにする。外部サービスは、AIに対して「読めるもの」「書けるもの」「実行できること」を提供する。つまり、外部サービスは、AIにとっての行動空間の一部になる。
8. コネクタとは何か
コネクタ(connector)とは、ChatGPTやAIシステムと外部サービスを接続する仕組みである。Google Drive、Gmail、Notion、GitHub、Dropboxなどに接続する場合、それぞれのサービスとの認証、権限、検索、読み取り、書き込みの仕組みが必要になる。
コネクタは、AIと外部世界の間にある翻訳装置である。人間の自然言語の依頼を、外部サービスのAPI操作へつなぐ。外部サービスから返ってきた結果を、モデルが読める文脈へ戻す。だから、コネクタはAIが何を見られるか、何をできるか、どこまで実行してよいかを形づくる。
9. 読み取りと書き込みは違う
外部ツールを考えるとき、読み取りと書き込みは必ず分ける必要がある。Notionページを読む、Google Driveの資料を探す、Gmailのメールを検索する、GitHubのIssueを確認する。これは読み取りである。
一方で、Notionにページを作る、Gmailでメールを送る、Google Calendarに予定を作る、GitHubにIssueを作る、ファイルを編集する。これは書き込み、あるいは行為である。書き込みは外部世界を変更するため、より強い確認や権限管理が必要になる。
10. ユーザー許可と実行権限
外部ツールを使うには、外部サービス側の権限と、会話上のユーザー許可の両方が関わる。Gmailを読む権限と送る権限は違う。Notionページを読む権限と作る権限も違う。
技術的にできるからといって、会話上やってよいとは限らない。ユーザーが「下書きだけ」と言っているなら送信してはいけない。ユーザーが「既存ページは触らないで」と言っているなら更新してはいけない。ユーザーが「検索しないで」と言っているなら検索は避けるべきである。
11. ツール結果は、また文脈に戻る
ツールを呼び出すと、結果が返ってくる。検索結果、関連文書、メール本文、Notion作成結果、GitHub Issueなどである。この結果は、モデルの中に恒久的に保存されるわけではない。次の応答を作るための文脈として戻ってくる。
ツール結果もまたプロンプト層の一部になる。検索結果に誤情報が含まれていれば、モデルはそれに影響される。メール本文に命令文が含まれていれば、プロンプトインジェクションの危険がある。Notionページに古い方針が残っていれば、AIはそれを現在の材料として読んでしまう。
12. なぜAIは余計なツールを呼びに行くのか
AIが余計なツールを呼びに行くように見える理由はいくつかある。ツールが見えているから。ツール説明が目的を誘導するから。目的達成のための前処理として必要だと判断するから。文脈上そのツールが目立っているから。ユーザーの目的と実行環境の作業単位が違うからである。
ただし、これは何でも正当化する話ではない。ユーザーが明確に「検索しないで」と言っているなら検索は避けるべきである。ユーザーが「既存ページは触らないで」と言っているなら既存ページ更新は避けるべきである。呼ばずにできない場合は、勝手に進めるのではなく止まるべきである。
13. Notionツール一覧取得問題をどう見るか
このシリーズの背景には、Notionにページを作成してほしいという依頼の途中で、AIがNotion操作に入る前にツール一覧や利用可能な機能を確認しようとした問題がある。ユーザーから見ると、これは余計な前処理であり、さらにその途中でストリームエラーが起きたため、本来の作業が止まった。
技術的には、ここには複数の層がある。ユーザーの指示層、モデルの判断層、ツールレジストリ層、コネクタ層、Notion本体の層、UIやストリーミング応答の層である。ユーザーの意図と、実行環境が必要とみなす前処理が衝突し、さらにその前処理が失敗したことで目的達成が中断された。
理想的には、ユーザーが明確に「そのツール探索はしないで」と言っているなら、AIは勝手に探索せず、「指定された方法では実行できません」と止まるべきである。ツール発見や前処理が失敗した場合も、何が失敗したのか、代替経路があるのかを明示する必要がある。
14. ツールは文脈を圧迫する
外部ツールは便利である。しかし、ツールが増えるほどプロンプト層は重くなる。ツールの説明、引数の説明、使用条件、権限の説明、エラー処理、入力形式、出力形式、禁止事項。これらが、モデルに渡される文脈を占める。
外部ツールはAIを強力にする。しかし、その強力さは文脈負荷を伴う。道具箱が大きくなるほど、作業者は「どの道具を使うか」を考えなければならない。AIも同じである。
15. ツールを使わせる指示と、使わせない指示
ツールを使うAIを安定させるには、使わせる指示だけでなく、使わせない指示も重要になる。「Web検索して」「Notionページを更新して」は使わせる指示である。一方で、「今回はWeb検索しないで」「既存ページは触らないで」「Gmailは読まないで」は使わせない指示である。
使えるツールがあると、それは行動候補になる。だから、「何をするか」だけでなく、「何をしないか」を明示する必要がある。ただし、「Notionに転記して。ただしNotionツールは使わないで」のように矛盾する場合は、AIは無理に実行するのではなく、矛盾を伝えるべきである。
16. ツール経由のAIは、エージェントに近づく
外部ツールを使えるLLMは、検索する、取得する、作成する、更新する、送信する、確認する、再試行する。こうした動きが入ると、AIは単なる文章生成器ではなく、エージェント(agent)に近づく。
ここでいうエージェントとは、意志を持った主体という意味ではない。目標に向かって複数の手順を選び、外部環境へ働きかける実行構造を指している。
17. ツール呼び出しは、文脈設計の一部である
どのツールを見せるか。どのツールを隠すか。どのツールを読み取り専用にするか。どのツールに書き込み権限を与えるか。どの操作に確認を必要とするか。どのツール結果を信用するか。どの作業では検索を禁止するか。どの作業では最新確認を必須にするか。これらは、すべて文脈設計である。
ツールはAIの能力を増やす。しかし、同時にAIの迷い道も増やす。だから、ツールを使うAIには、より精密な作業環境の設計が必要になる。
18. 平易版の結論を技術的に言い換える
平易版では、こう言った。ツールは中立な道具ではなく、AIの行動を誘導する道である。
詳解版では、これを次のように言い換えたい。ツールとは、モデルの外部にある機能やデータ源を、ツールスキーマ、権限、実行結果を通じてプロンプト層に接続する行動インターフェースである。
AIにツールを使わせるとは、道具を追加することではない。AIの行動空間を設計することである。
中心フレーズ
ツールを使うAIを設計するとは、能力を追加することではなく、行動空間を設計することである。
用語メモ
ツール(tools)
モデルの外側にある機能や情報源を、モデルが利用できる形にしたもの。
ツール呼び出し(tool calling)
モデルが外部機能を使うために、ツールを選び、引数を組み立て、実行を要求する仕組み。
関数呼び出し(function calling)
開発者が定義した関数を、モデルが必要に応じて呼び出せるようにする仕組み。
ツールスキーマ(tool schema)
ツール名、説明、引数、返り値、使用条件などを定義したもの。
ツールレジストリ(tool registry)
現在の実行環境で利用可能なツールの一覧や定義が登録されている層。
ツール発見レイヤー(tool discovery layer)
どのツールが使えるか、どんな機能があるかを確認する層。
ツール検索(tool search)
多数のツールの中から、必要なツール定義を検索・取得する仕組み。
MCP(Model Context Protocol)
Anthropicが提唱・公開した、モデルやエージェントが外部ツールやデータ源と接続するためのオープンな標準。
コネクタ(connector)
ChatGPTやAIシステムと外部サービスを接続する仕組み。
実行権限(execution permission)
AIや実行環境が、その操作を実際に行ってよいかどうか。
エージェント(agent)
目標に向かって複数の手順を選び、外部環境へ働きかける実行構造を持つAIシステム。
参考リンク
- OpenAI Platform|Using tools:https://developers.openai.com/api/docs/guides/tools
- OpenAI Platform|Function calling:https://developers.openai.com/api/docs/guides/function-calling
- OpenAI Developers|Apps SDK:https://developers.openai.com/apps-sdk
- Anthropic|Introducing the Model Context Protocol:https://www.anthropic.com/news/model-context-protocol
- Model Context Protocol|What is MCP?:https://modelcontextprotocol.io/docs/getting-started/intro