File size: 2,065 Bytes
3e72399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"""
Gradio widgets for browsing datasets and examples in the interpretability app.

What this module provides:
- create_example_browser: a Dataset-like widget to preview/select examples (dev/public modes).
- create_dataset_selector: a dropdown to pick which dataset to browse.

Expected backends:
- loader.data.list_datasets()
- loader.data.get_examples(dataset, n=...)
"""

import gradio as gr
from typing import List, Dict


def create_example_browser(mode: str = "public") -> gr.Dataset:
    """
    Create an example browser (grid/list) for selecting samples.

    Args:
        mode: "dev" or "public" — in "public" you typically show curated/precomputed
              examples; in "dev" you may show more free-form or larger lists.

    Expected usage:
        datasets = list_datasets()             # from loader/data.py
        examples  = get_examples(dataset, n=10)

    Returns:
        A gr.Dataset component configured for example selection.
    """
    mode = (mode or "public").lower()
    label = "Examples" if mode == "public" else "Example Browser (dev)"
    samples_per_page = 6 if mode == "public" else 12
    return gr.Dataset(
        components=[
            gr.Textbox(label="Context", lines=4, interactive=False),
            gr.Textbox(label="Prompt", lines=2, interactive=False),
            gr.Textbox(label="Answer", lines=2, interactive=False),
        ],
        headers=["context", "prompt", "answer"],
        label=label,
        samples=None,
        samples_per_page=samples_per_page,
        type="index",
        elem_id=f"example-browser-{mode}",
    )


def create_dataset_selector() -> gr.Dropdown:
    """
    Create a dataset selector dropdown.

    Expected usage:
        datasets = list_datasets()             # from loader/data.py
        dropdown.choices = datasets

    Returns:
        A gr.Dropdown component for choosing a dataset.
    """
    return gr.Dropdown(
        choices=[],
        label="Dataset",
        interactive=True,
        allow_custom_value=False,
        elem_id="dataset-selector",
    )