File size: 1,366 Bytes
b931367
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr

def create_model_selector(model_specs, default_model_constant):
    """
    Creates a reusable Gradio model selector component.

    Args:
        model_specs (dict): A dictionary containing the specifications for each model.
        default_model_constant (str): The key for the default model in the model_specs dictionary.

    Returns:
        tuple: A tuple containing the model dropdown and the model description markdown components.
    """
    display_names = [d["display_name"] for d in model_specs.values()]
    default_display_name = model_specs[default_model_constant]["display_name"]


    model_dropdown = gr.Dropdown(
        choices=display_names,
        label="模型选择",
        value=default_display_name,
        interactive=True
    )

    def get_model_description(model_display_name):
        for model_spec in model_specs.values():
            if model_spec["display_name"] == model_display_name:
                return model_spec["description"]
        return ""

    model_description_markdown = gr.Markdown(get_model_description(default_display_name),
                                             container=True)

    model_dropdown.change(
        fn=get_model_description,
        inputs=[model_dropdown],
        outputs=[model_description_markdown]
    )

    return model_dropdown, model_description_markdown