Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
import json | |
def load_data(path: str): | |
records = [] | |
with open(path, "r", encoding="utf-8") as f: | |
for line in f: | |
try: | |
obj = json.loads(line) | |
records.append({ | |
"prompt": obj.get("Prompt", "").strip(), | |
"model": obj.get("model", "").strip(), | |
"response": obj.get("model response", "").strip() | |
}) | |
except: | |
pass | |
return pd.DataFrame(records) | |
# Load once | |
df = load_data("all_10_responses.jsonl") | |
all_prompts = sorted(df["prompt"].unique().tolist()) | |
all_models = sorted(df["model"].unique().tolist()) | |
def get_model_responses(chosen_prompt, chosen_models): | |
subset = df[ | |
(df["prompt"] == chosen_prompt) & | |
(df["model"].isin(chosen_models)) | |
].sort_values("model") | |
# Return a list of tuples: [(model_name, response), …] | |
return [(row["model"], row["response"]) for _, row in subset.iterrows()] | |
with gr.Blocks() as demo: | |
gr.Markdown("# Model Responses Explorer") | |
with gr.Row(): | |
prompt_dd = gr.Dropdown(all_prompts, label="Select a Prompt") | |
models_dd = gr.CheckboxGroup(all_models, value=all_models, label="Select Models") | |
with gr.Column(): | |
output_acc = gr.Accordion(label="Responses", open=False) | |
def update_accordion(prompt, models): | |
items = get_model_responses(prompt, models) | |
# Gradio accordion expects a single gr.Column or gr.Text | |
# We’ll return a single Markdown string combining all models | |
md = "" | |
for m, r in items: | |
md += f"### {m}\n\n{r}\n---\n" | |
return md | |
accordion_text = gr.Markdown() | |
prompt_dd.change(fn=update_accordion, inputs=[prompt_dd, models_dd], outputs=accordion_text) | |
models_dd.change(fn=update_accordion, inputs=[prompt_dd, models_dd], outputs=accordion_text) | |
demo.launch() |