Spaces:
Running
Running
Download app.js from alphabell/Qwen-Open-Explorer: direct link, hf CLI and curl.
- Browser
- Download file 3.79 kB
-
https://huggingface.co/spaces/alphabell/Qwen-Open-Explorer/resolve/main/app.js
- Command line
-
hf download hf://spaces/alphabell/Qwen-Open-Explorer/app.js
-
curl -L -o app.js https://huggingface.co/spaces/alphabell/Qwen-Open-Explorer/resolve/main/app.js
3.79 kB
| ; | |
| let records = null; | |
| let outcomeFilter = "all"; | |
| const $ = id => document.getElementById(id); | |
| const percent = (passed, total) => `${(100 * passed / total).toFixed(2)}%`; | |
| function render() { | |
| if (!records) return; | |
| const dataset = $("dataset").value; | |
| const field = $("suite").value; | |
| const runs = records.results.filter(run => run.dataset === dataset); | |
| const parent = runs.find(run => run.model.startsWith("Qwen/")); | |
| const final = runs.find(run => run.model.includes("alphaBell")); | |
| if (!parent || !final) throw new Error("Missing evaluation comparison"); | |
| const parentTasks = new Map(parent.tasks.map(task => [task.task_id, task])); | |
| const rows = final.tasks.map(task => { | |
| const original = parentTasks.get(task.task_id); | |
| if (!original) throw new Error("Missing paired task"); | |
| const before = original[field] === "pass"; | |
| const after = task[field] === "pass"; | |
| return { id: task.task_id, before, after, outcome: before === after ? "unchanged" : after ? "improvement" : "regression" }; | |
| }).sort((a, b) => a.id.localeCompare(b.id, undefined, { numeric: true })); | |
| const total = rows.length; | |
| const basePassed = rows.filter(row => row.before).length; | |
| const finalPassed = rows.filter(row => row.after).length; | |
| const improvements = rows.filter(row => row.outcome === "improvement").length; | |
| const regressions = rows.filter(row => row.outcome === "regression").length; | |
| const delta = 100 * (finalPassed - basePassed) / total; | |
| $("base-score").textContent = percent(basePassed, total); | |
| $("final-score").textContent = percent(finalPassed, total); | |
| $("base-count").textContent = `${basePassed} / ${total} tasks passed`; | |
| $("final-count").textContent = `${finalPassed} / ${total} tasks passed`; | |
| $("delta").textContent = `${delta > 0 ? "+" : ""}${delta.toFixed(2)} pp`; | |
| $("change-count").textContent = `${improvements} improved · ${regressions} regressed`; | |
| const query = $("search").value.trim().toLowerCase(); | |
| const visible = rows.filter(row => (outcomeFilter === "all" || row.outcome === outcomeFilter) && row.id.toLowerCase().includes(query)); | |
| const fragment = document.createDocumentFragment(); | |
| for (const row of visible) { | |
| const tr = document.createElement("tr"); | |
| const id = document.createElement("th"); | |
| id.scope = "row"; | |
| id.textContent = row.id; | |
| tr.append(id); | |
| for (const passed of [row.before, row.after]) { | |
| const td = document.createElement("td"); | |
| td.className = `status ${passed ? "pass" : "fail"}`; | |
| td.textContent = passed ? "Pass" : "Fail"; | |
| tr.append(td); | |
| } | |
| const td = document.createElement("td"); | |
| const badge = document.createElement("span"); | |
| badge.className = `outcome ${row.outcome}`; | |
| badge.textContent = { improvement: "Improved", regression: "Regressed", unchanged: "Unchanged" }[row.outcome]; | |
| td.append(badge); | |
| tr.append(td); | |
| fragment.append(tr); | |
| } | |
| $("tasks").replaceChildren(fragment); | |
| $("row-count").textContent = `${visible.length} of ${total} tasks`; | |
| $("empty").hidden = visible.length !== 0; | |
| } | |
| for (const id of ["dataset", "suite"]) $(id).addEventListener("change", render); | |
| $("search").addEventListener("input", render); | |
| for (const button of document.querySelectorAll("[data-filter]")) { | |
| button.addEventListener("click", () => { | |
| outcomeFilter = button.dataset.filter; | |
| for (const filter of document.querySelectorAll("[data-filter]")) filter.setAttribute("aria-pressed", String(filter === button)); | |
| render(); | |
| }); | |
| } | |
| fetch("data/results.json") | |
| .then(response => { if (!response.ok) throw new Error("Evaluation request failed"); return response.json(); }) | |
| .then(data => { records = data; render(); }) | |
| .catch(() => { $("error").hidden = false; $("row-count").textContent = "Evaluation unavailable"; }); | |