Conformal Model Moderation & Human-in-the-Loop Routing Python Library
Project description
commCP 🛡️
commCP (Conformal Model Moderation & Human-in-the-Loop Routing) is a post-training wrapper for binary classification estimators. It combines Conformal Prediction (to enforce statistical reliability guarantees) and LLM Refereeing to decide when a prediction can be auto-accepted vs. when it should be escalated for human review.
Inspired by stats-centric tools like MAPIE, commCP bridges the gap between statistical guarantees and LLM verification for the AI era.
Features
- Statistical Coverage Guarantees: Enforces target error rates ($1 - \alpha$) via conformal calibration.
- Selective Prediction / HITL: Automatically routes predictions into
auto_decidedorescalatedqueues. - LLM-as-a-Referee: Mediates ensemble disagreements and conformal "gray-zone" uncertainties dynamically.
- Cost-Optimized: Bypasses the LLM completely for obvious acceptances or low-confidence/high-risk rejections, keeping API costs to a minimum.
- Seamless sklearn Compatibility: Works with any estimator exposing a
predict_probamethod (e.g., LogisticRegression, RandomForest, XGBoost).
Installation
# Install from source (or PyPI once published)
pip install .
Quick Start Guide
1. Train Your Classifier
from sklearn.ensemble import RandomForestClassifier
from commcp import CommCP
# Train a standard sklearn classifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
2. Wrap and Calibrate commCP
Initialize CommCP with your trained estimator, along with a task description and class labels (which are required to build high-accuracy prompts for the LLM Referee). Pass a held-out calibration set to establish the conformal threshold.
# Initialize commcp wrapper (configured for significance level alpha=0.05 -> 95% coverage)
ccp = CommCP(
estimator=model,
task_description="Predict whether a patient has heart disease based on clinical features",
class_labels={0: "Healthy", 1: "Heart Disease Present"},
alpha=0.05,
llm_provider="groq", # Supports "groq" or "openai"
verify_margin=0.15 # Trigger LLM verification on predictions within 15% of the threshold
)
# Calibrate
ccp.calibrate(X_calib, y_calib)
3. Predict & Moderate
Predict outcomes for test data. CommCP will execute conformal gating, query the LLM referee on borderline cases, and partition predictions.
# Run predictions
results = ccp.predict(
X_test,
text_dossiers=text_descriptions # Optional natural language dossiers for LLM inspection
)
# Get automation and routing results
print(f"Automation rate: {results.automation_rate:.2%}")
# Access lists of auto-decided and escalated records
auto_cases = results.auto_decided # list of dicts
human_queue = results.escalated # list of dicts
4. Evaluate Guarantees
Verify if your target mathematical coverage guarantee was met:
empirical_coverage = results.coverage(y_test)
print(f"Empirical Coverage: {empirical_coverage:.2%}") # Should be >= 95%
Examine system performance details:
print(results.stats(y_test))
Customizing Gating Logic
CommCP dynamically adjusts its gating based on your model architecture:
- Single Models: Uses Gray-Zone Gating. Calls the LLM referee only when confidence is close but below the conformal cutoff.
- Ensembles: Uses Disagreement Gating. Automatically inspects ensemble consensus and calls the LLM to referee conflicting model predictions.
License
Licensed under the MIT License.
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 commcp-1.0.0.tar.gz.
File metadata
- Download URL: commcp-1.0.0.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6c62ae53c62f6fd5ff467134471702070027cca35c24103484aaad38d6a9b95
|
|
| MD5 |
8eee765ab04b2137d272b2825aa07e27
|
|
| BLAKE2b-256 |
0da88351e284daa602fea990f50d431d2e67b3930ddde53b1e1b19dcbdad7bb3
|
File details
Details for the file commcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: commcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4fde616fd197718801c052945d1b1c0fd9674a081069600e5c355a5b9bafedf
|
|
| MD5 |
4245bc637c09eb4ff3eb356630b9941f
|
|
| BLAKE2b-256 |
b6eb8663599343e361e79dd5b117168ec01e6ae577461a5a554d023642e8c552
|