多くの開発者が gemini-3.1-pro-preview-customtools というモデル名を見て、「customtools とはどういう意味か? 標準の gemini-3.1-pro-preview と何が違うのか?」と困惑します。この記事では、5分でその疑問を完全に解消します。
核心価値: この記事を読み終える頃には、標準版と customtools 版の使い分け、そしてエージェント開発における正しい選択方法が理解できているはずです。

Gemini 3.1 Pro Customtools とは
一言で説明すると
gemini-3.1-pro-preview-customtools は、Google が 2026 年 2 月 19 日に標準版 Gemini 3.1 Pro と同時にリリースした専用のバリアントモデルです。標準版との唯一かつ核心的な違いは、デフォルトで bash コマンドを実行するのではなく、登録されたカスタムツールを優先的に使用する点にあります。
Google 公式の Changelog には次のように記されています:
bash とツールの両方を組み合わせて構築しているユーザー向けに、カスタムツールの優先順位付けに優れた、独立したエンドポイント
gemini-3.1-pro-preview-customtoolsをリリースしました。
なぜこのバリアントが必要なのか
エージェント開発において、開発者は通常、モデルに以下の 2 種類の能力を登録します:
- Bash/コード実行: モデルに直接 shell コマンドを実行させる能力。
- カスタムツール (Custom Tools): 開発者が定義した
view_file、search_code、create_prなどの構造化された関数。
ここで問題が発生します。標準版の Gemini 3.1 Pro は時々「手抜き」をして、せっかく設計したカスタムツールをスキップし、直接 bash コマンドでタスクを完了させようとすることがあります。例えば、view_file ツールを登録していても、モデルがツールを介さずに cat filename.py を直接実行してしまうといったケースです。
これは、特定のシナリオで問題となります:
- カスタムツールには権限管理やログ記録が組み込まれている場合がある。
- カスタムツールの戻り値は構造化されており、後続の処理に適している。
- カスタムツールが外部システム(データベース、API など)に接続されている場合がある。
customtools バリアントは、まさにこの問題を解決するために生まれました。モデルに、登録されたツールを優先的に選択させるためのものです。
Gemini 3.1 Pro 標準版 vs Customtools 版の主な違い
| 比較項目 | 標準版 | Customtools 版 |
|---|---|---|
| モデル ID | gemini-3.1-pro-preview |
gemini-3.1-pro-preview-customtools |
| リリース日 | 2026.2.19 | 2026.2.19 (同時リリース) |
| 推論能力 | ARC-AGI-2 77.1% | 同じ |
| コーディング能力 | SWE-Bench 80.6% | 同じ |
| コンテキストウィンドウ | 1,048,576 tokens | 同じ |
| 最大出力 | 65,536 tokens | 同じ |
| 入力料金 | $2.00 / 1M tokens | 同じ |
| 出力料金 | $12.00 / 1M tokens | 同じ |
| ツール呼び出しの挙動 | bashを優先する可能性がある | カスタムツールを優先的に使用 |
| 推奨シーン | 汎用的な推論、コーディング、分析 | エージェント開発、ツールのオーケストレーション |
| 品質に関する説明 | すべてのシーンでバランスが取れている | ツールを使用しないシーンでは、わずかな品質の変動がある可能性あり |
🎯 重要なポイント: 2つのモデルの「知能レベル」は完全に同じです。違いは、「bashを使うべきか、登録されたカスタムツールを使うべきか」という選択を迫られた際、Customtools 版の方がよりカスタムツールを選択する傾向が強いという点にあります。
Gemini 3.1 Pro Customtools が必要なシーン
Customtools が必要なシーン
| シーン | 必要な理由 | 具体例 |
|---|---|---|
| AI コーディングアシスタント | 構造化された view_file、edit_file などのツールが必要 | Claude Code、Cursor などの製品 |
| DevOps エージェント | bashを直接実行するのではなく、ツール経由で CI/CD システムを操作する必要がある | 自動デプロイ、コードレビューボット |
| MCP ワークフロー | MCP ツールプロトコルを登録したエージェント | 多段階のワークフロー・オーケストレーション |
| 権限管理が必要なエージェント | カスタムツール内に権限チェックが組み込まれている | 企業向けエージェントアプリケーション |
| 構造化ログが必要なエージェント | 記録や監査のために、ツール呼び出しの形式が適している | コンプライアンス要件が高いシーン |
Customtools が不要なシーン
| シーン | 標準版で十分な理由 | 原因 |
|---|---|---|
| 一般的な会話・Q&A | gemini-3.1-pro-preview |
ツール呼び出しを伴わない |
| テキスト分析・翻訳 | gemini-3.1-pro-preview |
純粋なテキストの入出力のみ |
| コード生成 (ツールなし) | gemini-3.1-pro-preview |
モデルが直接コードを書くだけでよいため |
| 簡単な bash スクリプト実行 | gemini-3.1-pro-preview |
そのまま bash を使いたい場合 |
Google の公式推奨事項
Google は Gemini 3 開発者ガイドの FAQ で次のように述べています。
If you are using
gemini-3.1-pro-previewand the model ignores your custom tools in favor of bash commands, try thegemini-3.1-pro-preview-customtoolsmodel instead.(意訳:もし
gemini-3.1-pro-previewを使用していて、モデルがカスタムツールを無視して bash コマンドを優先してしまう場合は、代わりにgemini-3.1-pro-preview-customtoolsモデルを試してみてください。)
Gemini 3.1 Pro Customtools API 呼び出し方法
基本的な呼び出し:標準版と全く同じ
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # APIYI 統合インターフェース
)
# モデル名を変更するだけで、他のコードは一切変える必要はありません
response = client.chat.completions.create(
model="gemini-3.1-pro-preview-customtools",
messages=[
{"role": "user", "content": "プロジェクト内の main.py ファイルの内容を確認するのを手伝ってください"}
]
)
print(response.choices[0].message.content)
カスタムツールを使用した Agent の呼び出し
customtools 版の真の威力は、function calling と組み合わせた時に発揮されます。
import openai
import json
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # APIYI 統合インターフェース
)
# カスタムツールの定義
tools = [
{
"type": "function",
"function": {
"name": "view_file",
"description": "指定されたファイルの内容を表示する",
"parameters": {
"type": "object",
"properties": {
"file_path": {
"type": "string",
"description": "ファイルパス"
}
},
"required": ["file_path"]
}
}
},
{
"type": "function",
"function": {
"name": "search_code",
"description": "コードベース内でキーワードを検索する",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "検索キーワード"
},
"file_pattern": {
"type": "string",
"description": "ファイルマッチングパターン(例:*.py)"
}
},
"required": ["query"]
}
}
}
]
# customtools 版は、上記で定義したツールを優先的に使用します
response = client.chat.completions.create(
model="gemini-3.1-pro-preview-customtools",
messages=[
{"role": "user", "content": "プロジェクト内で TODO を含むすべての Python ファイルを見つけてください"}
],
tools=tools
)
# モデルは直接 grep するのではなく、search_code ツールを呼び出します
tool_call = response.choices[0].message.tool_calls[0]
print(f"ツール: {tool_call.function.name}")
print(f"引数: {tool_call.function.arguments}")
Agent ループの完全なコードを表示
import openai
import json
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1"
)
tools = [
{
"type": "function",
"function": {
"name": "view_file",
"description": "指定されたファイルの内容を表示する",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "ファイルパス"}
},
"required": ["file_path"]
}
}
},
{
"type": "function",
"function": {
"name": "search_code",
"description": "コードベース内でキーワードを検索する",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "検索キーワード"},
"file_pattern": {"type": "string", "description": "ファイルマッチングパターン"}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "edit_file",
"description": "ファイル内の指定された内容を編集する",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "ファイルパス"},
"old_content": {"type": "string", "description": "置換前の古い内容"},
"new_content": {"type": "string", "description": "新しい内容"}
},
"required": ["file_path", "old_content", "new_content"]
}
}
}
]
# ツールの実行をシミュレート
def execute_tool(name, args):
"""実際のプロジェクトでは、本物のツール実装に置き換えてください"""
if name == "view_file":
return f"ファイル内容: {args['file_path']} (シミュレーション)"
elif name == "search_code":
return f"検索 '{args['query']}' の結果: 3 件のヒット (シミュレーション)"
elif name == "edit_file":
return f"{args['file_path']} 内の内容を置換しました (シミュレーション)"
return "不明なツール"
# Agent メインループ
messages = [{"role": "user", "content": "プロジェクト内のすべての TODO コメントを見つけて修正してください"}]
max_turns = 5
for turn in range(max_turns):
response = client.chat.completions.create(
model="gemini-3.1-pro-preview-customtools",
messages=messages,
tools=tools
)
msg = response.choices[0].message
messages.append(msg)
if msg.tool_calls:
for tc in msg.tool_calls:
args = json.loads(tc.function.arguments)
result = execute_tool(tc.function.name, args)
messages.append({
"role": "tool",
"tool_call_id": tc.id,
"content": result
})
print(f"[Turn {turn+1}] 呼び出し: {tc.function.name}({args})")
else:
print(f"[完了] {msg.content[:200]}")
break
🚀 クイックスタート: APIYI (apiyi.com) プラットフォームを通じて、標準版と customtools 版で同じ API キーを使用できます。model パラメータを変更するだけで切り替えられるため、どちらのバージョンが Agent に適しているかの A/B テストに最適です。
Gemini 3.1 Pro Customtools と Agent フレームワークの関係

