生成AIに嘘をつかせない、ニュース記事を書かせるプロンプトの解説

AI

「AIにニュースをまとめてもらったら、なんだか内容が不正確…」「ChatGPTがもっともらしい嘘をついて困る…」

そんな経験はありませんか?

AI(大規模言語モデル)は非常に便利ですが、時として事実に基づかない情報(ハルシネーション)を生成してしまうのが大きな課題です。特に、正確性が求められるニュース記事の作成においては、この問題は致命的です。

しかし、ご安心ください。AIへの指示、つまり「プロンプト」を工夫することで、AIのハルシネーションを抑制し、ジャーナリストが書いたような正確なニュース解説を作成させることが可能になります。

この記事では、私が実際に試行錯誤して作り上げた、「ハルシネーション抑制強化型プロンプト」と、そのプロンプトがなぜ効果的なのかを解説します。

この記事を読めば、あなたも今日からAIを「信頼できるニュースアシスタント」として活用できるようになります。

この記事の内容
  • AIに極力ハルシネーションを抑えてニュースを解説させる方法を説明します。
  • curlを使い、API経由でプロンプトを自動実行する方法を説明します。
開発・動作環境

この記事のプログラムは、以下の環境で開発および動作確認を行っています
・動作確認(プロンプト): Gemini、ChatGPT、Claude Sonnet 、Perplexity
・動作検証(CURL): Windows11 + Gemini

AIのハルシネーションを防いだニュース記事を書かせるプロンプト

まずは、ニュース解説させる「プロンプト」をご紹介します。ハルシネーションを極力回避するプロンプトです。以下のボックス内のテキストを全てコピーし、ChatGPTやGeminiなどのAIに貼り付けて使ってみてください。
※現在日:20XX年XX月XX日の部分の修正を忘れずに!

# 指示

あなたは、最高水準のファクトチェック基準を持つ報道ジャーナリストです。
以下の【遵守すべき絶対原則】と【実行プロセス】に厳密に従い、「昨日から現時点までのニュース」の中から、【本日の曜日】に対応するテーマに沿って日本で最も話題となったニュースに関する解説記事を作成してください。

# 遵守すべき絶対原則

## 1. 依拠する情報の原則
* **本日の年月日:** 本日は20XX年XX月XX日です。この年月日を基準として、記事作成のソースとなる本日または昨日の情報を検索してください。
* **原則:** あなたが生成する記事は、NHK、共同通信、時事通信、および全国紙(朝日、読売、毎日、日経、産経)、在京キー局(日テレ、TBS、フジ、テレ朝、テレ東)によって2社以上で報じられた、客観的な事実のみに基づいている必要があります。
* **情報源の除外:** 個人のブログ、SNS、まとめサイトなど、信頼性が確認できないウェブサイトからの情報は、たとえあなたの学習データに含まれていても、今回の回答では絶対に使用しないでください。
* **クロスチェックの義務:** 記事に記載する事実は、2社以上の大手報道機関で共通して報じられているような、確度の高い情報のみに限定してください。

## 2. 推測・解釈の完全排除
* **禁止事項:** あなた自身の意見、感想、分析、憶測、解釈は一切記述しないでください。
* **情報源の明示:** 事実を記述する際は、「(報道機関名)によると」「〜と報じられています」のように、情報が報道に基づいていることを明確にしてください。

## 3. 不確実な情報の取り扱い
* 情報が不足している場合や報道がない事柄については、推測で補完せず、「この点に関する公式発表はありません」「背景についての詳細は報道されていません」のように、情報が存在しないという事実を正確に記述してください。

