|

Gemini 3.1 Pro Customtoolsとは?5分でわかるカスタムツール優先モデルの使い方

多くの開発者が gemini-3.1-pro-preview-customtools というモデル名を見て、「customtools とはどういう意味か? 標準の gemini-3.1-pro-preview と何が違うのか?」と困惑します。この記事では、5分でその疑問を完全に解消します。

核心価値: この記事を読み終える頃には、標準版と customtools 版の使い分け、そしてエージェント開発における正しい選択方法が理解できているはずです。

gemini-3-1-pro-preview-customtools-agent-guide-ja 图示


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 種類の能力を登録します:

  1. Bash/コード実行: モデルに直接 shell コマンドを実行させる能力。
  2. カスタムツール (Custom Tools): 開発者が定義した view_filesearch_codecreate_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-preview and the model ignores your custom tools in favor of bash commands, try the gemini-3.1-pro-preview-customtools model 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 フレームワークの関係

gemini-3-1-pro-preview-customtools-agent-guide-ja 图示

主要な 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") を呼び出す 登録されたカスタムツールを優先的に使用します

どちらの方法でもファイル内容を取得できますが、カスタムツールの呼び出しを介することには以下の利点があります。

  1. 権限管理: view_file ツール内で、パスがホワイトリストに含まれているかチェックできます。
  2. フォーマット済み出力: ツール側で生のテキストではなく、構造化された JSON を返すことができます。
  3. ログ監査: ツール呼び出しがフレームワークによって自動的に記録されます。
  4. エラーハンドリング: bash のエラーではなく、ユーザーに分かりやすいエラーメッセージを提供できます。

gemini-3-1-pro-preview-customtools-agent-guide-ja 图示


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版はほぼ常に優れた選択肢となるでしょう。


参考文献

  1. Google AI ドキュメント: Gemini 3.1 Pro Preview モデルページ

    • リンク: ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview
    • 説明: 標準版と customtools 版の比較説明が含まれています。
  2. Gemini API Changelog: 2026年2月19日の更新

    • リンク: ai.google.dev/gemini-api/docs/changelog
    • 説明: customtools バリアントの初回リリース記録。
  3. Gemini 3 開発者ガイド: FAQにおけるツール選択のアドバイス

    • リンク: ai.google.dev/gemini-api/docs/gemini-3
    • 説明: 標準版から customtools 版へいつ切り替えるべきかについて。
  4. 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 呼び出し

類似投稿