◉ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
⬡ 連携・プラグイン/2026-06-27中級

エージェントの構造化出力を、スキーマ検証と限定リペアで後段に渡す

Antigravity のエージェントが返す JSON を、そのまま後続の自動処理へ渡して事故が起きる前に、JSON Schema 検証と回数制限つきリペアループで安全な境界を作る設計を、実装コードとともにまとめました。

Antigravity377integrations21JSON-Schemavalidation3agent-design9

✦ プレミアム記事

エージェントに「次の記事の候補を JSON で返して」と頼んだら、ほとんどの場合はきれいな JSON が返ってきます。ほとんどの場合は、です。週に一度くらい、説明文の前置きが混ざったり、末尾がカンマで終わったり、level に "beginner-intermediate" という存在しない値が入ったりします。

問題は、その壊れた一件が後続の自動処理に流れ込むことです。私は個人開発で複数のサイトを一人で運用していて、エージェントの出力を受けて MDX を組み立てる処理が動いています。JSON のパースが失敗すれば、その回の生成はまるごと無駄になります。賢いモデルでも、出力の境界に検証を置かない限り、この事故はゼロになりません。

エージェント出力は「信頼できない入力」である

最初に持つべき心構えは、エージェントの出力を外部からの入力と同じ扱いにすることです。

Web フォームから来た値を検証なしで DB に入れる人はいません。それなのに、生成 AI の出力はなぜか無検証で後段に渡してしまいがちです。出力が言語的に流暢だと、つい構造も正しいと錯覚するからです。流暢さと正しさは別物です。境界に検証レイヤを一枚置くだけで、後段のコードは「正しい形だけが来る」前提で書けるようになります。

JSON Schema で「形」を契約にする

まず、後段が期待する形をスキーマとして明文化します。プロンプトのなかの曖昧な日本語ではなく、機械が判定できる契約にします。

ARTICLE_PLAN_SCHEMA = {
    "type": "object",
    "required": ["title", "slug", "category", "level", "tags"],
    "additionalProperties": False,
    "properties": {
        "title": {"type": "string", "minLength": 8, "maxLength": 60},
        "slug": {"type": "string", "pattern": "^[a-z0-9-]+$"},
        "category": {"enum": ["agents", "integrations", "tips", "editor"]},
        "level": {"enum": ["beginner", "intermediate", "advanced"]},
        "tags": {
            "type": "array",
            "items": {"type": "string"},
            "minItems": 2,
            "maxItems": 6,
        },
    },
}

enum で level を3値に固定し、pattern で slug にピリオドや大文字が混ざらないようにしています。additionalProperties: False も重要で、モデルが気を利かせて余計なキーを足してきたら弾きます。スキーマは、プロンプトに書いた「お願い」を、破れない「約束」へ格上げする道具です。

✦

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

この記事の続きを読む

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

この記事で得られること
✦エージェント出力を信頼境界として扱い、検証なしで後段へ渡さないための具体的なレイヤ設計
✦JSON Schema で型と必須項目を固め、壊れた出力を回数制限(最大2回)つきで自己修復させるリペアループの実装
✦無限リペアやコスト暴走を防ぐ、失敗時のフォールバックとログ設計の実例
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 連携・プラグイン2026-09-20
10月5日に止まる antigravity-preview-05-2026、差し替えで済む構成と済まない構成
antigravity-preview-05-2026 の停止日が10月5日に決まりました。公式が示すのは日付と後継名だけです。output_text だけを読む構成なら差し替えで終わり、steps を読む構成なら改修が要ります。その分かれ目を切り替え前に確かめる手順です。
⬡ 連携・プラグイン2026-09-18
MCP が欠けたまま始まったセッションを、どこで止めるか
MCP サーバーの初期化に失敗したまま始まったセッションで、エージェントは黙って別の手段に落ちます。ツールが本当に見えているかを手元で確かめる小さなスクリプトと、欠けていたときに取る三つの分岐をあらかじめ決めておく話です。
⬡ 連携・プラグイン2026-09-05
GOOGLE_GEMINI_BASE_URL を差し替えても、鍵の持ち主は変わりません
Antigravity CLI の宛先を自前のゲートウェイへ向けたとき、手元の API キーがどこまで運ばれるかを受け側で記録しました。クロスホストのリダイレクトで Authorization は落ちるのに API キーヘッダーは残る、という挙動差の実測と、鍵を端末から外すゲートウェイの組み方を書き残します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます