import gradio as gr from visualization import create_radar_plot def compare_models(df, model_names=None): if model_names is None or len(model_names) == 0: model_names = [df.sort_values("Model Avg", ascending=False).iloc[0]["Model"]] filtered_df = df[df["Model"].isin(model_names)] radar_chart = create_radar_plot(df, model_names) # Create styled table for model info info_html = f"""
""" for _, row in filtered_df.iterrows(): info_html += f""" """ info_html += """
Model Type Average I/O Cost Single Turn Multi Turn
{row['Model']} {row['Model Type']} {row['Model Avg']:.3f} ${row['IO Cost']:.2f} {row['single turn perf']:.3f} {row['multi turn perf']:.3f}
""" return info_html, radar_chart def create_model_comparison_tab(df, HEADER_CONTENT, CARDS): with gr.Tab("Model Comparison"): gr.HTML(HEADER_CONTENT) with gr.Column(): # Filters row with gr.Row(equal_height=True): model_selector = gr.Dropdown( choices=df["Model"].unique().tolist(), value=df.sort_values("Model Avg", ascending=False).iloc[0]["Model"], multiselect=True, label="Select Models to Compare", ) # Content model_info = gr.HTML() radar_plot = gr.Plot() model_selector.change( fn=lambda m: compare_models(df, m), inputs=[model_selector], outputs=[model_info, radar_plot], ) return model_info, radar_plot