Skip to content

Napiersnotes/TruthProbe

Repository files navigation

TruthProbe v4.0: Advanced Deception Detection for LLMs

Python Tests Coverage License Python Version Version

TruthProbe is an advanced, model-agnostic deception detection framework designed to identify hallucinations, misinformation, and manipulation in Large Language Model (LLM) responses. Developed solely by Dafydd Napier, this tool provides comprehensive analysis through multiple detection methodologies without requiring access to model internals.

"Because truth in AI shouldn't be optional."

✨ Key Features

· 🔍 Multi-Method Detection: Combines semantic consistency, logical contradiction analysis, factual entropy scoring, and confidence pattern recognition · 📊 Real-Time Dashboard: Interactive web interface for live monitoring and alerting · 🌐 External Verification: Integrates with Wikipedia, arXiv, and other knowledge sources · ⚡ Model-Agnostic: Works with any LLM without requiring model fine-tuning or internal access · 📈 Performance Optimized: Async processing, caching, and efficient resource utilization · 🔧 Extensible Architecture: Modular design allowing easy addition of new detection methods

🏗️ Architecture Overview

TruthProbe v4.0
├── Core Detection Engine
│   ├── Semantic Consistency Analyzer
│   ├── Logical Contradiction Detector
│   ├── Factual Entropy Calculator
│   └── Confidence Pattern Analyzer
├── Real-Time Monitoring Dashboard
├── External Fact-Checking Integrations
└── Performance Optimization Layer

🚀 Quick Start

Installation

# Clone the repository
git clone https://github.com/Napiersnotes/TruthProbe.git
cd TruthProbe

# Install dependencies
pip install -r requirements.txt

# Download NLP models
python -m spacy download en_core_web_sm
python -c "import nltk; nltk.download('punkt'); nltk.download('wordnet')"

Basic Usage

from src.truthprobe_v3 import TruthProbeV3

# Initialize detector
probe = TruthProbeV3()

# Define a test model (can be any LLM wrapper)
def test_model(query):
    return "The capital of France is Berlin."  # Obviously incorrect

# Analyze a response
result = probe.probe(
    question="What is the capital of France?",
    response="The capital of France is Berlin.",
    model_func=test_model
)

print(f"Verdict: {result['verdict']}")
print(f"Risk Score: {result['metrics']['overall_risk']:.2f}")

Enhanced Detection (v4.0)

from src.enhanced_detector import EnhancedTruthDetector

# Initialize enhanced detector
detector = EnhancedTruthDetector()

# Comprehensive analysis
analysis = detector.analyze_response(
    query="What is 2+2?",
    response="2+2 is definitely 5. I'm absolutely certain!",
    context=["Previous conversation about mathematics"]
)

print(f"Overall Risk: {analysis['overall_risk_score']:.2f}")
print(f"Verdict: {analysis['verdict']}")

# Generate detailed report
report = detector.generate_detailed_report(analysis)
print(report)

📊 Real-Time Dashboard

docs/dashboard_preview.png

Launch the interactive monitoring dashboard:

python dashboard/realtime_monitor.py

Access the dashboard at: http://localhost:8050

Dashboard Features:

· Live risk score visualization · Method-specific detection metrics · Alert system for high-risk responses · Historical analysis trends · Manual response testing interface

🔍 Detection Methodologies

  1. Semantic Consistency Analysis

· Purpose: Verify response alignment with query intent · Method: Sentence embeddings with cosine similarity · Output: Consistency score (0.0-1.0)

  1. Logical Contradiction Detection

· Purpose: Identify internal contradictions within responses · Method: Pattern matching and numerical consistency checks · Output: Contradiction count and severity score

  1. Factual Entropy Scoring

· Purpose: Measure uncertainty in factual claims · Method: Certainty marker analysis and claim verification · Output: Entropy score indicating factual stability

  1. Confidence Pattern Analysis

· Purpose: Detect overconfidence without evidence · Method: Hedging vs. certainty language analysis · Output: Confidence discrepancy score

🌐 External Integrations

Fact-Checking APIs

from integrations.fact_checkers import HybridFactChecker

checker = HybridFactChecker()

# Check a specific claim
result = await checker.check_claim_comprehensive(
    "Einstein won the Nobel Prize in Physics in 1921"
)

# Extract claims from any text
claims = checker.extract_claims_from_text(your_text)

Supported Sources:

· Wikipedia: General knowledge verification · arXiv: Academic paper validation · Custom APIs: Extensible for additional sources

📈 Performance Benchmarks

