Skip to main content

Open-source tools to analyze, monitor, and debug machine learning model in production.

Project description

Evidently

An open-source framework to evaluate, test and monitor ML and LLM-powered systems.

PyPi Downloads License PyPi

Evidently

Documentation | Discord Community | Blog | Twitter | Evidently Cloud

:bar_chart: What is Evidently?

Evidently is an open-source Python library to evaluate, test, and monitor ML and LLM systems—from experiments to production.

  • 🔡 Works with tabular and text data.
  • ✨ Supports evals for predictive and generative tasks, from classification to RAG.
  • 📚 100+ built-in metrics from data drift detection to LLM judges.
  • 🛠️ Python interface for custom metrics.
  • 🚦 Both offline evals and live monitoring.
  • 💻 Open architecture: easily export data and integrate with existing tools.

Evidently is very modular. You can start with one-off evaluations or host a full monitoring service.

1. Reports and Test Suites

Reports compute and summarize various data, ML and LLM quality evals.

  • Start with Presets and built-in metrics or customize.
  • Best for experiments, exploratory analysis and debugging.
  • View interactive Reports in Python or export as JSON, Python dictionary, HTML, or view in monitoring UI.

Turn any Report into a Test Suite by adding pass/fail conditions.

  • Best for regression testing, CI/CD checks, or data validation.
  • Zero setup option: auto-generate test conditions from the reference dataset.
  • Simple syntax to set test conditions as gt (greater than), lt (less than), etc.
Reports
Report example

2. Monitoring Dashboard

Monitoring UI service helps visualize metrics and test results over time.

You can choose:

Evidently Cloud offers a generous free tier and extra features like dataset and user management, alerting, and no-code evals. Compare OSS vs Cloud.

Dashboard
Dashboard example

:woman_technologist: Install Evidently

To install from PyPI:

pip install evidently

To install Evidently using conda installer, run:

conda install -c conda-forge evidently

:arrow_forward: Getting started

Reports

LLM evals

This is a simple Hello World. Check the Tutorials for more: LLM evaluation.

Import the necessary components:

import pandas as pd
from evidently import Report
from evidently import Dataset, DataDefinition
from evidently.descriptors import Sentiment, TextLength, Contains
from evidently.presets import TextEvals

Create a toy dataset with questions and answers.

eval_df = pd.DataFrame([
    ["What is the capital of Japan?", "The capital of Japan is Tokyo."],
    ["Who painted the Mona Lisa?", "Leonardo da Vinci."],
    ["Can you write an essay?", "I'm sorry, but I can't assist with homework."]],
                       columns=["question", "answer"])

Create an Evidently Dataset object and add descriptors: row-level evaluators. We'll check for sentiment of each response, its length and whether it contains words indicative of denial.

eval_dataset = Dataset.from_pandas(pd.DataFrame(eval_df),
data_definition=DataDefinition(),
descriptors=[
    Sentiment("answer", alias="Sentiment"),
    TextLength("answer", alias="Length"),
    Contains("answer", items=['sorry', 'apologize'], mode="any", alias="Denials")
])

You can view the dataframe with added scores:

eval_dataset.as_dataframe()

To get a summary Report to see the distribution of scores:

report = Report([
    TextEvals()
])

my_eval = report.run(eval_dataset)
my_eval
# my_eval.json()
# my_eval.dict()

You can also choose other evaluators, including LLM-as-a-judge and configure pass/fail conditions.

Data and ML evals

This is a simple Hello World. Check the Tutorials for more: Tabular data.

Import the Report, evaluation Preset and toy tabular dataset.

import pandas as pd
from sklearn import datasets

from evidently import Report
from evidently.presets import DataDriftPreset

iris_data = datasets.load_iris(as_frame=True)
iris_frame = iris_data.frame

Run the Data Drift evaluation preset that will test for shift in column distributions. Take the first 60 rows of the dataframe as "current" data and the following as reference. Get the output in Jupyter notebook:

report = Report([
    DataDriftPreset(method="psi")
],
include_tests="True")
my_eval = report.run(iris_frame.iloc[:60], iris_frame.iloc[60:])
my_eval

You can also save an HTML file. You'll need to open it from the destination folder.

my_eval.save_html("file.html")

To get the output as JSON or Python dictionary:

my_eval.json()
# my_eval.dict()

You can choose other Presets, create Reports from indiviudal Metrics and configure pass/fail conditions.

Monitoring dashboard

This launches a demo project in the locally hosted Evidently UI. Sign up for Evidently Cloud to instantly get a managed version with additional features.

Recommended step: create a virtual environment and activate it.

pip install virtualenv
virtualenv venv
source venv/bin/activate

After installing Evidently (pip install evidently), run the Evidently UI with the demo projects:

evidently ui --demo-projects all

Visit localhost:8000 to access the UI.

🚦 What can you evaluate?

Evidently has 100+ built-in evals. You can also add custom ones.

Here are examples of things you can check:

🔡 Text descriptors 📝 LLM outputs
Length, sentiment, toxicity, language, special symbols, regular expression matches, etc. Semantic similarity, retrieval relevance, summarization quality, etc. with model- and LLM-based evals.
🛢 Data quality 📊 Data distribution drift
Missing values, duplicates, min-max ranges, new categorical values, correlations, etc. 20+ statistical tests and distance metrics to compare shifts in data distribution.
🎯 Classification 📈 Regression
Accuracy, precision, recall, ROC AUC, confusion matrix, bias, etc. MAE, ME, RMSE, error distribution, error normality, error bias, etc.
🗂 Ranking (inc. RAG) 🛒 Recommendations
NDCG, MAP, MRR, Hit Rate, etc. Serendipity, novelty, diversity, popularity bias, etc.

:computer: Contributions

We welcome contributions! Read the Guide to learn more.

:books: Documentation

For more examples, refer to a complete Documentation.

:white_check_mark: Discord Community

If you want to chat and connect, join our Discord community!

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

evidently-0.7.10.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

evidently-0.7.10-py3-none-any.whl (5.2 MB view details)

Uploaded Python 3

File details

Details for the file evidently-0.7.10.tar.gz.

File metadata

  • Download URL: evidently-0.7.10.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for evidently-0.7.10.tar.gz
Algorithm Hash digest
SHA256 f975123d39a86d8962478583edec5e09f7a5412ef4e8ab342d6cb470ad90df77
MD5 f7ed4a3f0ea6341eea2b8d21d778e41d
BLAKE2b-256 b7896ba03321cfd37d56ef6bc6c4ee56aff49fd70d98190699ab2d30edc4c141

See more details on using hashes here.

Provenance

The following attestation bundles were made for evidently-0.7.10.tar.gz:

Publisher: release.yml on evidentlyai/evidently

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evidently-0.7.10-py3-none-any.whl.

File metadata

  • Download URL: evidently-0.7.10-py3-none-any.whl
  • Upload date:
  • Size: 5.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for evidently-0.7.10-py3-none-any.whl
Algorithm Hash digest
SHA256 f7b924a44894249f10c0bd34c312e5827df83b9596a28a5888e3bf7a462579ed
MD5 9388ebb43435c81638e837761e96136e
BLAKE2b-256 be97ad4d8bf29262686c6c5fa019d9436462102ef72ba4377894742355a31d44

See more details on using hashes here.

Provenance

The following attestation bundles were made for evidently-0.7.10-py3-none-any.whl:

Publisher: release.yml on evidentlyai/evidently

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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