Structured Outputs・コード・型安全
40語
AIの出力をプログラムで安全に扱うための、構造化出力・型・コードの安全性に関わる用語です。JSON Schemaや型検証、業務ルールの検証、エスケープとパラメータ化クエリ、秘密情報の扱い、破壊的操作とドライランなどを扱います。
この分野を読むポイント
形式が正しいことと、内容が正しいことは別です。スキーマで形を保証したうえで、値の妥当性は業務ルールで検証し、実行前にはドライランや確認を挟む二段構えが安全です。
この分野に関連する記事
用語一覧
- Structured Outputs
- モデル出力をJSON Schema等の指定構造へ強く適合させる機能・方式。
- JSON Schema
- JSONデータの型・必須項目・値の制約などを定義するスキーマ仕様。
- JSON
- キーと値で構造化データを表現する軽量データ形式。LLMの出力をJSONとして使う場合は、パースエラー時の処理と型・値の検証を実装する。
- XML
- タグを使って階層構造を表現するデータ形式。
- YAML
- 人間が読みやすい記述を重視した構造化データ形式。インデントの誤りや、パーサーによってはyes/no等が真偽値として解釈される自動型変換で、意図しない解釈が起きやすい。
- Pydantic
- Pythonでデータ型・入力値を検証するためによく使われるライブラリ。
- Zod
- TypeScript/JavaScriptでスキーマ定義・型検証に使われるライブラリ。
- 型安全
- 想定したデータ型以外を扱わないようにし、実行時エラーや誤入力を減らす性質。
- 型検証
- 値が期待する文字列・数値・配列等の型になっているか確認すること。
- 業務バリデーション
- 形式だけでなく、業務ルール上その値が妥当か確認すること。形式が正しいJSONでも、金額の上限や日付の前後関係が業務上誤っている場合がある。
- 構造化データ
- 項目・型・階層など一定の形式で整理されたデータ。
- スキーマ
- データの構造・型・制約を定義した設計。
- enum
- 取り得る値をあらかじめ限定した列挙型・選択肢。自由記述させず選択肢をenumで限定すると、集計や後続処理が安定する。
- 必須項目
- 入力・出力で欠かすことができない項目。
- 入力検証
- 外部入力が形式・範囲・安全条件を満たすか確認すること。AIが生成した値も外部入力と同様に検証の対象とする。
- エスケープ
- 特殊文字を安全な形へ変換し、コードやクエリとして誤解釈されるのを防ぐ処理。
- パラメータ化クエリ
- SQL文と値を分離して渡し、SQLインジェクションを防ぐ実装方式。AIがSQLを組み立てる処理でも、値の埋め込みは文字列連結ではなくパラメータ化で行う。
- SQL
- データベースの検索・更新などを行うための問い合わせ言語。
- SQLインジェクション
- 入力値を悪用して意図しないSQLを実行させる攻撃。AIが生成したSQLや、AIの出力をそのままSQLへ埋め込む処理も攻撃経路になる。
- APIキー
- API利用者を識別・認証する秘密の文字列。プロンプト・コード・ログ・リポジトリに直書きせず、環境変数やSecret管理で扱い、漏えい時は直ちに無効化する。
- 秘密情報
- パスワード・鍵・認証情報など、外部へ漏らしてはいけない情報。AIへの入力やAIが生成したコード・ログに含まれないよう、Secret Scanning等で検出する。
- 最小権限
- 必要な作業に必要な最小限の権限だけを付与する原則。AI AgentやAPIキーにも適用し、読み取りで足りる作業に書き込み権限を与えない。
- null安全
- 値が存在しないケースを想定し、エラーや不正処理を防ぐ設計。
- 非推奨API
- 将来廃止される可能性があり、新規利用が推奨されないAPI。AIは学習時点の古いAPIの書き方を提案することがあるため、公式ドキュメントの現行版で確認する。
- Docker
- アプリと依存環境をコンテナとしてまとめて実行する技術。コンテナは完全な隔離ではないため、信頼できないコードの実行には追加の隔離策を検討する。
- 環境変数
- 設定値や秘密情報をコード本体と分離して渡す仕組み。AI Agentがログやエラー出力に環境変数を表示して秘密情報を漏らすことがあるため、出力のマスキングを行う。
- race condition
- 並行処理の実行順によって結果が不定になる競合状態。
- デッドロック
- 複数処理が互いの資源待ちになり、進行不能になる状態。
- 破壊的操作
- 削除・上書き・強制更新など、復元困難な変更を行う操作。AI Agentに実行させる場合は、ドライラン・バックアップ・人間承認を前提とする。
- ドライラン
- 実際には変更せず、実行予定の処理や影響だけを確認する試行。実行計画を人間が確認してから本実行へ進む運用と組み合わせる。
- バックアップ
- 削除・破損に備えてデータや状態を別に保存すること。取得するだけでなく、実際に復元できるかを定期的に確認する。
- DELETE
- SQL等でデータを削除する命令。誤実行時の影響が大きい破壊的操作。
- DROP
- データベースの表など構造自体を削除する命令。復元にはバックアップが必要になるため、AI Agentの権限からは原則として除外する。
- rm -rf
- Unix系OSでファイル・ディレクトリを再帰的かつ強制的に削除するコマンド。
- O(n²)
- 入力件数nの二乗に比例して処理量が増える計算量。大規模データでは性能問題になりやすい。
- import
- プログラムで外部モジュールやライブラリを読み込む記述。AIが提案した存在しないパッケージ名に悪性パッケージが登録される攻撃(Slopsquatting)があるため、依存先の実在と提供元を確認する。
- Instructor
- Pydantic等のSchemaを使い、LLMから型付きStructured Outputを取得・Retry・Validationしやすくするライブラリ。
- Outlines
- Grammar、Regex、JSON Schema等を使って生成可能なToken列を制約し、Structured Generationを行うためのライブラリ。
- BAML
- Prompt、Schema、Model設定等を専用言語・Toolingで管理し、型付きLLM FunctionやStructured Outputを開発するためのFramework。
- XGrammar
- JSON Schema、Regex、Context-Free Grammar等に従うStructured Generationを高速に行うオープンソースEngine。vLLM、SGLang、TensorRT-LLM等のInference Engineへ統合されている。
