alexfremont commited on
Commit
df3bf97
·
1 Parent(s): f85309c

Add enhanced Gradio UI with tabs, table view and model details formatting

Browse files
Files changed (1) hide show
  1. main.py +65 -3
main.py CHANGED
@@ -103,17 +103,79 @@ async def init_models():
103
  # For now, let's log and continue, Gradio will show an empty list
104
  pass
105
 
106
- # Définir la fonction pour Gradio qui récupère les modèles chargés
107
  def get_loaded_models_list():
108
  """Retourne la liste des métadonnées des modèles actuellement chargés."""
109
  # Extraire les métadonnées de chaque entrée dans model_pipelines
110
  return [item['metadata'] for item in model_pipelines.values()]
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  # Créer l'interface Gradio
113
- gradio_app = gr.Blocks(title="Tamis AI - Modèles Chargés")
114
  with gradio_app:
 
115
  gr.Markdown("## Modèles actuellement chargés dans l'API")
116
- gr.JSON(get_loaded_models_list, label="Modèles Chargés")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
 
118
  # Monter l'application Gradio à la racine dans FastAPI
119
  app = mount_gradio_app(
 
103
  # For now, let's log and continue, Gradio will show an empty list
104
  pass
105
 
106
+ # Définir les fonctions pour Gradio qui récupèrent les modèles chargés
107
  def get_loaded_models_list():
108
  """Retourne la liste des métadonnées des modèles actuellement chargés."""
109
  # Extraire les métadonnées de chaque entrée dans model_pipelines
110
  return [item['metadata'] for item in model_pipelines.values()]
111
 
112
+ def format_model_info(metadata_list):
113
+ """Formate les informations des modèles pour un affichage plus convivial."""
114
+ if not metadata_list:
115
+ return "Aucun modèle chargé actuellement."
116
+
117
+ # Créer une version formatée des informations des modèles
118
+ formatted_info = ""
119
+ for i, model in enumerate(metadata_list):
120
+ formatted_info += f"### Modèle {i+1}\n"
121
+ formatted_info += f"**ID:** {model.get('model_id', 'N/A')}\n"
122
+ formatted_info += f"**Fichier:** {model.get('hf_filename', 'N/A')}\n"
123
+ formatted_info += f"**Dernière mise à jour:** {model.get('updated_at', 'N/A')}\n\n"
124
+
125
+ return formatted_info
126
+
127
  # Créer l'interface Gradio
128
+ gradio_app = gr.Blocks(title="Tamis AI - Modèles Chargés", theme=gr.themes.Soft())
129
  with gradio_app:
130
+ gr.Markdown("# 🤖 Tamis AI - Interface d'administration")
131
  gr.Markdown("## Modèles actuellement chargés dans l'API")
132
+
133
+ with gr.Row():
134
+ with gr.Column(scale=2):
135
+ # Visualisation des modèles avec des cartes
136
+ with gr.Tab("Vue détaillée"):
137
+ markdown_output = gr.Markdown(value="Chargement des modèles...", elem_id="model_details")
138
+
139
+ # Affichage en tableau
140
+ with gr.Tab("Vue tableau"):
141
+ model_table = gr.Dataframe(
142
+ headers=["ID", "Fichier", "Dernière mise à jour"],
143
+ datatype=["str", "str", "str"],
144
+ elem_id="model_table"
145
+ )
146
+
147
+ # Vue JSON (pour référence)
148
+ with gr.Tab("Vue JSON (debug)"):
149
+ json_output = gr.JSON(label="Données brutes")
150
+
151
+ with gr.Column(scale=1):
152
+ refresh_btn = gr.Button("Rafraîchir", variant="primary")
153
+ status = gr.Textbox(label="Statut", value="Prêt", interactive=False)
154
+
155
+ # Fonction pour mettre à jour tous les composants d'affichage
156
+ def update_all_displays():
157
+ models = get_loaded_models_list()
158
+ formatted_text = format_model_info(models)
159
+
160
+ # Préparer les données pour le tableau
161
+ table_data = []
162
+ for model in models:
163
+ table_data.append([
164
+ model.get('model_id', 'N/A'),
165
+ model.get('hf_filename', 'N/A'),
166
+ model.get('updated_at', 'N/A')
167
+ ])
168
+
169
+ return formatted_text, table_data, models, "Modèles mis à jour"
170
+
171
+ # Connecter les événements
172
+ refresh_btn.click(
173
+ fn=update_all_displays,
174
+ outputs=[markdown_output, model_table, json_output, status]
175
+ )
176
+
177
+ # Initialiser les affichages au chargement
178
+ gradio_app.load(fn=update_all_displays, outputs=[markdown_output, model_table, json_output, status])
179
 
180
  # Monter l'application Gradio à la racine dans FastAPI
181
  app = mount_gradio_app(