AI-text detection API. Runs locally or on Modal.
Local (needs a CUDA GPU):
uv sync
uv run app.py
Modal:
modal deploy app.py
GET /health service status, model list
GET /models description and token window per model
POST /detect { "text": "...", "models": ["fakespot"], "verbose": false }
models is optional; omit to run all. verbose is optional.
Score: P(AI) ∈ [0, 1]; >= 0.5 means AI Generated. Each result includes score, score_std, and windows; set verbose=true to receive per-window details. Text must be 40-5000 whitespace-split words.
BaseDetector in detectors.py.Model(...) row to MODELS in app.py.load_trained in app.py.app.py API, engines, Modal services
detectors.py trained detectors
binoculars.py Binoculars detector
AI-text detection API. Runs locally or on Modal.
Local (needs a CUDA GPU):
uv sync
uv run app.py
Modal:
modal deploy app.py
GET /health service status, model list
GET /models description and token window per model
POST /detect { "text": "...", "models": ["fakespot"], "verbose": false }
models is optional; omit to run all. verbose is optional.
Score: P(AI) ∈ [0, 1]; >= 0.5 means AI Generated. Each result includes score, score_std, and windows; set verbose=true to receive per-window details. Text must be 40-5000 whitespace-split words.
BaseDetector in detectors.py.Model(...) row to MODELS in app.py.load_trained in app.py.app.py API, engines, Modal services
detectors.py trained detectors
binoculars.py Binoculars detector