## 4. 曜日別テーマ
* 「本日」の曜日に該当する、以下のテーマに従って解説するニュースを選定してください。
* 月曜日: **経済**(市場や企業の動向など)
* 火曜日: **国際・政治**(海外の情勢や国内の政治の動きなど)
* 水曜日: **科学・IT・社会**(テクノロジーや環境、科学的な発見、社会問題や生活に関連するトピックなど)
* 木曜日: **経済**(市場や企業の動向など)
* 金曜日: **国際・政治**(海外の情勢や国内の政治の動きなど)
* 土曜日: **科学・IT・社会**(テクノロジーや環境、科学的な発見、社会問題や生活に関連するトピックなど)
* 日曜日: **テーマ無し**(ジャンルを問わず昨日から現時点で最も重要だったニュース)

## 5. 応答フォーマット
* **挨拶の省略:** 「承知いたしました」「わかりました」などの応答前の挨拶や前置きは一切含めず、指示された成果物のみを出力してください。
* **思考プロセスの非表示:** あなたの最終的な応答には、思考の過程(ステップ1〜6の実行内容など)を一切含めず、完成したニュース記事(対訳形式)のみを出力してください。

# 最終的な成果物(記事)の仕様

* **文字数: 日本語部分で500から1000字程度**
* 構成:
    1.  見出し: ニュースの核心を客観的に表すタイトル
    2.  概要: 5W1H(いつ、どこで、誰が、何を、なぜ、どのように)をまとめたリード文
    3.  詳細: 報道されている事実関係を時系列や項目に沿って具体的に記述
    4.  背景・経緯: この出来事につながる、報道済みの過去の経緯
    5.  関係者の反応・コメント: 企業や政府、関係団体などの公式発表や、報道されている主要人物のコメント
    6.  最新の状況: 現時点で報道されている最新の動向
    7.  **対訳形式の翻訳:** 記事は、日本語の一文を生成した直後に改行を挟み、対応する英文を記載する、という形式で**逐次的に生成**してください。
* 文体: 
    * 客観的かつ平易な「です・ます調」。感情的な表現や主観的な形容詞は使用しない。
    * マークダウン記法(`#`や`*`など)は、最終的な記事本文には一切使用しないでください。

# 実行プロセス(思考のステップ)

**ステップ1:テーマに基づいたニュース候補の調査**
まず、「昨日から現時点まで」のニュースの中から、【本日の曜日】に対応するテーマに関連する主要ニュースを検索し、候補を3つ挙げてください。
**重要:** この時点で、各候補が複数の大手報道機関で報じられているかを簡易的に確認してください。

**ステップ2:テーマ検索の評価とフォールバック処理**
ステップ1の候補を評価します。もし、テーマに沿ったニュースで、複数の大手報道機関が報じている有望なものが見つからない場合(報道が少ない、単独報道ばかりなど)、テーマ検索を中止し、このステップ2を実行してください。
**フォールバック:** 【本日の曜日】のテーマを「テーマ無し」として扱い、ジャンルを問わず「昨日から現時点で最も重要だったニュース」を対象に、再度候補を3つ検索し、リストアップしてください。

**ステップ3:最重要ニュースの選定と理由説明**
ステップ1またはステップ2で得られた最終的な候補の中から、「最も話題となったニュース」を1つ選定し、その選定理由を記述してください。

**ステップ4:執筆前のセルフ・ファクトチェックと再試行**
記事を書き始める前に、以下のチェックリストをあなた自身で厳密に確認してください。
* **確認事項1:** 選定したニュースは、架空のものではなく、実際に大手報道機関によって報じられた**実在のニュース**か?
* **確認事項2:** 選定したニュースは、指示された期間内(昨日から現時点まで)に報じられたものか?
* **確認事項3:** 使用する事実は、全て複数の信頼できる情報源で広く報じられている内容か?
* **確認事項4:** 数値、固有名詞、日時に間違いはないか?
* **確認事項5:** 推測的な表現や、自身の解釈が混入する余地はないか?
**判定:**
* **もし全ての確認事項がYESの場合:** ステップ5に進んでください。
* **もし一つでもNOの場合:** このニュース候補は破棄し、**ステップ1に戻って全く別のニュース候補を探し直してください。** このプロセスを、全ての確認事項がYESになるニュースが見つかるまで繰り返してください。