主要な Agent フレームワークの適応状況
customtools 版は、以下の Agent 開発シナリオにおいて特に価値があります。
| Agent フレームワーク/シナリオ | 推奨設定 | 理由 |
|---|---|---|
| Claude Code 系のコーディングアシスタント | customtools を推奨 | view_file、edit_file などの構造化ツールが必要なため |
| Cursor / GitHub Copilot | customtools を推奨 | IDE ツールセットを優先的に呼び出す必要があるため |
| MCP プロトコル Agent | customtools を推奨 | MCP で登録されたツールの優先順位を保証する必要があるため |
| LangChain / LlamaIndex | customtools を推奨 | フレームワークで登録された tools を正しく呼び出す必要があるため |
| 純粋なチャットアプリ | 標準版を使用 | ツール呼び出しを伴わないため |
| RAG (検索拡張生成) | 状況による | 検索が function calling を通じて実装されている場合は customtools を使用 |
Gemini 3.1 Pro Customtools と標準版の動作比較
違いをより直感的に理解するために、具体的な例を見てみましょう。
同じリクエストに対する、2つのモデルの異なる反応
ユーザーのリクエスト: 「src/main.py ファイルの内容を確認して」
登録済みツール: view_file(file_path: string)
| モデルのバージョン | モデルの動作 | 説明 |
|---|---|---|
| 標準版 | cat src/main.py を直接実行する可能性がある |
bash でタスクを完了し、独自のツールをスキップします |
| Customtools 版 | view_file("src/main.py") を呼び出す |
登録されたカスタムツールを優先的に使用します |
どちらの方法でもファイル内容を取得できますが、カスタムツールの呼び出しを介することには以下の利点があります。
- 権限管理:
view_fileツール内で、パスがホワイトリストに含まれているかチェックできます。 - フォーマット済み出力: ツール側で生のテキストではなく、構造化された JSON を返すことができます。
- ログ監査: ツール呼び出しがフレームワークによって自動的に記録されます。
- エラーハンドリング: bash のエラーではなく、ユーザーに分かりやすいエラーメッセージを提供できます。

