2026/08/24

【2026年最新】情報の嘘を見破る!feedparser×OpenAI APIで構築する「複数ソース自動クロス参照&ハルシネーション検知システム」の作り方

はじめに:情報洪水と「AIハルシネーション」にどう立ち向かうか

2026年8月現在、生成AIの進化スピードはますます加速しています。日々多くのAI系ニュースやビジネス動向が発信されていますが、多忙なビジネスパーソンやITエンジニアにとって、溢れかえる情報から「真に信頼できる事実」だけを効率的に抽出することは極めて困難です。

さらに、情報収集をAIに任せる(要約させる)際、最大の障害となるのがハルシネーション(事実誤認や架空情報の生成)です。AIがもっともらしい嘘を混ぜて要約してしまった場合、ビジネス上の重要な意思決定を誤るリスクすらあります。

そこで本記事では、Pythonのfeedparserを用いて複数のRSSフィード(ニュースソース)から同一テーマの記事を自動収集し、OpenAIの最新APIを活用して「複数ソースの相互検証(クロス参照)」を行い、ハルシネーションや誤情報(フェイクニュース)を自動検知して排除する、超高精度なファクトチェックシステムの構築手順を徹底解説します。

システム概要:なぜ「クロス参照(Cross-Referencing)」が有効なのか

単一のWeb記事をAIに要約させるだけでは、その記事自体に含まれる誤報や偏見、またはAI自身のハルシネーションを検知できません。本システムでは、以下の3ステップで信頼性を担保します。

  • 複数ソースの同時取得:同じキーワードやテーマ(例:「Excel Copilot廃止」「TrendLife Kaleida」など)に関する記事を、複数の信頼できるITメディアのRSSフィードから抽出。
  • LLMによるクロス参照:取得した複数ソースの本文を比較し、「共通して言及されている事実(信頼性:高)」と「一方のソースにしかなく、誇張や誤認の疑いがある主張(信頼性:低)」を峻別。
  • ファクトチェックレポートの自動生成:検証結果をスコアリングし、偏りのない構造化されたクリーンな要約を出力します。

構築手順1:開発環境の準備

まずは、RSSフィードの解析に必要なfeedparserと、OpenAI APIを呼び出すためのopenaiライブラリをインストールします。ターミナルで以下のコマンドを実行してください。

pip install feedparser openai requests python-dotenv

※環境変数としてOpenAIのAPIキー(OPENAI_API_KEY)が必要になります。プロジェクトのルートディレクトリに.envファイルを作成し、キーを格納しておいてください。

構築手順2:クロス参照&ファクトチェックプログラムの実装

以下に、複数のRSSフィードから特定のキーワードを含む記事を検索し、それらを比較検証してハルシネーションや矛盾点を炙り出すPythonスクリプトを記述します。

import os
import feedparser
from openai import OpenAI
from dotenv import load_dotenv

# 環境変数の読み込み
load_dotenv()

client = OpenAI(
    api_key=os.environ.get("OPENAI_API_KEY")
)

# 監視対象とする信頼性の高いIT系RSSフィードのリスト
RSS_URLS = [
    "https://forest.watch.impress.co.jp/data/rss/1.0/wf/feed.rdf",  # 窓の杜
    "https://rss.itmedia.co.jp/itmedia/news/rss2.0.xml"              # ITmedia News
]

def fetch_articles_by_keyword(keyword):
    """指定したキーワードを含む記事を複数のRSSフィードから収集する"""
    matched_articles = []
    for url in RSS_URLS:
        feed = feedparser.parse(url)
        for entry in feed.entries:
            title = entry.get("title", "")
            summary = entry.get("summary", "")
            link = entry.get("link", "")
            
            # キーワードがタイトルまたは概要に含まれるか判定
            if keyword.lower() in title.lower() or keyword.lower() in summary.lower():
                matched_articles.append({
                    "source": feed.feed.get("title", url),
                    "title": title,
                    "summary": summary,
                    "link": link
                })
    return matched_articles

