Claudeに調べものを頼んだとき、もっともらしい回答が返ってきた。
しかし、よく確認するとソースが存在しなかった。
そんな経験はないでしょうか。
これは「ハルシネーション」と呼ばれる現象です。
AIが事実に基づかない情報を、さも本当のように生成してしまう問題を指します。
実は、Anthropicの公式ドキュメントに、この問題を大幅に軽減する方法が記載されています。
しかも、ずっと前から公開されていました。
にもかかわらず、多くのユーザーがその存在を知らなかったのです。
先日、Reddit(r/ClaudeAI)で、このドキュメントを偶然発見した投稿が大きな話題になりました。
本記事では、その投稿とコミュニティの議論をもとに、Claudeのハルシネーション対策を掘り下げていきます。
公式ドキュメントに眠っていた3つの指示
Anthropicは「Reduce hallucinations」というタイトルのページを公開しています。
ハルシネーション軽減のためのプロンプト技法をまとめたものです。
Redditの投稿者は、このページを偶然見つけました。
そして、記載された3つのシステムプロンプト指示を試したところ、出力の品質が根本的に変わったと報告しています。
その3つの指示とは何か。順番に見ていきましょう。
1. 「わからない」と言う許可を与える
AIモデルには、何を聞かれても回答を出そうとする傾向があります。
知識が不足していても、もっともらしい文章を生成してしまう。
これがハルシネーションの大きな原因です。
この指示では、Claudeに「情報が不十分なら『わからない』と答えていい」と明示的に伝えます。
シンプルな話に聞こえるでしょう。
しかし、たったこれだけで、知識のギャップを架空の情報で埋める行動が大幅に減ったと、多くのユーザーが報告しています。
あるRedditユーザーは、カスタマーサポートボットにこの指示を適用した結果を共有していました。
導入前は、FAQに載っていない質問にも自信満々に回答を捏造していたそうです。
しかし導入後は、ほぼ完全にその問題が解消されたとのことでした。
2. 引用による検証を求める
すべての主張にソースを求める指示です。
ソースが見つからなければ、その主張を撤回するよう求めます。
この指示を有効にすると、面白い現象が起きます。
それまで権威あるように聞こえていた記述が、出力からごっそり消えるのです。
つまり、根拠のない情報がどれだけ混ざっていたかが浮き彫りになったとも言えるでしょう。
3. 直接引用による事実の固定
長文ドキュメント(2万トークン以上)を扱う作業で、特に効果を発揮する指示です。
分析や回答を行う前に、まずドキュメントから原文をそのまま抽出させます。
なぜこれが必要なのか。
AIが要約や言い換えを行う過程で、原文の意味が微妙にずれていく現象が起きるためです。
これは「パラフレーズ・ドリフト」と呼ばれます。
先に原文を固定しておけば、このずれを防げるわけです。
なぜデフォルトで有効にしないのか
Redditのコメント欄で最も多かった疑問がこれでした。
「こんなに効果があるなら、最初から全部オンにしておけばいいのでは?」と。
答えはシンプルです。
正確性と創造性は、トレードオフの関係にあります。
ある論文(arXiv 2307.02185)によれば、引用の制約を課すと創造的な出力が約15〜20%低下するとのことです。
コーディングやブレインストーミング、クリエイティブライティングといった用途では、この制約がかえって邪魔になります。
Redditのコメントでも、あるユーザーがこの点を端的に指摘していました。
Claudeの主要な用途はソフトウェア開発であり、そこでは無から有を生み出すことが求められる。
まだ書かれていないコードに引用を求めるのはナンセンスだ、と。
つまり、Anthropicの判断は理にかなっています。
万人向けの汎用ツールだからこそ、ユースケースに応じてユーザー自身がチューニングする設計にしているのです。
実践的な使い方:リサーチモードの切り替え
Reddit投稿者が提案した、最も実用的なアプローチがあります。
「リサーチモード」のトグル(切り替え)です。
調査や検証が必要な作業時には、3つの指示をすべて有効化する。
そして、創造的な作業に移るときは通常モードに戻す。
この運用が効果的だったとのことです。
具体的な実装方法について、コミュニティではいくつかのアプローチが議論されました。
- プロジェクトの指示フィールドにテキストファイルとして設定する
- スラッシュコマンド(/researchなど)で動的に切り替えるスキルを作成する
投稿者自身も最終的に、この仕組みをGitHubリポジトリとして公開しています。
また、別の有用なテクニックも紹介されていました。
「推論を行う場合は、それが推論であると明示的にラベル付けせよ」という追加指示です。
事実と推論の境界が曖昧になりがちな場面で、この一文が効果を発揮するとのことでした。
「信頼度スコア」を求めるのは有効か
コメント欄では、Claudeに「信頼度○○%」と回答させるアイデアも議論されました。
しかし、コミュニティの意見ははっきりしていました。
やめたほうがいい、と。
理由は明快です。
モデルが出力する「信頼度」は、実際の内部的な確信度とは無関係だからです。
人間が「たぶん90%くらい合ってる」と言うときを想像してみてください。
実際にはよくわかっていなくても、なんとなくそう言ってしまう。
それと同じで、モデルの出す数字自体がハルシネーションの一種になりかねません。
あるユーザーの指摘が的確でした。
「この出力は前の入力に続くべきだという確信」と「回答内容が事実として正しいという確信」は、全く別物だということです。
もう一つの現実的な課題
技術的には優れたアプローチでも、実際の運用では別の壁にぶつかります。
コンテキストウィンドウが大きくなるにつれて、Claudeがシステムプロンプトの指示を忠実に守り続ける保証がなくなるという問題です。
長い会話を重ねるうちに、冒頭で設定したルールの効力が薄れてくる。
この課題はプロンプトエンジニアリングだけでは解決が難しく、コミュニティでも根深い問題として認識されていました。
まとめ
Anthropicの公式ドキュメントに記載された3つの指示は、Claudeのハルシネーションを大幅に減らす効果があります。
「わからない」と言う許可を与えること。
引用による検証を求めること。
そして、直接引用で事実を固定すること。
個別でも効果はありますが、3つを組み合わせると出力の信頼性が根本的に向上します。
ただし、常時有効にするのが正解ではありません。
創造的な作業には不向きな面があるため、リサーチモードとして切り替える運用が現実的でしょう。
興味深いのは、この情報がずっと公開されていたのに、多くの人が気づいていなかった事実です。
AIツールの性能は、モデル自体の能力だけで決まりません。
使い手がツールの特性を理解し、適切にチューニングするかどうかで、得られる結果は大きく変わります。
公式ドキュメントには、まだ知られていない有用な情報が埋もれているかもしれません。一度じっくり目を通してみる価値はあるでしょう。
