ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-04-24上級

Antigravity で Gemma 4 のローカル出力に型安全を取り戻す — GBNF / Outlines / JSON Schema 制約デコードの使い分けを本番設計する

Gemma 4 をローカル推論で動かしながら、Structured Output を 100% 強制する本番設計ガイド。llama.cpp の GBNF 文法、Outlines、JSON Schema を Antigravity のエージェント構築に組み込む実装パターンを徹底解説します。

gemma-420structured-output2constrained-decodinggbnfoutlineslocal-llm16

プレミアム記事

Antigravity でローカル LLM を動かしていて、こんな経験はないでしょうか。「Gemma 4 に JSON で答えて」とお願いしたら、半分は整形された JSON が返ってくるのに、残りは Markdown のコードブロックに包まれていたり、余計な前置き文が付いてきたり、プロパティ名のクォートが抜けていたり。クラウドの Gemini API であれば response_schema で型を強制できますが、ローカル推論の世界では、モデルに「頼む」だけでは本番には耐えられません。

ここで効いてくるのが**制約デコード(constrained decoding)**という考え方です。モデルが次のトークンを選ぶときに、文法的に許される候補だけに絞り込むことで、出力が必ずスキーマに合致するよう物理的に強制します。Gemma 4 のような小型モデルほど、この仕組みがあるかないかで本番適応度が大きく変わります。

ここではllama.cpp / Outlines / vLLM の3系統を横断しながら、Antigravity のエージェントパイプラインに組み込む実装パターンを、私自身が本番で運用してきた判断軸とともにお伝えします。ローカルモデルの出力が壊れた経験のある方に、そのまま投入できるコードと設計の型をお持ち帰りいただければ幸いです。

なぜ Gemma 4 ローカル推論は JSON が壊れやすいのか

原因はシンプルで、Gemma 4 が小型(4B〜9B 相当のパラメータ規模)であるぶん、「自然言語で出力する訓練」と「厳格な構造化出力の訓練」のトレードオフが大きいためです。クラウドの大型モデルであれば、プロンプトで「JSON のみで返答せよ」と書けば十分に動きますが、ローカルモデルは以下のような揺らぎを見せます。

  • プロパティ名を camelCase で指示したのに snake_case で返す
  • 配列の要素数を「最大3つ」と指定しても5つ返してくる
  • 値が null 許容のはずなのに空文字列 "" を入れてくる
  • JSON の前後に「了解しました」「以下が結果です」などの前置きが混じる
  • コードブロック \``json ... ```` に包まれて返ってくる

プロンプトエンジニアリングで対処しようとすると、プロンプトが肥大化し、トークンコストが増え、さらにモデルが指示に疲れて忘れ始めます。これは根本解決ではありません。

制約デコードは、この問題をトークン生成レイヤーで解決します。スキーマが {"name": "string", "age": "int"} なら、{ を出した直後のモデルは "name" というトークン列しか選べず、"name": の後は文字列開始の " しか選べません。つまり文法的に外れることが物理的に不可能になります。

この考え方を押さえたうえで、Antigravity でどう組み込むかを順に見ていきましょう。

3つの選択肢を「用途別」に使い分ける

ローカルモデルに制約デコードをかける主要な選択肢は、大きく3系統あります。Antigravity で使う場合、どれを選ぶかはインフラ構成と性能要件で決まります。

  • llama.cpp + GBNF 文法: .gguf 形式のモデルをローカル CPU/GPU で動かすなら第一候補です。Gemma 4 GGUF が Hugging Face で広く配布されており、M1/M2 Mac でも快適に動作します。GBNF(llama.cpp 独自の BNF 風文法)で直接文法を書きます
  • Outlines(Python ライブラリ): Pydantic や JSON Schema を書けば、内部で自動的に有限状態機械を構築してトークン制約を掛けてくれます。Hugging Face Transformers、vLLM、llama-cpp-python と連携でき、Python 側で完結するのが魅力です
  • vLLM の guided_json / guided_regex: 本番の高スループットサーバーを建てるならこちら。OpenAI 互換 API として動作し、Antigravity からはクラウド API と区別せず呼べます。大量並行リクエストに強いです

私は「開発・検証は Outlines、本番高並列は vLLM、軽量ユーティリティは llama.cpp 直叩き」という使い分けで落ち着いています。理由は、Outlines は Pydantic モデルをそのままスキーマ化できるので、型定義が IDE で効くこと、そして Antigravity の補完が強く効くことです。

選択基準のフローチャート

判断に迷ったら、以下の順で見ていけば外しません。

  • 1 リクエスト数秒の軽いユーティリティ(要約、ラベリング等)→ llama.cpp + GBNF
  • Pydantic で型定義済みの構造がある → Outlines(最短)
  • 秒間10リクエスト超のエージェント本番環境 → vLLM + guided_json
  • GPU が弱い/CPU 推論のみ → llama.cpp 一択

ここから先は、それぞれの具体的な実装を、Antigravity のエージェントパイプラインに組み込む想定で見ていきます。

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

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
「Gemma 4 ローカル推論で JSON フォーマットが壊れる」問題を GBNF 文法+制約デコードで根本から解決し、本番エージェントの信頼性を一段上げる設計を手に入れられます
llama.cpp / Outlines / vLLM guided_json の3系統を『どの場面でどれを選ぶか』の判断軸ごと身につけられます
Antigravity のエージェントパイプラインに組み込む具体的な Python コードと、失敗モード別のフォールバック設計まで、そのまま本番に投入できる形で学べます
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

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

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

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

関連記事

Agents & Manager2026-04-19
Antigravity AIエージェント設計:マルチモーダル対応の本番実装パターン
Google Antigravity(Gemma 4)を使ったマルチモーダルAIエージェントの設計・実装を解説。画像・テキスト統合処理、Function Calling、Tool Use、本番環境での状態管理とエラーハンドリングまで網羅します。
Agents & Manager2026-04-18
Antigravity × Python Structured Output 実践ガイド — Pydantic と Google Gen AI SDK で作る型安全な AI データ抽出パイプライン
Google Gen AI SDK の Structured Output 機能と Pydantic を組み合わせ、LLM 出力を型安全に制御する AI データパイプラインを Antigravity で設計・実装する完全ガイド。スキーマ設計からエラーリカバリ・コスト最適化まで体系的に解説します。
Agents & Manager2026-04-14
Antigravity × AgentKit 2.0 × Gemma 4: コスト8割削減で動くローカルマルチエージェントの本番実装
AgentKit 2.0とGemma 4ローカルモデルを組み合わせ、クラウドAPIコストを8割削減しながら本番品質を維持するマルチエージェントシステムの設計と実装を完全解説。ハイブリッドLLMルーティング・障害耐性・コスト監視まで。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →