Metadata-Version: 2.4
Name: veritas-ml
Version: 1.0.0
Summary: AI Bias Detection and Ethics Compliance Agent
Author: AI Ethics Team
License: MIT
Project-URL: Homepage, https://github.com/anomalyco/veritas
Project-URL: Repository, https://github.com/anomalyco/veritas
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aif360>=0.6.1
Requires-Dist: langgraph>=0.3.0
Requires-Dist: langchain-openai>=0.3.0
Requires-Dist: langchain-ollama>=0.2.0
Requires-Dist: langchain-groq>=0.2.0
Requires-Dist: langsmith>=0.1.0
Requires-Dist: langchain-huggingface>=0.1.0
Requires-Dist: langchain-chroma>=0.2.0
Requires-Dist: langchain-community>=0.3.0
Requires-Dist: langchain-text-splitters>=0.3.0
Requires-Dist: pypdf>=4.0.0
Requires-Dist: chromadb>=0.5.0
Requires-Dist: sentence-transformers>=3.0.0
Requires-Dist: scikit-learn>=1.3.0
Requires-Dist: pandas>=2.0.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: rich>=13.0.0
Requires-Dist: pyarrow>=22.0.0
Provides-Extra: tensorflow
Requires-Dist: tensorflow<2.20.0,>=2.19.0; extra == "tensorflow"
Dynamic: license-file

# Veritas - AI Bias Detection and Ethics Compliance

Veritas audits sklearn-compatible models for group fairness issues, applies AIF360 mitigation when requested, retrieves AI ethics context from bundled knowledge bases, and produces deterministic or LLM-assisted markdown reports.

## Features

- Canonical audit API for models and predictions
- AIF360 fairness metrics and threshold-based issue detection
- AIF360 mitigation registry with automatic strategy selection
- sklearn-compatible `VeritasClassifier`
- Bundled RAG knowledge bases with Chroma search and lexical fallback
- Import-time knowledge-base auto-initialization through `_bootstrap.py`
- CLI for knowledge-base init, status, and query

## Installation

```bash
pip install veritas-ml
```

For local development:

```bash
pip install -e .
```

Create `bias_params.json` beside your script or in the working directory:

```json
{
  "protected_attributes": ["sex", "race"]
}
```

## Quick Start

### Audit Predictions

```python
from veritas import AuditConfig, audit_predictions

config = AuditConfig(protected_attributes=["sex"])

result = audit_predictions(
    y_true=[0, 1, 1, 0],
    y_pred=[0, 1, 0, 0],
    sensitive=[0, 1, 1, 0],
    config=config,
    X=[[1.0], [2.0], [3.0], [4.0]],
)

print(result.to_dict()["bias_issues"])
```

### Audit a Trained Model

```python
from sklearn.linear_model import LogisticRegression
from veritas import AuditConfig, audit_model

model = LogisticRegression(max_iter=500).fit(X_train, y_train)
config = AuditConfig(protected_attributes=["sex"])

audit = audit_model(model, X_test, y_test, sensitive_test, config)
print(audit.to_dict()["dataset_metrics"])
```

### Run the Full Pipeline

```python
from sklearn.linear_model import LogisticRegression
from veritas import AuditConfig, run_pipeline

config = AuditConfig(
    protected_attributes=["sex", "race"],
    dataset_name="training dataset",
)

result = run_pipeline(
    LogisticRegression(max_iter=500),
    X_train,
    y_train,
    sensitive_train,
    config,
    strategy="auto",
    generate_report=True,
)

print(result.to_dict()["final_report"])
```

### Use the sklearn Wrapper

```python
from sklearn.ensemble import RandomForestClassifier
from veritas import VeritasClassifier

clf = VeritasClassifier(
    base_estimator=RandomForestClassifier(n_estimators=100),
    protected_attributes=["sex"],
    run_audit=True,
    apply_mitigation=True,
    generate_report=True,
)

clf.fit(X_train, y_train, sensitive_features=sensitive_train)
print(clf.get_bias_summary())
print(clf.get_compliance_report())
```

## Knowledge Bases

Veritas keeps import-time auto-initialization in `_bootstrap.py`. If `~/.veritas/vector_store/` does not exist, import-time bootstrap attempts to ingest the bundled knowledge assets. Search still works through bundled lexical fallback when Chroma is unavailable.

CLI:

```bash
veritas init --laws src/veritas/knowledge/ai_ethics_knowledge_base.pdf \
  --algorithms src/veritas/knowledge/aif360_algorithms_documentation.txt
veritas status
veritas query --db laws "gender discrimination in hiring algorithms"
veritas query --db algorithms "reweighing disparate impact"
```

## Public API

- `AuditConfig`
- `AuditResult`
- `MitigationResult`
- `PipelineResult`
- `audit_predictions(...)`
- `audit_model(...)`
- `mitigate_model(...)`
- `run_pipeline(...)`
- `VeritasClassifier`
- `BiasDetector` as a thin compatibility adapter over `audit_model`

## Testing

```bash
veritas_venv/bin/python -m unittest discover -v
```
