AIを盲信するのはやめよう:AIエージェントのハルシネーションを減らす方法
AIエージェントはしばしば間違いを犯します。コードを捏造(ハルシネーション)したり、ビジネスルールを破ったり、誤ったツールを選択したりします。
多くの人は、より優れたプロンプトを使うことでこれを解決しようとします。しかし、それは間違いです。
信頼できるAIエージェントを求めているなら、明確な制約を持ったシステムを設計しなければなりません。「タイピスト(Typist)」から「アーキテクト(Architect)」へと進化する必要があるのです。
タイピスト vs アーキテクト
ほとんどのユーザーはタイピストのように振る舞います:
- 「認証システムを実装して」と依頼する。
- AIが構造、ライブラリ、フォルダ構成を決定する。
- すべての決定がハルシネーションの種になります。
エンジニアはアーキテクトのように振る舞います:
- まず、構造とライブラリを定義する。
- 制約とルールを設定する。
- AIは、あなたが定めた境界内でのみコードを書く。
AIがハルシネーションを起こすのは、コーディングスキルが不足しているからではありません。あなたの頭の中にはあるものの、共有されていないコンテキストを推測しようとするからです。
戦略1:コンテキストファイル
チャットのたびに指示を繰り返すのはやめましょう。設定ファイルを使用して、AIに永続的なフレームワークを与えてください。ツールによって標準が異なります:
• Claude Codeには CLAUDE.md
• オープンソースのエコシステムには AGENTS.md
• Cursorには .cursorrules
• GitHub Copilotには .copilotrules
プロのヒント:中央に1つの AGENTS.md ファイルを作成し、シンボリックリンクを使用することで、他のすべてのファイルが自動的に更新されるようにしましょう。
戦略2:ADR (Architecture Decision Records)
エージェントに何かを作らせる前に、ADRを作成してください。このドキュメントがあれば、AIが「推測」する必要がなくなります。
優れたADRには以下が含まれます:
- 何を構築するかを正確に記述する。
- 作成すべきファイルと、決して触れてはいけないファイルを指定する。
- 使用する具体的な技術スタックとライブラリ。
- 明確な制約(例:「メモリ内に状態を持たない」)。
- エージェントが決定してはならない事項のリスト。
オーケストレーターがADRを受け取ったとき、設計上の決定はすでに完了しています。開発(Developer)エージェントは、単に仕様をコードに変換するだけです。これによりエラーが減り、コードベースの一貫性が保たれます。
信頼できるAIエージェントのワークフロー構築に関するシリーズを開始します。次回以降では、システムプロンプトの構成や高度なエンジニアリング手法について扱います。