**ステップ5:記事執筆**
上記全ての原則とステップを遵守し、指定された仕様で解説記事を執筆してください。
**重要:執筆プロセスは、必ず日本語の一文を書き、すぐその下に改行して対応する英文を書く、という作業を繰り返して進めてください。**

**ステップ6:最終レビューと最終判断**
執筆完了後、以下の【ハルシネーション検証リスト】に基づき自己評価を行ってください。
* [ ] 全ての記述は、許可された報道機関の情報を根拠としているか?
* [ ] 記事の日付は、指示された期間内(昨日から現時点まで)のものか?
* [ ] 全ての数値、固有名詞、日時は、許可された報道機関の情報を根拠としているか?
* [ ] 記事全体を通して、推測や主観が排除されているか?
**最終判断:**
* **もし全ての項目がYESの場合:** 完成した記事を提出してください。
* **もし一つでもNOの場合:** 生成した記事を破棄し、「指示された条件を満たす、実在するニュースを見つけることができませんでした。理由:[最終レビューでNOとなった具体的な項目名とその理由]」と報告してください。


なお、曜日によってテーマを変えているのは、私の趣味ですので、皆様は好きなようにカスタマイズしてください。

プロンプトで使われている記号について

このプロンプトでは、AIへの指示を分かりやすく構造化するために、いくつかの記号(# ,* )が使われていますので、先にこれを説明します。
#* は元々Markdownの書式記法で、本来は人間の見やすさの為、見出しや箇条書きや強調に使われます。この記述方法を採用する事で、AIにプロンプトの意図をわかりやすく伝えようとしています。この手法は多くのAIのプロンプトで有効です。

  • #(シャープ / ハッシュ) :これは「見出し」を作るための記号です。#の数が増えるほど、より小さな見出しになります。
  • *(アスタリスク) これは主に「箇条書き(リスト)」を作るために使われます。ルールや条件などを一つ一つリストアップすることで、AIが見落とすことなく、各項目を正確に実行するよう促します。
    また、**テキスト**のようにアスタリスク2つで文字を囲むと、その部分が太字になり、特に重要なキーワードをAIに強調して伝える効果があります。

なぜこのプロンプトだとAIは嘘をつかないのか?5つのポイント

ここからはこのプロンプトの解説を行います。

ポイント1:AIに「ジャーナリスト」という役割を与える

あなたは、最高水準のファクトチェック基準を持つ報道ジャーナリストです。

プロンプトの冒頭で、AIに「ジャーナリスト」という明確な役割(ロール)を与えています。これは非常に重要で、AIの振る舞いを方向付ける「おまじない」のようなものです。

単に「ニュースをまとめて」と指示するのではなく、「プロのジャーナリストとして行動してください」と伝えることで、AIは客観性や事実確認を重視するモードに切り替わります。

ポイント2:依拠すべき情報源の原則を定め、嘘の土壌をなくす

原則: あなたが生成する記事は、NHK...によって広く報じられた、客観的な事実のみに基づいている必要があります。

AIのハルシネーションは、不正確な情報を参照することでも起こります。このプロンプトは、AIが持つ知識の中から「信頼できる報道機関からの知識だけを引き出して使う」ように誘導し、嘘の元を断ちます。

ポイント3:「推測」を禁止し、事実だけを書かせる

禁止事項: あなた自身の意見、感想、分析、憶測、解釈は一切記述しないでください。

AIは、情報と情報の間に隙間があると、それを埋めようとしてもっともらしい推測で補完してしまう癖があります。これがハルシネーションの厄介な点です。

このプロンプトでは、「〜と思われる」といった曖昧な表現を具体的にリストアップして禁止することで、AIが憶測で文章を作ることを防ぎます。情報がない場合は、正直に「報道されていません」と書くように指示しているのもポイントです。

ポイント4:AIの思考プロセスを「見える化」させる

# 実行プロセス(思考のステップ)

このプロンプトの最大の特徴の一つが、AIに記事をいきなり書かせるのではなく、段階的なプロセスを踏ませている点です。

  1. ニュース候補をリストアップさせる
  2. その中から1つを選び、理由を説明させる
  3. セルフチェックをさせる
  4. 記事を執筆させる

このように作業を分解し、AIの思考プロセスをユーザーに見せることで、私たちは「AIがなぜこのニュースを選んだのか」「どのような情報を基に記事を書こうとしているのか」を把握できます。これはAIをブラックボックスにせず、透明性を確保するための重要なステップです。

ポイント5:「自己修正ループ」で架空ニュースを排除

もし一つでもNOの場合: このニュース候補は破棄し、ステップ1に戻って全く別のニュース候補を探し直してください。

このプロンプトの最も強力な機能が、この「自己修正ループ」です。 チェックに失敗したら、そのニュースは捨てて、最初から探し直せ」という具体的な行動を命令しています。これにより、AIは実在し、かつ全ての条件を満たすニュースが見つかるまで、自ら情報収集と検証を繰り返します。

ポイント6:「セルフチェック」機能で二重の安全策を講じる

ステップ3:執筆前のセルフ・ファクトチェック
ステップ5:最終レビュー

このプロンプトにはAI自身による「自己検証」のステップが組み込まれています。

記事を書く前と書いた後に、AI自身に「ちゃんと指示を守れていますか?」とチェックリスト形式で確認させているのです。これにより、AIが複雑な指示のいずれかを見落としてしまうのを防ぎ、出力される記事の品質を安定させる効果があります。

さらに、最終レビューでも条件を満たせなかった場合は、「見つかりませんでしたと正直に報告する」ように指示しています。これにより、AIが無理に記事を作成しようとして嘘をつく、という最悪のケースを防ぎます。これはAIに「知ったかぶり」をさせないための重要な安全装置です。

ポイント7:「自動フォールバック機能」で品質を担保する

もし、テーマに沿ったニュースで...有望なものが見つからない場合...テーマ検索を中止し...ジャンルを問わず...再度候補を3つ検索し、リストアップしてください。

このプロンプトの信頼性をこの「フォールバック(代替案実行)機能」で高めます。日によっては、曜日別テーマに合致する大きなニュースがない場合もあります。そのような時に、AIが無理に質の低いニュースや、1社しか報じていないような信憑性の低いニュースを選んでしまうことを防ぎます。

ポイント8:時間基準の明確化(AIの「今日」を補正する)

大規模言語モデルは、学習データのカットオフ時点までの知識しか持っていません。Gemini2.5の場合は、2025年6月にリリースされましたが、それよりかなり前のカットオフ日2025年1月までの知識しか保持していません。プロンプトで単に「今日」や「過去24時間」と指示しただけでは、学習完了時点を「今日」と勘違いし、古い情報を参照してしまう可能性があります。昨今の大手AIは、Webを検索したり独自処理で本日日付を把握できるようにしてありますが、それでも、本日=カットオフ日と判断する事があったり、本日の認識があいまいな事があります。

私の体験ですが、2025年9月27日時点で本日ニュースを大手AIに生成させた際、自民党総裁選予定のニュースを生成してくれましたが、偶然1年前の2024年9月27日も自民党総裁選が実施されていた為にその情報(石破さんが選出)を含めたニセニュースが生成されました。このAIは本日の年「2025年」の概念が希薄で、「9月27日」「自民党総裁選」のキーワードが記載されたニュースソースも採用してしまったのでしょう。

人間でも、2025年に交通事故で気絶して2030年に起きたとしても、本人は本日が2025年だと勘違いしますよね?たとえ周りの新聞やカレンダーに2030年と書いてあっても、記憶は2025年までしかありませんから、しばらくは年を間違えそうです。この点はAIも同じようです。

そこで我々は、AIに対して本日の年月日を理解させる必要があります。
プロンプトの冒頭で「現在は 2025年10月4日です」のように具体的な年月日を明示することで、AIに正確な「本日」を教え、時間的な基準点を固定させることができます。これにより、「昨日」や「過去24時間以内」という指示が正しく機能し、最新の情報を取得する精度が向上します。

【デバッグ編】AIの思考プロセスを確認する方法

このプロンプトは、デフォルトでAIの思考過程を隠し、完成した記事だけを出力するように設計されています。しかし、プロンプトがうまく機能しているか確認したい場合など、あえてAIの思考プロセスを見たい時もあるでしょう。

その場合は、非常に簡単です。 プロンプト本体の以下の部分を一時的に削除してから、AIに指示を出してください。

# 遵守すべき絶対原則

## 5. 応答フォーマット
(中略)
* **思考プロセスの非表示:** あなたの最終的な応答には、思考の過程(ステップ1〜6の実行内容など)を一切含めず、完成したニュース記事(対訳形式)のみを出力してください。

このルールを削除することで、AIは思考のステップを一つずつ文章として出力するようになります。

API経由でプロンプトを自動実行する方法(curl)

毎日ニュース記事を生成したい場合、ブラウザを開いてプロンプトを貼り付ける作業すら自動化したくなりますよね。ここでは、コマンドラインツールcurlを使って、API経由でこのプロンプトを直接実行する方法を解説します。AIにはGoogle Geminiを使う前提です。またWindows PC環境から実行する事を想定します。

1:APIキーを取得する

まず、Google AI for DevelopersからGemini APIキーを取得します。Googleアカウントがあれば、無料で取得できます。

  1. Google AI for Developers にアクセスします。
  2. 「Get API key in Google AI Studio」をクリックし、APIキーを生成・コピーします。

注意: このAPIキーは他人に知られないように厳重に管理してください。

2:APIキーを環境変数に設定する

取得したAPIキーを、PCの「環境変数」に設定します。これにより、バッチファイル等にAPIキーを記載する必要もなくなりますので、セキュリティー上も比較的安心です。

  1. Windowsの検索バーで「環境変数」と入力し、「システム環境変数の編集」を開きます。
  2. 「環境変数」ボタンをクリックします。
  3. 「(ユーザー名)のユーザー環境変数」の「新規」をクリックします。
  4. 変数名に GEMINI_API_KEY 、変数値に先ほどコピーしたあなたのAPIキーを入力し、「OK」をクリックします。

3:実行用のファイルを作成する

適当な作業フォルダ(例:C:\gemini_newsなど)を作成し、その中に以下の2つのファイルを作成します。

1. request.json

このファイルに、AIへの指示(プロンプト)をJSON形式で記述します。{“text”: “・・・”}の部分に、上で説明した指示(プロンプト)内容を張り付けてください。このテキストは、request.jsonという名前で下のバッチファイルと同じフォルダに保存してください。

 {
    "contents": [
      {
        "parts": [
          {"text": "
# 指示
あなたは、最高水準の・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・
* [ ] 記事全体を通して、推測や主観が排除されているか?
         " }
        ]
      }
    ],
    "tools": [
      {
        "google_search": {}
        }
        ],
        "generationConfig": {"temperature": 0.2}
    }


Webの検索機能のパラメータ解説

今回はGeminiのWebの検索機能も有効にしたいので、「”google_search”: {}」の記載を入れています。これがないと、Geminiモデルのナレッジ カットオフ時点(1年前とか)のニュースを回答してきてしまいます。
Google 検索によるグラウンディングの仕組み等、詳しくは次の記事をご覧ください。
https://ai.google.dev/gemini-api/docs/google-search?hl=ja

ハルシネーションを抑制するパラメータ解説

今回はニュース記事なので、ハルシネーションを抑えるようパラメータの調整も行います。上記jsonではtempratureだけ設定していますが、これでもハルシネーションが発生するようなら、他のパラメータの調整も考えましょう。記載方法は、次の記事をご覧ください。
https://ai.google.dev/gemini-api/docs/text-generation?hl=ja

  • temperature (温度) AIの応答の「創造性」や「ランダム性」を調整します。0に近いほど応答が堅実になり、ハルシネーション抑制に繋がります。今回は事実性を最優先するため、0.2という低い値に設定します。
  • topP (トップP) 次の単語を選ぶ際に、確率の高い単語から累積でこの値になるまでの候補に絞り込みます。例えば0.8に設定すると、確率上位80%の単語群の中から次の単語が選ばれます。これにより、突飛な単語が選ばれる可能性を減らし、文脈の安定性を高めます。事実性が重要な場合は0.8程度に設定するのが有効です。
  • topK (トップK) 次の単語を選ぶ際に、最も確率の高い上位K個の単語のみを候補にします。例えば40に設定すると、40個の単語の中から次の単語が選ばれます。これにより、選択肢を大幅に絞り込み、奇抜な応答を防ぎます。

2. run.bat

このファイルが、curlコマンドを実行するためのバッチファイルです。以下の内容をそのままコピーして、run.batという名前で保存してください。

@echo off
rem Google 検索によるグラウンディングを活用して最新情報を取得します

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" ^
  -H "x-goog-api-key: %GEMINI_API_KEY%" ^
  -H "Content-Type: application/json" ^
  -X POST ^
  --data-binary "@request.json"

pause

このbatの例では、gemini2.5-flashを利用していますが、他のモデルを利用しても良いです。
ただし、今回のプロンプトは、ニュースをWebで検索する必要がありますので、Webの検索機能を備えたモデルを選ぶ必要があります。geminiモデルの機能は次のURLに記載されていますので、ご参照ください。
https://ai.google.dev/gemini-api/docs/google-search?hl=ja

ステップ4:バッチファイルを実行する

これで準備は完了です。作成したrun.batファイルをダブルクリックして実行してください。

コマンドプロンプト(黒い画面)が開き、しばらくするとAIからのjson形式の回答(ニュース記事と英訳)が表示されます。表示されたテキストをコピーして、ブログ記事などに活用してください。

全てを自動化するシステムをお考えなら、別途、jsonファイルから必要な情報部分を抽出するプログラムが必要です。それこそAIにに聞けば、プログラムソースをすぐ作ってくれますよ!

ところでGeminiのAPIを利用した場合の料金は?

このようなプロンプトでGeminiのAPIを叩き、ニュース記事を生成していると、料金は発生するのでしょうか?
Gemini APIには、無料枠(Free Tier)と有料(従量課金制)の2つの利用体系に分かれています。
無料枠はGoogle AI Studioを通じて提供されます。次のGoogle AI for Developersページのレート制限を超えると、有料なる仕組みです。
https://ai.google.dev/gemini-api/docs/rate-limits?hl=ja

2025/09/27時点では、Gemini 2.5 Flashの無料枠は、1分あたりのリクエスト数(RPM)が10回、1日あたりのリクエスト数(RPD)が250回と記載されていますので、ニュースを作成する分には無料枠でいけますね。

無料枠のレート制限を超えた場合の金額は、次のページに料金の説明が載っていますので、ご参照ください。
https://ai.google.dev/gemini-api/docs/pricing?hl=ja#standard

まとめ

いかがでしたでしょうか。AIに正確なニュース記事を書かせるプロンプトの秘密は、以下の5つのポイントに集約されます。

  1. 役割を与える: ジャーナリストとして行動させる
  2. 依拠する情報源を定義する: AIの仕様に左右されにくくする
  3. 推測を禁止する: 事実だけを書かせる
  4. プロセスを見える化する: AIの思考を透明にする
  5. 自己検証させる: 指示の遵守を徹底させる

AIは魔法の杖ではありません。しかし、このように人間が賢く「指示」を出すことで、AIは私たちの意図を正確に汲み取り、信頼できる強力なアシスタントになってくれます。

ぜひ、このプロンプトをベースに、あなたのブログ記事作成や情報収集に役立ててみてください

タイトルとURLをコピーしました