| """ |
| Gradio widget builders for the interpretability app. |
| |
| This module provides small UI factory functions: |
| - create_model_selector: dropdown for selecting a model size/name. |
| - create_feature_level_selector: radio control for feature granularity (word/sentence/paragraph). |
| - create_attribution_method_toggle: radio control for attribution method. |
| """ |
|
|
| import gradio as gr |
| from typing import List |
|
|
|
|
| def create_model_selector() -> gr.Dropdown: |
| """ |
| Create a dropdown for model selection. |
| |
| Usage: |
| models = list_models() # from loader/models.py (optional API) |
| """ |
| return gr.Dropdown( |
| choices=[ |
| ("Qwen3 4B Instruct", "small"), |
| ("Mistral 7B Instruct v0.2", "medium"), |
| ("Qwen3 30B Instruct", "large"), |
| ], |
| value="small", |
| label="Model", |
| interactive=True, |
| elem_id="model-selector", |
| elem_classes=["bubble-select"], |
| ) |
|
|
|
|
| def create_multimodal_model_selector() -> gr.Dropdown: |
| """ |
| Create a dropdown for multimodal (image-capable) model selection. |
| |
| Keys must match loader/models_mm_vllm.py. |
| """ |
| return gr.Dropdown( |
| choices=["vl_small", "vl_large"], |
| value="vl_small", |
| label="Multimodal Model", |
| interactive=True, |
| elem_id="multimodal-model-selector", |
| ) |
|
|
|
|
| def create_feature_level_selector(value: str = "sentence") -> gr.Radio: |
| """Create the feature granularity selector.""" |
| return gr.Radio( |
| choices=["word", "sentence", "paragraph"], |
| value=value, |
| label="Feature Level", |
| interactive=True, |
| ) |
|
|
|
|
| def create_attribution_method_toggle(methods: List[str] | None = None) -> gr.Radio: |
| """Create the attribution method toggle.""" |
| choices = methods or ["shapley", "banzhaf", "influence"] |
| default_value = choices[0] if choices else "shapley" |
| return gr.Radio( |
| choices=choices, |
| value=default_value, |
| label="Attribution Method", |
| interactive=True, |
| ) |
|
|