AI Bias Detection and Ethics Compliance Agent
Project description
Veritas - AI Bias Detection and Ethics Compliance
A Python package for detecting bias in ML models and checking compliance with AI ethics laws using RAG-powered recommendations.
Features
- Automatic bias detection using IBM AIF360 toolkit
- AI ethics compliance checking via LangGraph ReAct agent
- RAG-powered law lookup from bundled AI ethics knowledge base
- sklearn-compatible wrappers for drop-in integration
- Auto-initialization - knowledge base ingests automatically on first import
Installation
# From PyPI
pip install veritas-ml
# From source
pip install -e .
# With macOS Apple Silicon mutex fix (optional)
pip install veritas-ml[mutex-fix]
# Set API key for LLM provider
export OPENROUTER_API_KEY="your-key-here"
# OR
export GROQ_API_KEY="your-key-here"
Quick Start
Pattern 1: Drop-in sklearn Replacement
from veritas import VeritasClassifier
from sklearn.linear_model import LogisticRegression
# Wrap any sklearn classifier
clf = VeritasClassifier(
base_estimator=LogisticRegression(),
protected_attribute="gender",
run_audit=True,
generate_report=True
)
# Fit with sensitive features
clf.fit(X_train, y_train, sensitive_features=sensitive_train)
# Get reports
print(clf.get_bias_report()) # AIF360 metrics
print(clf.get_compliance_report()) # Mitigation recommendations
Pattern 2: Manual Audit After Training
from veritas import BiasDetector, ComplianceChecker
# Train your model normally
model.fit(X_train, y_train)
# Audit separately
detector = BiasDetector(
protected_attribute="sex",
privileged_classes=["Male"]
)
bias_report = detector.audit(model, X_test, y_test, sensitive_test)
# Check compliance
checker = ComplianceChecker()
compliance_report = checker.check(bias_report)
Pattern 3: Full End-to-End Audit
from veritas import ComplianceChecker
checker = ComplianceChecker()
result = checker.full_audit(
X_train=X_train, y_train=y_train,
X_test=X_test, y_test=y_test,
sensitive_train=sensitive_train,
sensitive_test=sensitive_test,
protected_attribute="sex"
)
print(result["compliance_report"])
Publishing to PyPI
This section documents how to release new versions of veritas-ml to the Python Package Index.
Prerequisites
- PyPI Account: Create an account at https://pypi.org/
- API Token: Generate at https://pypi.org/manage/account/#api-tokens
- Token Access: Ensure token has scope for
veritas-mlproject
Set Up Your Token
Add to veritas/.env:
PYPI_API_TOKEN=pypi-AgEIcHlwaS5vcmcC...
Or set environment variable:
export PYPI_API_TOKEN="your-token-here"
Using the Upload Script (Recommended)
# Navigate to veritas directory
cd veritas
# Option 1: Test first, then live (recommended)
python scripts/upload_pypi.py --test
# Option 2: Direct live upload
python scripts/upload_pypi.py
# Option 3: Build only (for verification)
python scripts/upload_pypi.py --build
Manual Upload (Alternative)
# Install build tools
pip install build twine
# Clean previous builds
rm -rf dist/ build/ src/*egg-info/
# Build
python -m build
# Upload to TestPyPI first (recommended)
twine upload --repository testppi dist/*
# Verify: https://test.pypi.org/project/veritas-ml/
# Install: pip install --index-url https://test.pypi.org/simple veritas-ml
# Upload to live PyPI
twine upload --repository pypi dist/*
Version Bumping
Before uploading, increment version in pyproject.toml:
[project]
version = "0.1.1" # Increment as needed
Troubleshooting
| Error | Solution |
|---|---|
name too similar |
Change package name in pyproject.toml |
403 Forbidden |
Check API token permissions |
Mutex lock error (macOS) |
Install with [mutex-fix] extra |
macOS Apple Silicon Note
If you encounter [mutex.cc : 452] errors on macOS Apple Silicon with TensorFlow, install with the mutex fix extra:
pip install veritas-ml[mutex-fix]
This pins tensorflow<2.20 and pyarrow>=22.0 to avoid low-level mutex conflicts.
Configuration
LLM Providers
Veritas loads settings in this order:
- Explicit constructor overrides (e.g.
ComplianceChecker(llm_provider="groq")) - Environment variables (auto-loaded from
veritas/.env) defaults.json(veritas/defaults.jsonor repository-rootdefaults.json)~/.veritas/config.json
Environment variables:
# OpenRouter
export LLM_PROVIDER=openrouter
export OPENROUTER_API_KEY=your-key
# Ollama (local)
export LLM_PROVIDER=ollama
export OLLAMA_BASE_URL=http://localhost:11434
# Groq
export LLM_PROVIDER=groq
export GROQ_API_KEY=your-key
Or set defaults.json:
{
"provider": "ollama",
"llm": "qwen3.5:4b"
}
You can still use ~/.veritas/config.json:
{
"provider": "openrouter",
"llm": "openai/gpt-4o-mini"
}
Knowledge Base
The AI ethics knowledge base auto-initializes on first import at ~/.veritas/vector_store/.
API Reference
VeritasClassifier
sklearn-compatible wrapper with built-in bias auditing.
Parameters:
base_estimator: sklearn estimator (default: LogisticRegression)protected_attribute: Name of protected attributeprivileged_classes: Privileged class valuesrun_audit: Run bias audit on fit()generate_report: Generate compliance report
Methods:
fit(X, y, sensitive_features=None)- Train and auditpredict(X)- Predict labelsget_bias_report()- Get AIF360 metricsget_compliance_report()- Get mitigation recommendationshas_bias()- Check if bias detected
BiasDetector
Low-level bias detection with AIF360.
Methods:
audit(model, X_test, y_test, sensitive_features)- Run audit
ComplianceChecker
High-level compliance checking with LLM agent.
Methods:
check(bias_report)- Analyze bias reportfull_audit(...)- End-to-end training + audit + compliance
Dependencies
- aif360 >= 0.6.1
- langgraph >= 0.3.0
- langchain-* providers
- chromadb >= 0.5.0
- scikit-learn >= 1.3.0
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file veritas_ml-0.1.1.tar.gz.
File metadata
- Download URL: veritas_ml-0.1.1.tar.gz
- Upload date:
- Size: 388.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b0b1b04a18f20e77ba8ff2ab19eaa6b100cce955c17538ca258143072237554
|
|
| MD5 |
ab4ca3cbdbf81b9733560eecfc39a235
|
|
| BLAKE2b-256 |
01736c5e2eea94d9b18e44a8734131dfc48606545686bcd538630edcc12d7921
|
File details
Details for the file veritas_ml-0.1.1-py3-none-any.whl.
File metadata
- Download URL: veritas_ml-0.1.1-py3-none-any.whl
- Upload date:
- Size: 389.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69e70201f8aac6f6efeb4709d9735d786ab303ec164f51d4079b4277f47489dc
|
|
| MD5 |
c823fd60eb345fef71873a4878de9592
|
|
| BLAKE2b-256 |
319b39d8d658a3156537c6bf37860badab37a466fcf2c2abb1e277ec00bb7ddd
|