CaptainYifei/fake-news-detector

基于LLM和证据检索的虚假新闻自动检测系统

📚 プロジェクト概要

AI 仮ニュース検出器 – ユーザーがニュース記事の事実性を検証できる、Streamlitベースのウェブアプリ。大規模言語モデル(LLM)のプロンプト処理、意味的埋め込み検索、複数ステップの主張検証を連携して実行します。中国語、英語、日本語、韓国語に対応し、Ollama、LM Studio、OpenAI、またはカスタムAPIなど、OpenAI互換モデルサービスと連携可能です。


🔑 主要機能

機能 機能内容
多言語対応 入力言語を自動検出でき、出力結果を中国語、英語、日本語、韓国語のいずれかで表示可能。
3ノードの事実検証パイプライン 1️⃣ LLMを使用して記事から核心的な主張を抽出。2️⃣ クエリの再作成、Web証拠の取得(デフォルトはDuckDuckGo、SearXNGはオプション)、BGE‑M3埋め込みによるランク付け、類似度およびエンティティ一致によるフィルタリング。3️⃣ 主張を原子的な文に分解し、証拠に基づいて回答、最終的な判断を集約。
モデル非依存バックエンド Ollama(デフォルト:Qwen2.5‑3B + BGE‑M3)、LM Studio、OpenAI GPTモデル、またはOpenAI APIスキーマに準拠する任意のサービスと連携可能。
証拠ゲート 設定可能なtop‑K、類似度閾値、エンティティゲートにより、高品質なソースのみが検証ステップに到達するよう制御。
ユーザーとデータ管理 マルチユーザー認証、ローカルDBに保存される履歴、検証レポートのPDFエクスポート。
API ウェブUI機能をプログラム的に利用可能な軽量RESTエンドポイント(/check)を提供。

🛠️ クイックスタート(Linux/macOS)

# 1. クローン
git clone https://github.com/CaptainYifei/fake-news-detector.git
cd fake-news-detector

# 2. Python依存関係のインストール(Python 3.12+必須)
pip install -r requirements.txt

# 3. Ollamaのインストールと実行(推奨)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5:3b   # LLM
ollama pull bge-m3:latest # 埋め込みモデル

# 4. (オプション)model_config.jsonで異なる検索バックエンドを設定

# 5. UIの起動
streamlit run app.py

ブラウザで http://localhost:8501 を開いてください。


📡 APIの利用方法

python api.py   # ポート8080でサーバーを起動

curl -X POST http://localhost:8080/check \
  -H "Content-Type: application/json" \
  -d '{
        "text": "ニュース本文…",
        "api_base": "http://localhost:11434/v1",
        "model": "qwen2.5:3b",
        "embedding_model": "bge-m3:latest",
        "search_engine": "duckduckgo"
      }'

応答には抽出された主張、取得された証拠、および最終判断(TRUEFALSEUNVERIFIABLE)が含まれます。


📂 リポジトリ構成

fake-news-detector/
├─ app.py                # Streamlitフロントエンド
├─ api.py                # RESTサービス
├─ fact_checker.py       # 3ノードのオーケストレーション
├─ fact_checking/        # ノード実装
├─ model_manager.py      # 設定読み込みとLLM/埋め込みクライアント作成
├─ model_config.json     # プロバイダー、モデル、検索のデフォルト設定
├─ auth.py, db_utils.py  # ユーザー認証とSQLiteヘルパー
├─ pdf_export.py         # PDFレポート生成
├─ requirements.txt
└─ docs/ …               # 使用ガイド、APIドキュメント、スクリーンショット

📦 設定のハイライト(model_config.json

  • プロバイダー – Ollama、LM Studioなどに対するベースURLとモデルIDを定義。
  • デフォルト – 使用するLLM/埋め込みモデル、検索エンジン、出力言語、証拠フィルタリングの閾値(evidence_top_kevidence_min_similarityevidence_entity_gate)を選択。
  • プロバイダーの切り替えはJSONの編集だけで可能。コードは起動時に自動読み込み。

🐞 既知の問題とトラブルシューティング

  • モデルがフリーズまたは空の応答 – Ollamaサービスが実行中か確認(ollama list)し、model_config.jsonbase_urlが正しいか確認。
  • 検索結果なし – ネットワーク接続を確認。ddgsラッパーは複数のDuckDuckGoバックエンドにフォールバック。すべて失敗した場合は、オプションのSearXNGバックエンドを有効化。
  • 検証不能の判断 – 類似度閾値が高すぎる、またはエンティティゲートで候補がすべてフィルタリングされた可能性。evidence_min_similarityを調整するか、evidence_entity_gatefalseに設定。
  • 多言語出力の問題 – 選択したLLMが対象言語をサポートしているか確認。より大きなOpenAIモデルは4言語をより確実に処理。

📄 ライセンス

MIT – LICENSEを参照。


TL;DR – このリポジトリは、LLMプロンプト、意味的検索、複数ステップ検証を統合した、ローカルホスト可能なAI事実検証システムを提供。ウェブUI、API、多言語対応を備え、実用的なAIソフトウェアプロジェクトです。

関連

  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト