An agentic fairness and AI-risk analysis platform for detecting bias in text and images
Project description
FairSense-AgentiX
An agentic fairness and AI-risk analysis platform developed by the Vector Institute.
FairSense-AgentiX is an intelligent bias detection and risk assessment platform that uses agentic AI workflows to analyze text, images, and datasets for fairness concerns. Unlike traditional ML classifiers, FairSense employs a reasoning agent that plans, selects tools, critiques outputs, and refines them iteratively.
✨ Key Features
- 🤖 Agentic Reasoning - ReAct loop with dynamic tool selection and self-critique
- 🔍 Multi-Modal Analysis - Text bias detection, image bias detection, and AI risk assessment
- 🛠️ Flexible Tool Ecosystem - OCR, Vision-Language Models, embeddings, FAISS, and LLMs
- 🌐 Production-Ready APIs - FastAPI REST API + WebSocket streaming + React UI
- ⚙️ Highly Configurable - Swap LLM providers, tools, and models on the fly
📦 Installation
From PyPI (Recommended)
pip install fairsense-agentix
From Source
git clone https://github.com/VectorInstitute/fairsense-agentix.git
cd fairsense-agentix
uv sync
source .venv/bin/activate
Requirements
- Python 3.12+
- 4GB+ RAM (for ML models)
- API key for OpenAI or Anthropic (for LLM functionality)
🚀 Quick Start
from fairsense_agentix import FairSense
# Initialize the engine
engine = FairSense()
# Analyze text for bias
result = engine.analyze_text(
"We're looking for a young, energetic developer to join our startup team."
)
print(f"Bias detected: {result.bias_detected}")
print(f"Risk level: {result.risk_level}")
for instance in result.bias_instances:
print(f" - {instance['type']} ({instance['severity']}): {instance['text_span']}")
Full Documentation: https://vectorinstitute.github.io/fairsense-agentix/
🧑🏿💻 Developing
Installing dependencies
The development environment can be set up using uv. Hence, make sure it is installed and then run:
uv sync
source .venv/bin/activate
In order to install dependencies for testing (codestyle, unit tests, integration tests), run:
uv sync --dev
source .venv/bin/activate
In order to exclude installation of packages from a specific group (e.g. docs), run:
uv sync --no-group docs
Getting Started
Run the FastAPI service
uv run uvicorn fairsense_agentix.service_api.server:app --reload
Endpoints (all under /v1/...):
| Route | Description |
|---|---|
POST /analyze |
JSON payload with content, optional input_type, options |
POST /analyze/upload |
multipart/form-data for images |
POST /batch & GET /batch/{id} |
Submit + inspect batch jobs |
GET /health |
Health probe |
WS /stream/{run_id} |
Stream telemetry/agent events for a run |
The API auto-detects text/image/CSV inputs, but you can override by setting input_type to bias_text, bias_image, or risk.
Run the Claude-inspired UI
cd ui
npm install
npm run dev
Set VITE_API_BASE (defaults to http://localhost:8000) to point at the API. The UI provides:
- Unified input surface (text field + drag/drop image upload)
- Live agent timeline sourced from telemetry events
- Downloadable HTML highlights and risk tables
- Launchpad for batch jobs
Key configuration knobs
Configure via environment variables (see .env for the full list). Most relevant:
| Variable | Description |
|---|---|
FAIRSENSE_LLM_PROVIDER |
openai, anthropic, or fake |
FAIRSENSE_LLM_MODEL_NAME |
e.g. gpt-4, claude-3-5-sonnet |
FAIRSENSE_LLM_API_KEY |
Provider API key |
FAIRSENSE_OCR_TOOL |
auto, tesseract, paddleocr, fake |
FAIRSENSE_CAPTION_MODEL |
auto, blip2, blip, fake |
FAIRSENSE_ENABLE_REFINEMENT |
enables evaluator-driven retries (default true) |
FAIRSENSE_EVALUATOR_ENABLED |
toggles Phase 7 evaluators |
FAIRSENSE_BIAS_EVALUATOR_MIN_SCORE |
passing score (0–100, default 75) |
All settings can be overridden at runtime:
FAIRSENSE_LLM_PROVIDER=anthropic \
FAIRSENSE_LLM_MODEL_NAME=claude-3-5-sonnet-20241022 \
uv run uvicorn fairsense_agentix.service_api.server:app
Running tests
uv run pytest
During test collection we automatically override any .env values that point at
real providers/devices so the suite always uses the lightweight fake
toolchain. This guarantees deterministic, offline-friendly tests even if you
have FAIRSENSE_LLM_PROVIDER=openai (or Anthropic) configured locally. To opt-in
to exercising the real stack, export FAIRSENSE_TEST_USE_REAL=1 before running
pytest.
Acknowledgments
Resources used in preparing this research were provided, in part, by the Province of Ontario, the Government of Canada through CIFAR, and companies sponsoring the Vector Institute.
This research was funded by the European Union's Horizon Europe research and innovation programme under the AIXPERT project (Grant Agreement No. 101214389).
Contributing
If you are interested in contributing to the library, please see CONTRIBUTING.md. This file contains many details around contributing to the code base, including development practices, code checks, tests, and more.
Project details
Release history Release notifications | RSS feed
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 fairsense_agentix-0.1.1.tar.gz.
File metadata
- Download URL: fairsense_agentix-0.1.1.tar.gz
- Upload date:
- Size: 5.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cee7cebd5bee83cbc4427633af768a7f7f6197aa7d9672c223196f8a654aeb5d
|
|
| MD5 |
ce6a1ed51379639b9087f2ee15377fee
|
|
| BLAKE2b-256 |
5c0e8ae7ec8bc143f183a21f155a29658973fa89b5efbd37b39a9c6ffc0277aa
|
File details
Details for the file fairsense_agentix-0.1.1-py3-none-any.whl.
File metadata
- Download URL: fairsense_agentix-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46d3f19de618c37a0adffdb0b14c4af80a547f554f1dedbb483a7caac0fa248a
|
|
| MD5 |
e2e35e4b92379279c725286987075778
|
|
| BLAKE2b-256 |
9bd710aaae3a096e4db1e45758b7803f6e67c2dc4aa53267084e84f3e1d8c2a9
|