· Prompt Engineering

ChatGPTとClaudeのハルシネーションを完全に防ぐ!実務で使えるシステムプロンプトの極意

1. AIの回答精度崩壊と業務停滞の緊急事態

丸の内のオフィスで、朝一番の定例ミーティングまであと20分に迫っていた時のことです。急ぎで必要になったデータ収集用のPythonスクリプトをChatGPTに作成してもらったのですが、出力されたコードをそのまま実行した瞬間、コンソール画面に真っ赤なエラーログが滝のように流れ落ちてきました。調べてみると、AIが平然と使っていたのは数年前に完全に非推奨となった古いバージョンのライブラリ構文でした。さらに、存在しない架空のメソッドまで自作して組み込んでおり、デバッグに時間を取られて結局冷や汗をかくハメになりました。

このように、ChatGPTやClaudeなどの生成AIは、もっともらしい顔をして存在しない古い仕様や架空の関数を出力する「ハルシネーション」を頻繁に起こします。特にプログラミングやデータ分析の現場において、この嘘の情報は致命的な手戻りを生みます。今回は、AIのこの「適当なことを言う癖」を根底から封じ込め、実務で正確無比な出力を得るためのシステムプロンプト設計術を解説します。

Best System Prompts to Stop ChatGPT and Claude from Hallucinating Data Prompt Guide

なぜAIは嘘のコードや架空のデータを出力してしまうのでしょうか。その根底にある原因は、モデルが学習した大量のテキストデータの中に、古い情報と新しい情報が混在していることにあります。普通のチャット形式で「Pythonでスクリプトを書いて」と指示すると、AIは確率的に最も出現しやすいトークンを繋ぎ合わせるため、過去の古いブログ記事や廃棄されたドキュメントに含まれる構文を引っ張り出してきてしまうのです。

これを防ぐためには、単に「正確に書いて」とお願いするのではなく、システムプロンプトの段階でAIの行動規範と参照すべき制約をガチガチに固定する必要があります。APIやFunction Callingの設計思想を応用し、AIに厳格なルールを課すのが最も効果的です。

【アーキテクトの知見】 ハルシネーション対策の基本は「知らないことは知らないと言わせる仕組み」をプロンプトに組み込むことです。AIに「推測するな、確認しろ、最新の標準を使え」とシステムレベルで命令することで、嘘の出力を劇的に減らすことができます。

それでは、実際にChatGPTやClaudeのカスタム指示、あるいはシステムプロンプト欄にそのままコピペして使えるマスターテンプレートを紹介します。

# 役割と基本方針
あなたは熟練したシニアソフトウェアエンジニアであり、正確性と堅牢性を最優先するコード生成の専門家です。ハルシネーション(嘘の情報の生成)を絶対に起こしてはなりません。

# 厳格な制約事項
1. 最新バージョンの遵守:
   指定された言語やライブラリについて、現在サポートされている最新の安定版バージョンの仕様のみを使用してください。古いバージョンや廃止された構文の使用は厳禁です。
2. 不確実な情報の排除:
   メソッド名、引数、モジュール構造について確証がない場合は、勝手に推測してコードを補完せず、必ずその旨を宣言するか、公式ドキュメントで確認が取れている部分のみを出力してください。
3. 検証可能なコードの提供:
   出力するコードは、そのまま実行環境に貼り付けてエラーなく動作するものに限ります。プレースホルダーや省略形を使う場合は、明確にコメントアウトで示してください。
4. 不明点の事前確認:
   要件や前提条件に曖昧な点がある場合は、コードを書く前に必ず質問を返してください。

# 出力フォーマット
- コードブロックには必ず使用しているライブラリ名とバージョンを明記してください。
- 動作保証ができない外部モジュールに依存する場合は、そのリスクをコードの直前に太字で警告してください。

このプロンプトを適用する際のポイントは、タスクを依頼する際にも「現在使用しているライブラリのバージョンは〇〇です」と具体的なコンテキストを毎回軽く添えることです。これによって、システムプロンプトの「最新バージョンの遵守」というルールが強力に働き、古い構文の混入を防ぐことができます。

さらに実務の現場で安全性を高めるための応用テクニックとして、Claudeのアーティファクト機能やChatGPTの高度なデータ分析機能を活用する際は、出力の検証ステップをプロンプト内に明示的に組み込むことが有効です。例えば、「コードを生成したあと、想定されるエラーハンドリングが網羅されているかを自己検証した上で最終出力を作成せよ」という一文を追加するだけで、AIの出力品質は一段と向上します。

日常の開発やデータ処理のストレスを劇的に減らすために、ぜひ今日の業務からこのシステムプロンプトを導入してみてください。

Q1. システムプロンプトを設定しても、たまに古いライブラリの構文が出てきてしまいます。どうすればいいですか?

A1. システムプロンプトに加えて、ユーザーからの個別プロンプトの冒頭に「使用するライブラリの公式最新ドキュメントの仕様に基づき、非推奨メソッドは一切使わないこと」と再度念押しすることで、精度をさらに高めることができます。

Q2. ChatGPTとClaudeのどちらの方がハルシネーションが少ないですか?

A2. Claudeは長文のコンテキスト理解や厳密な制約の遵守において優れており、システムプロンプトの指示を忠実に守る傾向があります。一方、ChatGPTは柔軟なコード生成が得意ですが、どちらのモデルを使う場合でも今回紹介したような明確な制約プロンプトが不可欠です。

Q3. このプロンプトを使うと回答のスピードが落ちたりしませんか?

A3. プロンプトの文字数が増えるため処理にわずかなオーバーヘッドが生じる可能性はありますが、人間側がデバッグにかける時間やエラー対応のコストと比較すれば、トータルの作業時間は圧倒的に短縮されます。安全性を取る価値は十分にあります。

Share:
Back to Blog