Repository: evidentlyai/evidently
Issue: Key Error When Uploading Run of Classification Report
Root cause: Validation Gap

Dear Evidently AI Team,

I'm testing Evidently AI where I have the self hosted Evidently UI service running on a remote server and I created a Jupyter Notebook to run some tests and evaluations and then send the results to the UI service.

I have two different evaluations; one which is using the DataDrfitPreset & the DataSummaryPreset and the other one is using the ClassificationPreset. Both evaluations run successfully and I can view the reports in my Jupyter Notebook.

Even pushing the first evaluation into the remote server works and I can see exactly the same report. However, when pushing the 2nd evaluation (which uses the ClassificationPreset) I'm getting the following error:

```
----> 1 workspace.add_run(project.id, my_eval)
 
File WORKDIR/lib/python3.10/site-packages/evidently/ui/workspace/base.py:96, in WorkspaceBase.add_run(self, project_id, run, include_data)
     93 from evidently.future.backport import snapshot_v2_to_v1
     94 from evidently.future.report import _default_input_data_generator
---> 96 snapshot = snapshot_v2_to_v1(run)
     97 if include_data:
     98     run_from = "ws"
 
File WORKDIR/lib/python3.10/site-packages/evidently/future/backport.py:288, in snapshot_v2_to_v1(snapshot)
    286 if metric_id in saved_metrics:
    287     continue
--> 288 calculation = context.get_metric(metric_id)
    289 metric = calculation.to_metric()
    290 metrics.append(metric_v2_to_v1(metric))
 
File WORKDIR/lib/python3.10/site-packages/evidently/future/report.py:138, in Context.get_metric(self, metric)
    137 def get_metric(self, metric: MetricId) -> MetricCalculationBase[TResultType]:
--> 138     return self._metrics_graph[metric]["_self"]
 
KeyError: SOME_STRING
```
Here is a code snippet:
```
definition = DataDefinition(
    numerical_columns=['sepal length (cm)', 'sepal width (cm)',
                       'petal length (cm)', 'petal width (cm)'],
    categorical_columns=['target'],
    classification=[MulticlassClassification(
        target='target',
        prediction_labels='prediction'
    )]
)
 
data_eval = Dataset.from_pandas(
    iris_test,
    data_definition=definition
)
 
report = Report(
    [ClassificationPreset()],
    include_tests=True,
    model_id='IrisClassificationModel:1',
    dataset_id='Iris:Test',
    tags=['best'],
    metadata={'team': team, 'project_name': project_name}
)
 
my_eval = report_model_monitoring.run(data_eval, None)
 
workspace = RemoteWorkspace(UI_SERVICE_URI)
 
project = workspace.create_project('Iris_Claisifcation')
project.description = 'An ML model to classify Iris into types based on some characteristics'
project.save()
 
workspace.add_run(project.id, my_eval)

```
iris_test is a pandas data frame that contains 120 samples out of the 150 of the sklearn's iris dataset. It has 4 numerical feature columns 'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)' and 'petal width (cm)' in addition to a categorical column "target" which contains the correct labels and another categorical column "prediction" which contains the model's predictions. The model in use is a sklearn random forest classifier obtained using grid search.

I'm using Python 3.10 and evidently 0.6.6

Many thanks in advance!