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"
}'
応答には抽出された主張、取得された証拠、および最終判断(TRUE、FALSE、UNVERIFIABLE)が含まれます。
📂 リポジトリ構成
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_k、evidence_min_similarity、evidence_entity_gate)を選択。 - プロバイダーの切り替えはJSONの編集だけで可能。コードは起動時に自動読み込み。
🐞 既知の問題とトラブルシューティング
- モデルがフリーズまたは空の応答 – Ollamaサービスが実行中か確認(
ollama list)し、model_config.jsonのbase_urlが正しいか確認。 - 検索結果なし – ネットワーク接続を確認。
ddgsラッパーは複数のDuckDuckGoバックエンドにフォールバック。すべて失敗した場合は、オプションのSearXNGバックエンドを有効化。 - 検証不能の判断 – 類似度閾値が高すぎる、またはエンティティゲートで候補がすべてフィルタリングされた可能性。
evidence_min_similarityを調整するか、evidence_entity_gateをfalseに設定。 - 多言語出力の問題 – 選択したLLMが対象言語をサポートしているか確認。より大きなOpenAIモデルは4言語をより確実に処理。
📄 ライセンス
MIT – LICENSEを参照。
TL;DR – このリポジトリは、LLMプロンプト、意味的検索、複数ステップ検証を統合した、ローカルホスト可能なAI事実検証システムを提供。ウェブUI、API、多言語対応を備え、実用的なAIソフトウェアプロジェクトです。
関連
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト
- プロジェクト