AIToday
大規模言語モデルHacker News掲載日時: 2026年10月6日 10:01

schema-guard、SQL幻覚対策 動作48/48

LINEで送る
schema-guard、SQL幻覚対策 動作48/48

3つのポイント

  1. 何が起きたか

    schema-guardは実テーブルとカラムのスナップショットをリポジトリに保存し、エージェントのSQLを実行前に照合する。評価ではスナップショットなしで24回中0回、ありで48回中48回だった。

  2. なぜ重要か

    スナップショットがあれば、エージェントが古い情報に基づいて書いたSQLでも、実際のスキーマに存在する名前だけを使うよう修正され、動作する可能性が高まるとみられる。

  3. 注目点

    この評価は小規模で合成された世界であり、古い情報は意図的に設計されている点が焦点だ。Databricksのスナップショットは2026年10月4日にFree Editionでライブ実行された。

誰に効くかAIコーディングエージェントにSQLを書かせるデータ分析担当やデータエンジニアは、エージェントが実在しないカラム名を生成してCIやダッシュボードで失敗するリスクを、スナップショットの導入で減らせる可能性がある。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

コーディングエージェントは、リポジトリ内のREADMEや古いクエリ、命名規則をもとに、実際とは異なるスキーマを前提としたSQLを書いてしまうことがある。Snowflakeの開発者ブログも2026年9月にこの問題を扱っており、schema-guardはその対策として、実テーブルとカラムの名前と型だけをスナップショットとしてリポジトリに保存し、エージェントのSQLを実行前に照合する。スナップショットにはデータや認証情報は含まれず、取得時だけウェアハウスへのアクセスが必要で、エージェントはアクセス権を持たない。評価では、スナップショットがない場合に両モデルとも正しく動作するファイルを1つも書けなかったのに対し、スナップショットがある場合は全ファイルが動作した。残った誤りは名前ではなくロジックによるものだった。フックを使えば、エージェントが自らスナップショットを探さない場合でも、拒否されて名前を修正する流れが機能する。ただし、この評価は小規模で合成された環境であり、古いREADMEの乖離度も意図的に設計されているため、実環境での有効性はスナップショットの鮮度やスキーマの複雑さに左右されるとみられる。

よくある質問
どうやってインストールするのですか?
pip install "schema-guard[duckdb] @ git+https://github.com/idk-arsh/schema-guard" でインストールし、schema-guard snapshot でスナップショットを作成、.schema-guard/schema.json をgitに追加する。
どんなスナップショット取得元に対応していますか?
dbt、DuckDB、SQLite、Postgres、MySQL、Redshift、BigQuery、Snowflake、Databricks、マイグレーションのDDL、CSVエクスポートに対応している。
誤って有効なSQLをブロックすることはありますか?
Spider devの1,034クエリとdefog sql-evalの960クエリで誤ブロックは0件だった。ただしパースできないSQLや不明なテーブルなど、確信が持てない場合は何も言わない。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

次の記事へHACH開発者、AIエージェントのログ保持は分割を