| import gradio as gr | |
| def get_app( | |
| models: list[str], | |
| default_model: str, | |
| dropdown_label: str = "Select Hyperbolic Model", | |
| choices: list[str] = None, | |
| **kwargs, | |
| ) -> gr.Blocks: | |
| display_choices = choices if choices is not None else models | |
| def update_model(new_model: str) -> list[gr.Column]: | |
| if choices is not None: | |
| idx = display_choices.index(new_model) | |
| new_model = models[idx] | |
| return [gr.Column(visible=model_name == new_model) for model_name in models] | |
| with gr.Blocks(fill_height=True) as demo: | |
| model = gr.Dropdown( | |
| label=dropdown_label, | |
| choices=display_choices, | |
| value=choices[models.index(default_model)] if choices else default_model | |
| ) | |
| columns = [] | |
| for model_name in models: | |
| with gr.Column(visible=model_name == default_model) as column: | |
| load_kwargs = {k: v for k, v in kwargs.items() if k not in ['src', 'choices']} | |
| from ai_gradio.providers import registry | |
| gr.load(name=model_name, src=registry, **load_kwargs) | |
| columns.append(column) | |
| model.change( | |
| fn=update_model, | |
| inputs=model, | |
| outputs=columns, | |
| api_name=False, | |
| queue=False, | |
| ) | |
| for fn in demo.fns.values(): | |
| fn.api_name = False | |
| return demo |