ANTIGRAVITY LABEN
記事一覧/Antigravity 基本
Antigravity 基本/2026-05-11中級

Antigravity で Gemma 4 のツール呼び出しが失敗するとき確認すべき3つのこと

AntigravityでGemma 4のFunction Callingが失敗する原因をパターン別に解説。システムプロンプト設計・スキーマ設計・コンテキスト長の3点から診断・修正する方法を紹介します。

gemma412function-calling5troubleshooting88antigravity435agents90

Antigravity IDE で Gemma 4 をモデルに設定してエージェントにツールを呼び出させようとすると、「ツールを全く呼ばずにテキストで答えてしまう」「呼び出し JSON の形式が壊れているというエラーが出る」「ローカル実行ではうまくいくのに IDE 経由だと失敗する」という3つのパターンで詰まることがあります。

2014年から個人でアプリ開発を続け、累計5,000万ダウンロードを超えるアプリ群の保守や新機能開発に Antigravity を活用していますが、Gemma 4 のツール呼び出し(Function Calling)問題はクラウドモデルとは動作の癖が異なるため、最初に戸惑う部分のひとつです。ここでは3つのパターン別に原因と解決策を整理します。

なぜ Gemma 4 のツール呼び出しは失敗しやすいのか

Gemma 4 は OpenAI 互換の JSON ツール仕様を受け付けますが、いくつかの制約があります。

まずツール使用の自律判断の面では、Gemini Pro 系と比べると「ツールをいつ呼ぶべきか」の判断精度にばらつきがあります。システムプロンプトでツール使用を明示しないと、テキスト回答で済ませようとする傾向が強い傾向があります。

次にJSON スキーマの解釈については、ネストが深いスキーマや enum の複合条件を正確に解釈できないことがあります。ツールの定義を複雑にするほど、呼び出し失敗率が上がります。

さらにローカル実行時のコンテキスト制約として、Ollama や LM Studio 経由で動かす場合、デフォルトのコンテキスト長設定が小さいと、ツール定義の JSON がコンテキスト末尾で切れてしまい、モデルがツールの存在自体を認識できなくなります。

この3点を念頭に置くと、診断が格段に速くなります。

パターン1: ツールを無視してテキスト応答してしまう

症状: Antigravity エージェントがツールを一切呼ばず、自分の知識だけで答えてしまう。

原因: Gemma 4 はシステムプロンプトにツール使用の明示的な指示がないと、ツールが使えるのに使わない判断をすることがあります。

対処法: システムプロンプトにツール優先の指示を加えます。

system_instruction = """
ユーザーの質問に答える際は、利用可能なツールを積極的に使用してください。
情報の取得・計算・外部操作が必要な場合は、必ずツールを呼び出してから回答してください。
自分の知識だけで答えようとしないでください。
"""

Antigravity の AGENTS.md でも同様の設定が可能です。

## ツール使用方針
外部情報が必要なすべての質問では、利用可能なツールを呼び出すこと。
ツールを使わずにテキスト応答のみで解決しようとすることを禁止する。

「ツールを使わない選択肢」を明示的に制限することで、呼び出し率が安定します。

パターン2: JSON 形式エラーが発生する

症状:

Error: Invalid tool_call format: expected JSON object, got malformed output

原因: Gemma 4 が生成するツール呼び出し JSON に、不要なコメント行や末尾カンマが混入することがあります。temperature が高い(0.7以上)場合に特に頻発します。

対処法1: temperature を下げる

Antigravity のモデル設定で temperature0.1〜0.3 に設定します。ツール呼び出しが必要なエージェントタスクでは、創造性より出力の正確性を優先します。

対処法2: ツール定義をシンプルにする

# ❌ 複雑すぎるスキーマ(Gemma 4 で失敗しやすい)
tools = [{
    "name": "search_product",
    "parameters": {
        "type": "object",
        "properties": {
            "query": {
                "type": "string",
                "enum": ["exact", "fuzzy", "regex"]  # enumの複合条件
            },
            "filters": {
                "type": "object",
                "properties": {
                    "category": {"type": "string"},
                    "price_range": {
                        "type": "array",
                        "items": {"type": "number"}  # ネスト3階層以上
                    }
                }
            }
        }
    }
}]
 
