Skip to main content

Explanation tool for machine learning

Project description

“DAI-Lab” An open source project from Data to AI Lab at MIT.

PyPI - Version PyPI - Python Version PyPI - Downloads GitHub Actions Workflow Status Static Badge

Sibyl-API

REST-API endpoints for understanding and interacting with ML models.

Important Links
:book: Documentation Quickstart and user guides
:memo: API Reference Endpoint usage and details
:scroll: License The repository is published under the MIT License.
:computer: Website Check out the Sibyl Project Website for more information.

Overview

Sibyl-API offers API endpoints for easy-to-understand ML model explanations and smooth interactions.

To get started with Sibyl-API, follow the instructions below or in our documentation to setup your Sibyl database. From there, you can easily make model predictions, get and modify information about model features, and get a variety of explanations about your models and their predictions.

Install

Requirements

Sibyl-API requires MongoDB version 6 or 7.

To install MongoDB, follow the instructions here.

Install from PyPi

Sibyl-API can be installed from pypi:

pip install sibyl-api

Install from source

Sibyl-API uses Poetry for dependency management. If you do not have Poetry installed, please head to poetry installation guide and install poetry according to the instructions. Run the following command to make sure poetry is activated. You may need to close and reopen the terminal.

poetry --version

Then, you can clone this repository and install it from source by running poetry install:

git clone https://github.com/sibyl-dev/sibyl-api.git
cd sibyl-api
poetry install

Quickstart

Follow these steps to get started with the built-in Ames Housing dataset example. You can prepare and load the Ames Housing dataset by running

sibyl prepare-sample-db

⚠️ This function will overwrite any existing database on localhost:27017 with the name housing):

You can now run Sibyl-API with the sample dataset with:

poetry run sibyl run -D housing -v

Once Sibyl-API is running, you can access and test your APIs manually at localhost:3000/apidocs

Preparing database

Sibyl-API uses a MongoDB-based database system. We offer several methods to setup your database.

Preparing data

Required inputs

At minimum, sibyl-API requires the following inputs (either as a DataFrame or csv, see creation options below):

entities: A table with the entities to be explained. Each row should correspond to a single observation.

Columns:

  • eid (required): unique identifier specifying which entity this observation corresponds to
  • row_id: unique identifier specifying the observation ID. Together, eid and row_id should uniquely identify each observation.
  • label: the ground-truth label for this observation
  • [FEATURES]: additional columns for each feature used to make predictions. These columns should be named the same as the features used in the model.

Sample table:

eid row_id label feature1 feature2 feature3
entity1 101 0 0.1 0.2 0.3
entity1 102 1 0.2 0.3 0.4
entity2 204 1 0.3 0.4 0.5

features: A table with the features used to make predictions. Each row should correspond to a single feature.

Columns:

  • feature (required): the name of the feature
  • type (required): the type of the feature. This can be categorical, numerical, or boolean
  • description: a description of the feature
  • negative_description: a description of the feature when it is not present. Only for boolean features
  • values: a list of possible values for the feature. Only for categorical features.

Sample table:

feature type description negative_description values
size numerical size in square feet
has_ac boolean has air conditioning does not have air conditioning
nghbrh categorical neighborhood [Oceanview, Ridge, Oakvale]

realapp: A pickled pyreal.RealApp object. This object is used to generate explanations for the model. See the pyreal documentation for details on setting this up.

Optional inputs

Additionally, you can configure APIs futher with:

config: a configuration file (YAML or python dictionary) specifying additional settings. See our config documentation for details.

categories: a table with the categories used to make predictions. Each row should correspond to a single category.

Columns:

  • category (required): the name of the category
  • description: a description of the category
  • color: color to use for the category
  • abbreviation: abbreviation to use for the category

Creating the Mongo database

With the prepare-db script

Be sure to start your mongodb service before preparing the database

Copy sibyl/db/config_template.yml and fill it in with your configurations. Place required data in a common directory.

Next, run the preprocessing script with:

sibyl run prepare-db [CONFIG_NAME].yml [DIRECTORY]

where [CONFIG_NAME].yml is the path to your configuration file and [DIRECTORY] is the directory containing your data.

With the Setup Wizard

Currently, the setup wizard is only available when installing from source. First, install the optional setup dependencies with

poetry install --with setup

Then, run the setup wizard with

poetry run streamlit run setup-wizard/main.py

Running APIs

Once the library has been installed, you can run the APIs locally with:

poetry run sibyl run -v -D [DATABASE_NAME]

Or, to run in development mode:

poetry shell

sibyl run -E development -v -D [DATABASE_NAME]

You can then access your APIs locally at http://localhost:3000/apidocs

Contributing Guide

We appreciate contributions of all kinds! See our contributing guide for instructions.

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

sibyl_api-0.1.2.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

sibyl_api-0.1.2-py3-none-any.whl (52.6 kB view details)

Uploaded Python 3

File details

Details for the file sibyl_api-0.1.2.tar.gz.

File metadata

  • Download URL: sibyl_api-0.1.2.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for sibyl_api-0.1.2.tar.gz
Algorithm Hash digest
SHA256 566f961714ae2dbaba84773f2555c9fd6bdb5875993231a23c0cbf3c2e6a118a
MD5 4c5d41513a4bd567491a5830780d6b0f
BLAKE2b-256 506e6f51c6cae5f49268f91247cda979189fdef1cc03d4fae345ec49ef811ded

See more details on using hashes here.

File details

Details for the file sibyl_api-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: sibyl_api-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 52.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for sibyl_api-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2d4e6c0d4ac4bb6b53d177224cceb5ac35ef4ed709ecef22dc1f8d2defb3be79
MD5 c3ed77d25a912e2f3fb4d232f4361212
BLAKE2b-256 37b7aec8886eadc6ac64fdf1d3885e2e30f3fd340f1900d9c422729bfdd5e3e7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page