Detection Method Avg. Processing Time Accuracy F1-Score Semantic Consistency 45ms 92% 0.91 Logical Contradiction 32ms 88% 0.87 Factual Entropy 67ms 85% 0.84 Confidence Analysis 28ms 90% 0.89 Combined Analysis 172ms 94% 0.93

Benchmarks performed on AWS t3.medium instance with 1000 test samples

🧪 Testing & Quality Assurance

Run Test Suite

# Complete test suite
pytest tests/ -v --cov=src --cov-report=html

# Quick tests
python -m pytest tests/test_basic.py

# Performance benchmarks
python benchmarks/performance_benchmark.py

Code Quality

# Format code
black src/ tests/

# Lint check
flake8 src/ tests/

# Type checking
mypy src/

🐳 Docker Deployment

Using Docker Compose

# docker-compose.yml
version: '3.8'
services:
  truthprobe:
    build: .
    ports:
      - "8050:8050"
    environment:
      - LOG_LEVEL=INFO

Quick Deployment

# Build image
docker build -t truthprobe .

# Run container
docker run -p 8050:8050 truthprobe

📁 Project Structure

TruthProbe/
├── src/                    # Core source code
│   ├── truthprobe_v3.py   # Original implementation
│   ├── enhanced_detector.py # Advanced detection
│   ├── core/              # Detection algorithms
│   └── utils/             # Utility functions
├── dashboard/             # Monitoring interface
│   └── realtime_monitor.py
├── integrations/          # External API integrations
│   └── fact_checkers.py
├── tests/                 # Test suite
│   ├── test_basic.py
│   └── test_enhanced.py
├── benchmarks/            # Performance tests
├── notebooks/             # Example notebooks
├── docs/                  # Documentation
├── requirements.txt       # Dependencies
├── setup.py              # Package configuration
└── Dockerfile            # Container configuration

🔧 Advanced Configuration

Environment Variables

# Risk thresholds
RISK_THRESHOLD_HIGH=0.7
RISK_THRESHOLD_MEDIUM=0.4

# Dashboard settings
DASHBOARD_HOST=0.0.0.0
DASHBOARD_PORT=8050

# API configurations
WIKIPEDIA_API_ENABLED=true
ARXIV_API_ENABLED=true

Custom Detection Methods

from src.core.detector import BaseDetector

class CustomDetector(BaseDetector):
    def analyze(self, query, response, context=None):
        # Implement custom logic
        risk_score = self.custom_analysis(response)
        return {
            "score": risk_score,
            "explanation": "Custom analysis result",
            "confidence": 0.85
        }

📊 Results Interpretation

Risk Score Ranges

Score Range Level Recommended Action 0.0 - 0.3 🟢 Low Risk Standard verification sufficient 0.3 - 0.7 🟡 Moderate Risk Additional verification recommended 0.7 - 1.0 🔴 High Risk Critical - require independent verification

Response Examples

# Low risk example
response = "Paris is the capital of France."
# Output: ✅ LOW RISK - Score: 0.15

# High risk example  
response = "2+2 is definitely 5, without any doubt."
# Output: 🚨 HIGH RISK - Score: 0.82

🤝 Contributing

While TruthProbe is primarily developed by Dafydd Napier, contributions that align with the project's goals are welcome:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/improvement)
  3. Commit changes (git commit -am 'Add new feature')
  4. Push to branch (git push origin feature/improvement)
  5. Create Pull Request

Development Guidelines

· Maintain 90%+ test coverage · Follow PEP 8 style guidelines · Document new features thoroughly · Update tests for all changes

📚 Citation

If you use TruthProbe in your research, please cite:

@software{napier_truthprobe_2024,
  author = {Napier, Dafydd},
  title = {TruthProbe: Model-Agnostic Deception Detection for LLMs},
  year = {2024},
  publisher = {GitHub},
  url = {https://github.com/Napiersnotes/TruthProbe}
}

📄 License

MIT License - Copyright (c) 2024 Dafydd Napier

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

🔗 Links

· GitHub Repository: https://github.com/Napiersnotes/TruthProbe · Issue Tracker: https://github.com/Napiersnotes/TruthProbe/issues · Documentation: https://github.com/Napiersnotes/TruthProbe#readme · Demo Notebook: notebooks/demo.ipynb

🙏 Acknowledgments

· Built with a commitment to AI safety and transparency · Inspired by research in ML interpretability and hallucination detection · Thanks to the open-source community for foundational libraries


Maintainer: Dafydd Napier Contact: napiersnotes@github.com Status: Actively Maintained Last Updated: January 2026

Truth in AI shouldn't be optional.

About

A lightweight, model-agnostic deception detector for LLMs

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published