# ✅ シンプルなスキーマ(Gemma 4 推奨)
tools = [{
    "name": "search_product",
    "description": "商品を検索します。queryに検索キーワード、categoryに商品カテゴリを指定してください。",
    "parameters": {
        "type": "object",
        "properties": {
            "query": {
                "type": "string",
                "description": "検索キーワード"
            },
            "category": {
                "type": "string",
                "description": "商品カテゴリ(例: electronics, clothing)"
            }
        },
        "required": ["query"]
    }
}]

ネストを1〜2階層に収めてシンプルに設計し直すだけで、成功率が大きく改善するケースがほとんどです。スキーマは「Gemma 4 が確実に読める範囲」で設計するという原則で考えると、複雑な条件を入れたくなる衝動を抑えやすくなります。

パターン3: ローカル実行でツール定義が欠落する

症状: ローカルの Gemma 4(Ollama 経由)では動作するのに、Antigravity IDE 経由で実行すると毎回失敗します。

原因: Antigravity のデフォルトコンテキスト長(4,096〜8,192 トークン)が、ツール定義の JSON + システムプロンプト + 会話履歴の合計トークン数を下回っている場合があります。この状態ではモデルがツールの存在を認識できません。

診断方法: Antigravity のデベロッパーツール(Cmd+Shift+J で起動)の Network タブで、chat completions リクエストのペイロードを確認します。

{
  "model": "gemma4:latest",
  "context_length": 4096,
  "tools": []
}

tools が空配列または存在しない場合、コンテキスト不足が原因です。

対処法: Antigravity のモデル設定で context_length32768 以上に引き上げます。

{
  "models": {
    "gemma4:latest": {
      "context_length": 32768,
      "num_ctx": 32768
    }
  }
}

Ollama 経由の場合は Modelfile でも設定できます。

FROM gemma4
PARAMETER num_ctx 32768

コンテキスト長を増やすとメモリ使用量が増えますので、メモリ不足でクラッシュする場合はGemma 4 の OOM エラー対処法もあわせて参照してください。

それでも解決しない場合

上記3パターンで解決しない場合は、以下を順番に試してみてください。

1. Gemma 4 モデルを最新版に更新する

ollama pull gemma4:latest

古いバージョンでは Function Calling の実装に不具合が含まれていることがあります。

2. structured output(構造化出力)に切り替える

どうしてもツール呼び出しが安定しない場合は、ツール定義を使わず JSON 形式の応答を直接求めるアプローチも検討できます。Antigravity の response_format 設定でスキーマを指定する方法です。

3. クラウドモデルとのハイブリッド構成にする

ローカルの Gemma 4 は「コスト削減・プライバシー確保」の目的で選ぶことが多いですが、Function Calling の信頼性が重要なビジネスロジックには、Gemini 2.5 Flash などのクラウドモデルと使い分けるハイブリッド構成が現実的な選択肢です。ローカルとクラウドをタスク特性で使い分ける設計については、Gemma 4 を使ったエージェント構築の記事も参考になります。

Function Calling 以外のデバッグ全般については、エージェントのデバッグガイドもあわせてご覧ください。

次のアクション

まず temperature: 0.2 の設定とシンプルなツールスキーマの2点から試してください。この2点だけで体感では7割の問題は解決します。残り3割がコンテキスト長の問題ですので、デベロッパーツールでリクエストペイロードを確認するのが最短の診断ルートです。

同じ問題で時間を溶かしている方の参考になれば幸いです。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Antigravity 基本2026-06-16
応答が4倍速くなったエージェントで、並行パイプラインの設計を組み直す
Antigravity CLI が高速モデルに載せ替わったとき、エージェントの並行パイプラインで律速になる場所は移動します。検証・粒度・並行度・コスト上限を、速度を前提に組み直すための実践的な判断軸をまとめました。
Antigravity 基本2026-05-31
Antigravity のエージェントが途中で 429 RESOURCE_EXHAUSTED と出して止まるときの原因と対処
Antigravity でエージェントに長いタスクを任せていると、途中で「429 RESOURCE_EXHAUSTED」と出して手が止まることがあります。これは API のレート制限・クォータ超過のサインです。私が自動運用の現場で踏んだ原因の切り分けと、再発させないための具体的な対処をまとめました。
Antigravity 基本2026-05-28
Antigravity の Google サインインが認証画面から戻らないときの原因と対処
Antigravity 起動直後に Google サインインを押したあとブラウザが回り続けてエディタ側に戻ってこない、という症状に何度も振り回されてきました。コールバックポート・サードパーティ Cookie・古いセッションファイル・プロキシの4観点で切り分け、確実に復帰させる手順をご紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →