Spaces:
Build error
Build error
# from evaluate.utils import launch_gradio_widget | |
from tests import test_cases | |
from evaluate.utils.logging import get_logger | |
from evaluate.utils import ( | |
infer_gradio_input_types, | |
parse_gradio_data, | |
json_to_string_type, | |
parse_readme, | |
parse_test_cases, | |
) | |
from pathlib import Path | |
import evaluate | |
import sys | |
import evaluate | |
logger = get_logger(__name__) | |
def launch_gradio_widget(metric, test_cases): | |
"""Launches `metric` widget with Gradio.""" | |
try: | |
import gradio as gr | |
except ImportError as error: | |
logger.error( | |
"To create a metric widget with Gradio make sure gradio is installed." | |
) | |
raise error | |
local_path = Path(sys.path[0]) | |
# if there are several input types, use first as default. | |
if isinstance(metric.features, list): | |
(feature_names, feature_types) = zip(*metric.features[0].items()) | |
else: | |
(feature_names, feature_types) = zip(*metric.features.items()) | |
gradio_input_types = infer_gradio_input_types(feature_types) | |
def compute(data): | |
return metric.compute(**parse_gradio_data(data, gradio_input_types)) | |
iface = gr.Interface( | |
fn=compute, | |
inputs=gr.inputs.Dataframe( | |
headers=feature_names, | |
col_count=len(feature_names), | |
row_count=5, | |
datatype=json_to_string_type(gradio_input_types), | |
), | |
outputs=gr.outputs.Textbox(label=metric.name), | |
description=( | |
metric.info.description | |
+ "\nIf this is a text-based metric, make sure to wrap you input in double quotes." | |
" Alternatively you can use a JSON-formatted list as input." | |
), | |
title=f"Metric: {metric.name}", | |
article=parse_readme(local_path / "README.md"), | |
# TODO: load test cases and use them to populate examples | |
examples=[parse_test_cases(test_cases, feature_names, gradio_input_types)], | |
) | |
iface.launch() | |
module = evaluate.load("danieldux/metric_template_1") | |
launch_gradio_widget(module, test_cases) | |