agent-leaderboard / tabs /model_comparison.py
Pratik Bhavsar
added more info
b9405c8
raw
history blame
2.18 kB
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"""
<div class="dark-table-container">
<table class="dark-styled-table">
<thead>
<tr>
<th>Model</th>
<th>Type</th>
<th>Average</th>
<th>I/O Cost</th>
<th>Single Turn</th>
<th>Multi Turn</th>
</tr>
</thead>
<tbody>
"""
for _, row in filtered_df.iterrows():
info_html += f"""
<tr>
<td>{row['Model']}</td>
<td>{row['Model Type']}</td>
<td>{row['Model Avg']:.3f}</td>
<td>${row['IO Cost']:.2f}</td>
<td>{row['single turn perf']:.3f}</td>
<td>{row['multi turn perf']:.3f}</td>
</tr>
"""
info_html += """
</tbody>
</table>
</div>
"""
return info_html, radar_chart
def create_model_comparison_tab(df, HEADER_CONTENT):
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