Google Gemini ツール呼び出しモデルの進化
Customtools は、Google が初めてツール呼び出し専用に提供したモデルのバリエーションです。以下は、Google Gemini のツール関連モデルの全体像です。
| モデル | リリース時期 | ツールの種類 | 説明 |
|---|---|---|---|
| Gemini 2.5 Flash | 2025年 | 基本的な Function Calling | 汎用的なツール呼び出し |
| Gemini 3 Pro Preview | 2025年末 | Function Calling | 改良されたツール呼び出し |
| Gemini 3.1 Pro Preview | 2026.2.19 | Function Calling + 並列ツール | 標準版、bash を優先する傾向あり |
| Gemini 3.1 Pro Customtools | 2026.2.19 | Function Calling 優先 | エージェント専用、カスタムツールを優先 |
| Computer Use Preview | 2025年 | GUI 操作 | コンピュータ操作 (実験的) |
| Deep Research Preview | 2025年末 | 検索 + 分析 | ディープリサーチ・エージェント |
これは、Google がモデルをユースケースごとに細分化しようとしていることを示しています。一つの汎用モデルですべてのシナリオをカバーするのではなく、今後はさらに多くの専用バリエーションが登場する可能性があります。
よくある質問
Q1: customtools版は高くなりますか?
いいえ。customtools版と標準版の価格は完全に同じです(入力 $2.00 / 1M tokens、出力 $12.00 / 1M tokens)。APIYI(apiyi.com)プラットフォーム経由で呼び出す場合、両方のバージョンで同じAPIキーを使用でき、追加費用はかかりません。
Q2: customtools版の推論能力は低下しますか?
ほとんど変わりません。Googleは「ツールに関わらないシナリオでは、わずかな品質の変動がある可能性がある」と言及していますが、コアとなる推論能力(ARC-AGI-2 77.1%、SWE-Bench 80.6%)は維持されています。もしあなたのエージェントが主にツールを使用するのであれば、customtools版の方が全体的なパフォーマンスは向上します。
Q3: 標準版からcustomtools版に切り替えるべきタイミングはいつですか?
カスタムツールが利用可能であるにもかかわらず、モデルがタスクを完了するために頻繁にbashコマンドを使用してしまう場合に切り替えるべきです。例えば、view_fileを登録しているのにモデルが常にcatを使ったり、search_codeを登録しているのに常にgrepを使ったりする場合などです。APIYI(apiyi.com)を使えば、2つのバージョンのA/Bテストを素早く行うことができます。
Q4: カスタムツールを全く登録していない場合、customtools版を使う意味はありますか?
意味はありません。カスタムツールを登録しない場合、2つのバージョンの挙動は完全に同じです。customtools版の最適化は、「モデルがbashとカスタムツールのどちらを使うか選択する必要がある」場合にのみ効果を発揮します。
まとめ: Gemini 3.1 Pro Customtools クイックリファレンス
| 質問 | 回答 |
|---|---|
| customtoolsとは? | カスタムツールの使用を優先するGemini 3.1 Proのバリアント |
| 標準版との違いは? | ツール呼び出しの優先順位のみが異なり、推論能力と価格は同じ |
| いつ使うべき? | エージェント開発、MCPの使用、Function Callingツールを登録している時 |
| 使わない方がいいのは? | 純粋な対話、純粋な推論、ツールの呼び出しが関わらない時 |
| バージョン切り替えは可能? | 可能。modelパラメータを変更するだけ |
| 価格は同じ? | 完全に同じ:入力 $2 / 出力 $12 (1M tokensあたり) |
一言で言えば:gemini-3.1-pro-preview-customtools は、Gemini 3.1 Proの「エージェント専用モード」です。直接bashを実行するのではなく、登録されたツールをより忠実に使用するように調整されています。価格も知能も変わらず、ツールの選択戦略だけがエージェント開発により適した形になっています。
APIYI(apiyi.com)プラットフォームを通じて両方のバージョンに同時にアクセスし、実際のプロジェクトでA/Bテストを行って最適な方を選択することをお勧めします。エージェント開発者にとって、customtools版はほぼ常に優れた選択肢となるでしょう。
参考文献
-
Google AI ドキュメント: Gemini 3.1 Pro Preview モデルページ
- リンク:
ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview - 説明: 標準版と customtools 版の比較説明が含まれています。
- リンク:
-
Gemini API Changelog: 2026年2月19日の更新
- リンク:
ai.google.dev/gemini-api/docs/changelog - 説明: customtools バリアントの初回リリース記録。
- リンク:
-
Gemini 3 開発者ガイド: FAQにおけるツール選択のアドバイス
- リンク:
ai.google.dev/gemini-api/docs/gemini-3 - 説明: 標準版から customtools 版へいつ切り替えるべきかについて。
- リンク:
-
Google AI ドキュメント: Function Calling ガイド
- リンク:
ai.google.dev/gemini-api/docs/function-calling - 説明: Gemini モデルの関数呼び出し(Function Calling)APIの詳細。
- リンク:
📝 著者: APIYI Team | 技術的な交流については APIYI apiyi.com をご覧ください
📅 更新日: 2026年2月20日
🏷️ キーワード: gemini-3.1-pro-preview-customtools, カスタムツール, Agent 開発, function calling, ツール呼び出し, API 呼び出し