def cross_reference_analysis(keyword, articles):
    """収集した複数記事を比較検証し、ファクトチェックと高精度な要約を行う"""
    if len(articles) < 2:
        return "検証に必要なソースが不足しています(2件以上の異なるソースが必要です)。"

    # LLMにインプットするコンテキストを構築
    context_data = ""
    for i, art in enumerate(articles, 1):
        context_data += f"--- ソース {i} : {art['source']} ---\n"
        context_data += f"タイトル: {art['title']}\n"
        context_data += f"内容概要: {art['summary']}\n\n"

    # クロス参照を指示する高度なシステムプロンプト
    system_prompt = (
        "あなたは極めて客観的で厳格なプロのファクトチェッカー兼シニアITアナリストです。\n"
        "提供された同一トピックに関する複数のニュースソースを精査し、以下の形式で分析レポートを作成してください。\n\n"
        "1. 【確実な事実(一致率100%)】: 複数のソースで共通して言及されている客観的事実のみを箇条書きで抽出してください。\n"
        "2. 【不一致・要検証事項(信頼性:低)】: 片方のソースにしか書かれていない主張、またはソース間で数値や日付、ニュアンスに矛盾がある点を厳しく指摘してください。\n"
        "3. 【ハルシネーション・誤報リスク評価】: 総合的な情報の信頼性をA(極めて高い)〜D(疑わしい)で評価し、その理由を述べてください。\n"
        "4. 【統合ファクトチェック要約】: 事実のみに基づいた、ノイズのない洗練された要約を作成してください。"
    )

    user_prompt = f"キーワード: {keyword}\n\n【検証対象ソース】\n{context_data}"

    # 最新モデル (gpt-4o) を呼び出し、推論を実行
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_prompt}
        ],
        temperature=0.1 # 創造性を抑え、事実への忠実性を高める
    )
    return response.choices[0].message.content

if __name__ == "__main__":
    # 例として、直近で話題の「Copilot」関連を検証
    search_keyword = "Copilot"
    print(f"[*] キーワード「{search_keyword}」に関する最新記事を収集中...")
    
    articles = fetch_articles_by_keyword(search_keyword)
    print(f"[*] 検出数: {len(articles)} 件")
    
    if len(articles) >= 2:
        print("[*] 複数ソースを検出。クロス参照ファクトチェックを開始します...\n")
        report = cross_reference_analysis(search_keyword, articles)
        print("==================== ファクトチェックレポート ====================")
        print(report)
    else:
        print("[!] クロス参照を行うのに十分な記事が集まりませんでした。単体要約を実行するか、キーワードを変更してください。")

プロンプトエンジニアリングと運用時の重要テクニック

このシステムを実務で運用する際、ハルシネーション検知の精度をさらに高めるためのコツが3つあります。

  • Temperature(温度)を「0.1」以下に設定する:LLMのパラメータであるtemperatureは、デフォルト(1.0など)のままだと、指示にない情報を「補完」してしまうハルシネーションを起こしやすくなります。ファクトチェックを行う際は、可能な限り0.10に近づけて固定してください。
  • システムプロンプトによる「厳格な役割定義」:LLMに対して「あなたは疑い深いファクトチェッカーである」と役割を与える(ペルソナ指定)ことで、ソース同士のわずかな数値のズレや日付の不整合を正確に見抜きやすくなります。
  • 構造化マークダウンでの出力指示:上記のコードのように「1. 確実な事実」「2. 不一致・要検証事項」のようにアウトプットフォーマットをあらかじめカチッと固定することで、パースエラーを防ぎ、後続の業務システム(Slack通知やデータベース蓄積)とシームレスに連携できます。

導入のメリットと今後の展望

この「複数ソース自動クロス参照&ハルシネーション検知システム」を導入することで、これまで手作業で行っていた「複数タブを開いて記事を読み比べる」という作業をすべてAIに委ねることが可能になります。

これにより、例えば2026年9月に廃止が予定されているExcelの=COPILOT()関数に関する動向や、トレンドマイクロの個人向け最新サービス「TrendLife Kaleida」のリリースといった重要な最新トピックについて、誇大広告や誤った推測を排除した「真実のみの情報」を朝一番で受け取ることができるようになります。

今後は、RSSリーダーの「Feedly API」を統合してカテゴリー全体を自動クローリングさせたり、判定された信頼性スコアをデータベース(Notion等)に蓄積して「マイパーソナル高信頼性ナレッジベース」へと進化させていくことが可能です。ぜひ、本コードをベースにあなたの情報収集パイプラインを自動化・強化してみてください!

関連サイト: https://www.aegis4.net/

【2026年最新】OpenAI「Codex」超進化!コード生成からPC自律操作(Computer Use)までこなす最新機能・導入手順を徹底解説

1. 2026年、Codexは「for (almost) everything」の時代へ AIコーディングの歴史において、OpenAIの Codex は常に中核に位置してきました。そして、2026年4月16日に発表された大型アップデート 「Codex for (almost) ...