Add deploy script, eval refresh script and Go-priced eval data
Deploy to Cloudflare Pages / deploy (push) Failing after 25s

- scripts/deploy.sh: manual Cloudflare Pages deploy (same steps as CI)
- scripts/refresh-evals.mjs: re-scrape Artificial Analysis + OpenCode Data into evals.js
- evals.js now carries OpenCode Go list prices; Hy4 and LongCat 2.5 left empty
  rather than borrowing a neighbouring model's numbers
- workflow creates the Pages project idempotently
This commit is contained in:
2026-10-21 15:27:11 +00:00
parent 9943adab09
commit 46447d422b
6 changed files with 266 additions and 36 deletions
+13 -1
View File
@@ -26,8 +26,20 @@ jobs:
- name: Stage markdown copy
run: cp MODELS.md site/MODELS.md
- name: Ensure Pages project exists
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
# Idempotent: creates the project on first run, no-ops afterwards.
run: npx wrangler pages project create opencodogoevals || echo "project already exists"
- name: Deploy to Cloudflare Pages
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: npx wrangler pages deploy site --project-name opencodogoevals --branch main --commit-hash ${{ gitea.sha }}
run: |
npx wrangler pages deploy site \
--project-name opencodogoevals \
--branch main \
--commit-hash "${{ gitea.sha }}" \
--commit-message "${{ gitea.event.head_commit.message }}"
+17 -9
View File
@@ -49,12 +49,20 @@ Add these as repository secrets (Gitea: *Settings → Actions → Secrets*):
| `CLOUDFLARE_API_TOKEN` | Cloudflare API token with **Cloudflare Pages: Edit** (and Account Settings: Read) |
| `CLOUDFLARE_ACCOUNT_ID` | The Cloudflare account that owns the Pages project |
The workflow in `.gitea/workflows/pages.yml` then deploys `site/` on every push to `main`.
The workflow in `.gitea/workflows/pages.yml` then:
1. checks out the repo and installs Wrangler,
2. stages `MODELS.md` next to the site,
3. creates the Pages project if it does not exist yet (idempotent),
4. deploys `site/` on every push to `main`, on a manual *Run workflow*, and hourly.
A runner must be registered on the Gitea instance for the workflow to execute.
### 3. Deploy manually (optional)
```bash
npm run deploy # wrangler pages deploy site --project-name opencodogoevals
./scripts/deploy.sh # uses env vars or your wrangler login session
npm run deploy # same thing, wrangler only
npm run dev # local preview on http://localhost:8788
```
@@ -70,13 +78,13 @@ Cloudflare-compatible local server.
## Updating the data
1. Benchmark scores come from each model's Artificial Analysis page
(`https://artificialanalysis.ai/models/<slug>`) — the embedded JSON payload in the page
contains the full evaluation set per model.
2. Catalog facts (pricing, context window, modalities, release date) come from
`https://opencode.ai/data/<lab>/<model>.json` and the Go docs.
3. Edit `site/assets/evals.js` and `site/assets/data.js`, then regenerate `MODELS.md`
from `data.js` and re-commit.
1. `node scripts/refresh-evals.mjs` re-scrapes every model's benchmark scores from
Artificial Analysis and rewrites `site/assets/evals.js`. Model names, OpenCode Go
prices and free-tier flags come from `site/assets/data.js` (hand-maintained from the
Go docs), so the chart always shows Go pricing.
2. Descriptions, modalities, release dates and caveats live in `site/assets/data.js`;
update them there and regenerate `MODELS.md`.
3. Commit both files — CI publishes the site on push.
## Caveats
+2 -1
View File
@@ -6,7 +6,8 @@
"type": "module",
"scripts": {
"dev": "wrangler pages dev site --port 8788",
"deploy": "wrangler pages deploy site --project-name opencodegoevals --branch main",
"deploy": "./scripts/deploy.sh",
"deploy:pages": "wrangler pages deploy site --project-name opencodogoevals --branch main",
"project:create": "wrangler pages project create opencodogoevals"
},
"devDependencies": {
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# Manual deploy to Cloudflare Pages (same steps the CI workflow runs).
#
# Requires either:
# - CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID exported in the environment, or
# - an existing `wrangler login` session (~/.wrangler/config/default.toml)
set -euo pipefail
cd "$(dirname "$0")/.."
PROJECT="${CLOUDFLARE_PAGES_PROJECT:-opencodogoevals}"
echo "==> staging site/"
cp MODELS.md site/MODELS.md
if [ ! -d node_modules/wrangler ]; then
echo "==> installing wrangler"
npm install --no-save wrangler@^4
fi
echo "==> ensuring Pages project '$PROJECT' exists"
npx wrangler pages project create "$PROJECT" || echo " (project already exists)"
echo "==> deploying"
npx wrangler pages deploy site \
--project-name "$PROJECT" \
--branch main \
--commit-dirty=true
echo "==> done: https://$PROJECT.pages.dev"
+179
View File
@@ -0,0 +1,179 @@
#!/usr/bin/env node
// Regenerates site/assets/evals.js from live sources.
//
// node scripts/refresh-evals.mjs
//
// Sources
// - Artificial Analysis model pages (https://artificialanalysis.ai/models/<slug>)
// The benchmark payload is embedded in the page as React Server Component flight data.
// - OpenCode Data model JSON (https://opencode.ai/data/<lab>/<model>.json)
// for context windows and OpenCode Go list prices.
//
// Usage of the AI slug differs slightly from the OpenCode Go model id, so they are
// mapped explicitly below.
import { writeFileSync } from "node:fs";
import { GO_MODELS } from "../site/assets/data.js";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
const UA =
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36";
// go model id -> { aa: artificial analysis slug, od: opencode data path }
const MODELS = {
"minimax-m3.1-flash-free": { aa: "minimax-m3-1-flash", od: "minimax/minimax-m3-1-flash" },
"gemini-4-argon-contributor": { aa: "gemini-4-argon", od: "google/gemini-4-argon" },
"claude-haiku-5-5": { aa: "claude-haiku-5-5", od: "anthropic/claude-haiku-5-5" },
"beam-free": { aa: "reflection-beam", od: "reflection/beam" },
// No Artificial Analysis entry for these two yet — they stay empty rather than
// borrowing a different model's numbers (LongCat 2.0 / Hy3 are not LongCat 2.5 / Hy4).
"longcat-2.5-preview-free": { aa: null, od: "meituan/longcat-2-5-preview" },
"mimo-v2.6-pro": { aa: "mimo-v2-6-pro", od: "xiaomi/mimo-v2-6-pro" },
"gpt-6-luna": { aa: "gpt-6-luna", od: "openai/gpt-6-luna" },
"grok-4.7": { aa: "grok-4-7", od: "xai/grok-4-7" },
"step-5-preview": { aa: "step-5", od: "stepfun/step-5-preview" },
"deepseek-v4.1-flash": { aa: "deepseek-v4-1-flash", od: "deepseek/deepseek-v4-1-flash" },
"muse-spark-1.3-contributor": { aa: "muse-spark-1-3", od: "meta/muse-spark-1-3-contributor" },
"hy4-preview": { aa: null, od: "tencent/hy4-preview" },
"qwen3.8-flash": { aa: "qwen3-8-flash-next", od: "alibaba/qwen3-8-flash" },
"glm-5.3-flash": { aa: "glm-5-3-flash", od: "zhipuai/glm-5-3-flash" },
"glm-5.3": { aa: "glm-5-3", od: "zhipuai/glm-5-3" },
"qwen3.8-max": { aa: "qwen3-8-max", od: "alibaba/qwen3-8-max" },
"kimi-k3": { aa: "kimi-k3", od: "moonshotai/kimi-k3" },
"kimi-k2.7-code": { aa: "kimi-k2-7-code", od: "moonshotai/kimi-k2-7-code" },
"qwen3.7-plus": { aa: "qwen3-7-plus", od: "alibaba/qwen3-7-plus" },
"minimax-m3": { aa: "minimax-m3", od: "minimax/minimax-m3" },
"deepseek-v4-pro": { aa: "deepseek-v4-pro", od: "deepseek/deepseek-v4-pro" },
"mimo-v2.5-pro": { aa: "mimo-v2-5-pro", od: "xiaomi/mimo-v2-5-pro" },
"mimo-v2.5": { aa: "mimo-v2-5-0424", od: "xiaomi/mimo-v2-5" }
};
const pct = (v) => (v === null || v === undefined ? null : Math.round(v * 1000) / 10);
/* --- Artificial Analysis page parsing ------------------------------------ */
function flightPayload(html) {
const parts = [];
const re = /self\.__next_f\.push\(\[1,"/g;
let m;
while ((m = re.exec(html))) {
const start = re.lastIndex;
const end = html.indexOf('"])</script>', start);
if (end < 0) continue;
try {
parts.push(JSON.parse('"' + html.slice(start, end).replace(/\\\//g, "/") + '"'));
} catch {
/* ignore chunk */
}
}
return parts.join("");
}
function extractModelObjects(html) {
const payload = flightPayload(html);
const out = {};
const re = /"slug":"/g;
let m;
while ((m = re.exec(payload))) {
const start = payload.lastIndexOf('{"id":"', m.index);
if (start < 0) continue;
let depth = 0, inStr = false, esc = false, k = start;
for (k = start; k < payload.length; k++) {
const c = payload[k];
if (esc) { esc = false; continue; }
if (c === "\\") { esc = true; continue; }
if (c === '"') { inStr = !inStr; continue; }
if (inStr) continue;
if (c === "{") depth++;
else if (c === "}") { depth--; if (depth === 0) { k++; break; } }
}
let obj;
try { obj = JSON.parse(payload.slice(start, k)); } catch { continue; }
if (obj && obj.slug && obj.intelligenceIndex != null) out[obj.slug] = obj;
}
return out;
}
async function fetchAA(slug) {
const res = await fetch(`https://artificialanalysis.ai/models/${slug}`, { headers: { "user-agent": UA } });
if (!res.ok) return null;
const models = extractModelObjects(await res.text());
return models[slug] || null;
}
async function fetchOD(path) {
try {
const res = await fetch(`https://opencode.ai/data/${path}.json`);
if (!res.ok) return null;
return (await res.json()).model;
} catch {
return null;
}
}
/* --- build ---------------------------------------------------------------- */
// Names, OpenCode Go list prices and free-tier flags come from site/assets/data.js
// (hand-maintained from the OpenCode Go docs), so the chart always shows Go pricing
// rather than the provider's public list price.
const CATALOG = Object.fromEntries(GO_MODELS.map((m) => [m.id, m]));
const rows = [];
for (const [id, { aa, od }] of Object.entries(MODELS)) {
const [aaModel, odModel] = await Promise.all([aa ? fetchAA(aa) : null, fetchOD(od)]);
if (!aaModel) {
console.warn(` ! no Artificial Analysis entry for ${id}${aa ? ` (slug ${aa})` : ""} — left empty`);
const cat = CATALOG[id];
rows.push({
id, n: cat?.name || odModel?.name || id, lab: cat?.lab || odModel?.labName || "",
free: cat ? !!cat.free : !(odModel?.priceUsdPer1M?.input),
pi: cat?.price?.in ?? odModel?.priceUsdPer1M?.input ?? 0,
po: cat?.price?.out ?? odModel?.priceUsdPer1M?.output ?? 0, ii: null,
fc: null, scicode: null, tb21: null, tb40: null, tbh: null, tau2: null, taub: null, apex: null,
analyst: null, auto: null, gpqa: null, critpt: null, hle: null, lcr: null, ifbench: null,
mmmu: null, gdpv: null, gdppdf: null, ctx: odModel?.contextTokens ?? 1048576
});
continue;
}
const cat = CATALOG[id];
const price = cat?.price || odModel?.priceUsdPer1M || {};
const ctx = odModel?.contextTokens ?? aaModel.contextWindowTokens ?? 1048576;
const free = cat ? !!cat.free : !(odModel?.priceUsdPer1M?.input);
rows.push({
id,
n: cat?.name || aaModel.name,
lab: cat?.lab || odModel?.labName || aaModel.name,
free,
pi: price.in ?? price.input ?? 0,
po: price.out ?? price.output ?? 0,
ii: Math.round(aaModel.intelligenceIndex * 10) / 10,
fc: pct(aaModel.frontierCode),
scicode: pct(aaModel.scicode),
tb21: pct(aaModel.terminalBench21),
tb40: pct(aaModel.terminalBench40),
tbh: pct(aaModel.terminalbenchHard),
tau2: pct(aaModel.tau2),
taub: pct(aaModel.tauBanking),
apex: pct(aaModel.apexAgents),
analyst: pct(aaModel.analystAgent),
auto: pct(aaModel.automationBenchPartialScore),
gpqa: pct(aaModel.gpqa),
critpt: pct(aaModel.critpt),
hle: pct(aaModel.hle),
lcr: pct(aaModel.lcr),
ifbench: pct(aaModel.ifbench),
mmmu: pct(aaModel.mmmuPro),
gdpv: pct(aaModel.gdpvalNormalized),
gdppdf: pct(aaModel.gdpPdfAllPass),
ctx
});
console.log(` + ${id} (index ${rows.at(-1).ii})`);
}
const header = `// Evaluation data scraped from Artificial Analysis model pages (single consistent harness).
// Values are already scaled to 0-100. Regenerate with: node scripts/refresh-evals.mjs
export const RAW = [
`;
const body = rows.map((r) => " " + JSON.stringify(r)).join(",\n");
writeFileSync(resolve(ROOT, "site/assets/evals.js"), header + body + "\n];\n");
console.log(`\nwrote site/assets/evals.js with ${rows.length} models`);
+24 -24
View File
@@ -1,27 +1,27 @@
// Evaluation data scraped from Artificial Analysis model pages (single consistent harness).
// Values are already scaled to 0-100. Retrieved 2026-10-21.
// Values are already scaled to 0-100. Regenerate with: node scripts/refresh-evals.mjs
export const RAW = [
{id:"minimax-m3.1-flash-free",n:"MiniMax M3.1 Flash Free",lab:"MiniMax",free:true,pi:0,po:0,ii:42.7,fc:38.6,scicode:53.4,tb21:null,tb40:25.8,tbh:null,tau2:null,taub:null,apex:null,analyst:null,auto:72.5,gpqa:null,critpt:22.3,hle:48.0,lcr:79.7,ifbench:null,mmmu:79.1,gdpv:47.9,gdppdf:20.8,ctx:1048576},
{id:"gemini-4-argon-contributor",n:"Gemini 4 Argon Contributor",lab:"Google",pi:4,po:20,ii:52.6,fc:43.5,scicode:61.8,tb21:null,tb40:57.1,tbh:null,tau2:null,taub:null,apex:null,analyst:48.7,auto:77.5,gpqa:null,critpt:27.1,hle:57.1,lcr:79.7,ifbench:null,mmmu:null,gdpv:56.2,gdppdf:21.8,ctx:1048576},
{id:"claude-haiku-5-5",n:"Claude Haiku 5.5",lab:"Anthropic",pi:0.1,po:0.5,ii:43.4,fc:41.8,scicode:55.0,tb21:null,tb40:32.8,tbh:null,tau2:null,taub:null,apex:null,analyst:53.8,auto:35.4,gpqa:null,critpt:18.9,hle:44.4,lcr:82.7,ifbench:null,mmmu:null,gdpv:55.9,gdppdf:20.8,ctx:1000000},
{id:"beam-free",n:"Beam Free",lab:"Reflection",free:true,pi:0,po:0,ii:30.3,fc:null,scicode:48.5,tb21:null,tb40:3.0,tbh:null,tau2:null,taub:null,apex:null,analyst:null,auto:48.5,gpqa:null,critpt:13.1,hle:34.7,lcr:78.0,ifbench:null,mmmu:null,gdpv:33.9,gdppdf:11.6,ctx:1048576},
{id:"longcat-2.5-preview-free",n:"LongCat 2.5 Preview Free",lab:"Meituan",free:true,pi:0,po:0,ii:null,ctx:1000000},
{id:"mimo-v2.6-pro",n:"MiMo-V2.6-Pro",lab:"Xiaomi",pi:0.435,po:0.87,ii:46.3,fc:45.4,scicode:60.9,tb21:null,tb40:34.8,tbh:null,tau2:null,taub:null,apex:null,analyst:37.5,auto:58.6,gpqa:null,critpt:26.6,hle:49.4,lcr:86.3,ifbench:null,mmmu:null,gdpv:59.2,gdppdf:19.2,ctx:1048576},
{id:"gpt-6-luna",n:"GPT-6 Luna",lab:"OpenAI",pi:0.1,po:0.5,ii:38.1,fc:41.9,scicode:54.6,tb21:null,tb40:12.6,tbh:null,tau2:null,taub:null,apex:null,analyst:43.8,auto:53.2,gpqa:null,critpt:19.4,hle:38.5,lcr:83.3,ifbench:null,mmmu:79.7,gdpv:46.6,gdppdf:22.8,ctx:1050000},
{id:"grok-4.7",n:"Grok 4.7",lab:"xAI",pi:2,po:6,ii:46.4,fc:33.8,scicode:57.4,tb21:null,tb40:25.8,tbh:null,tau2:null,taub:null,apex:null,analyst:52.5,auto:65.6,gpqa:null,critpt:17.7,hle:43.1,lcr:76.7,ifbench:null,mmmu:null,gdpv:60.6,gdppdf:20.0,ctx:500000},
{id:"step-5-preview",n:"Step 5 Preview",lab:"StepFun",pi:1,po:2.7,ii:43.7,fc:38.4,scicode:58.9,tb21:null,tb40:33.3,tbh:null,tau2:null,taub:null,apex:38.0,analyst:35.0,auto:51.0,gpqa:null,critpt:20.9,hle:46.5,lcr:88.3,ifbench:null,mmmu:76.4,gdpv:54.3,gdppdf:14.8,ctx:1000000},
{id:"deepseek-v4.1-flash",n:"DeepSeek V4.1 Flash",lab:"DeepSeek",pi:0.15,po:0.6,ii:39.5,fc:44.0,scicode:51.9,tb21:null,tb40:26.8,tbh:null,tau2:null,taub:null,apex:null,analyst:35.0,auto:68.9,gpqa:null,critpt:14.3,hle:39.2,lcr:84.0,ifbench:null,mmmu:77.0,gdpv:55.0,gdppdf:12.8,ctx:1000000},
{id:"muse-spark-1.3-contributor",n:"Muse Spark 1.3 Contributor",lab:"Meta",pi:0.1,po:0.2,ii:48.1,fc:40.6,scicode:58.8,tb21:84.3,tb40:33.3,tbh:null,tau2:null,taub:50.5,apex:null,analyst:37.5,auto:57.9,gpqa:93.5,critpt:24.9,hle:48.7,lcr:83.0,ifbench:null,mmmu:null,gdpv:59.0,gdppdf:26.6,ctx:1048576},
{id:"hy4-preview",n:"Hy4 preview",lab:"Tencent",pi:0.834,po:2.501,ii:null,ctx:1024000},
{id:"qwen3.8-flash",n:"Qwen3.8 Flash",lab:"Alibaba",pi:0.15,po:0.47,ii:39.8,fc:null,scicode:50.6,tb21:86.1,tb40:25.3,tbh:null,tau2:null,taub:45.4,apex:null,analyst:null,auto:55.9,gpqa:92.3,critpt:11.1,hle:38.0,lcr:79.7,ifbench:null,mmmu:79.8,gdpv:56.4,gdppdf:15.6,ctx:1000000,note:"AA entry: Qwen3.8-Flash-Next"},
{id:"glm-5.3-flash",n:"GLM-5.3-Flash",lab:"Zhipu",pi:0.15,po:0.5,ii:41.8,fc:41.0,scicode:51.6,tb21:84.3,tb40:32.8,tbh:null,tau2:null,taub:47.2,apex:null,analyst:25.0,auto:60.4,gpqa:91.2,critpt:15.4,hle:39.9,lcr:80.0,ifbench:null,mmmu:null,gdpv:57.1,gdppdf:15.4,ctx:1000000},
{id:"glm-5.3",n:"GLM-5.3",lab:"Zhipu",pi:1.4,po:4.4,ii:44.8,fc:40.1,scicode:59.0,tb21:83.9,tb40:41.9,tbh:null,tau2:null,taub:50.3,apex:null,analyst:38.8,auto:62.2,gpqa:91.7,critpt:19.1,hle:42.3,lcr:79.7,ifbench:null,mmmu:null,gdpv:57.5,gdppdf:11.2,ctx:1000000},
{id:"qwen3.8-max",n:"Qwen3.8 Max",lab:"Alibaba",pi:2,po:6,ii:45.4,fc:43.2,scicode:52.1,tb21:88.8,tb40:38.9,tbh:null,tau2:null,taub:47.8,apex:42.4,analyst:45.0,auto:56.2,gpqa:92.8,critpt:17.7,hle:43.1,lcr:80.3,ifbench:null,mmmu:82.8,gdpv:58.2,gdppdf:22.8,ctx:1000000},
{id:"kimi-k3",n:"Kimi K3",lab:"Moonshot",pi:3,po:15,ii:43.6,fc:43.6,scicode:59.5,tb21:85.0,tb40:12.6,tbh:null,tau2:null,taub:46.0,apex:41.3,analyst:38.8,auto:58.3,gpqa:93.5,critpt:23.4,hle:46.9,lcr:88.7,ifbench:null,mmmu:80.5,gdpv:51.6,gdppdf:22.0,ctx:1048576},
{id:"kimi-k2.7-code",n:"Kimi K2.7 Code",lab:"Moonshot",pi:0.95,po:4,ii:25.8,fc:null,scicode:47.8,tb21:67.4,tb40:1.0,tbh:44.7,tau2:90.1,taub:20.2,apex:null,analyst:null,auto:24.5,gpqa:89.6,critpt:10.0,hle:35.0,lcr:79.3,ifbench:63.1,mmmu:null,gdpv:26.9,gdppdf:11.2,ctx:262144},
{id:"qwen3.7-plus",n:"Qwen3.7 Plus",lab:"Alibaba",pi:0.4,po:1.6,ii:25.2,fc:null,scicode:46.1,tb21:61.0,tb40:1.0,tbh:47.0,tau2:93.0,taub:17.5,apex:22.4,analyst:null,auto:17.4,gpqa:90.0,critpt:9.1,hle:35.6,lcr:73.0,ifbench:78.0,mmmu:80.5,gdpv:13.4,gdppdf:12.2,ctx:1000000},
{id:"minimax-m3",n:"MiniMax M3",lab:"MiniMax",pi:0.3,po:1.2,ii:29.2,fc:23.0,scicode:47.1,tb21:65.2,tb40:2.0,tbh:42.4,tau2:88.9,taub:15.3,apex:null,analyst:10.0,auto:21.3,gpqa:92.9,critpt:3.7,hle:39.0,lcr:83.0,ifbench:82.9,mmmu:78.6,gdpv:37.1,gdppdf:9.8,ctx:1048576},
{id:"deepseek-v4-pro",n:"DeepSeek V4 Pro",lab:"DeepSeek",pi:0.66,po:1.98,ii:36.0,fc:38.8,scicode:51.0,tb21:78.7,tb40:14.1,tbh:null,tau2:null,taub:39.6,apex:null,analyst:null,auto:56.7,gpqa:92.8,critpt:18.0,hle:41.0,lcr:80.3,ifbench:null,mmmu:null,gdpv:47.4,gdppdf:11.4,ctx:1000000},
{id:"mimo-v2.5-pro",n:"MiMo-V2.5-Pro",lab:"Xiaomi",pi:0.435,po:0.87,ii:26.0,fc:null,scicode:50.6,tb21:65.2,tb40:0.0,tbh:43.2,tau2:94.2,taub:9.9,apex:2.4,analyst:20.0,auto:13.7,gpqa:86.6,critpt:4.0,hle:35.7,lcr:79.7,ifbench:79.9,mmmu:null,gdpv:31.0,gdppdf:4.0,ctx:1048576},
{id:"mimo-v2.5",n:"MiMo-V2.5",lab:"Xiaomi",pi:0.14,po:0.28,ii:21.8,fc:null,scicode:43.9,tb21:63.7,tb40:0.0,tbh:41.7,tau2:90.6,taub:8.7,apex:null,analyst:null,auto:18.4,gpqa:84.9,critpt:3.7,hle:27.2,lcr:73.0,ifbench:67.1,mmmu:75.4,gdpv:24.9,gdppdf:4.0,ctx:1048576}
{"id":"minimax-m3.1-flash-free","n":"MiniMax M3.1 Flash Free","lab":"MiniMax","free":true,"pi":0,"po":0,"ii":42.7,"fc":38.6,"scicode":53.4,"tb21":null,"tb40":25.8,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":null,"auto":72.5,"gpqa":null,"critpt":22.3,"hle":48,"lcr":79.7,"ifbench":null,"mmmu":79.1,"gdpv":47.9,"gdppdf":20.8,"ctx":1000000},
{"id":"gemini-4-argon-contributor","n":"Gemini 4 Argon Contributor","lab":"Google","free":false,"pi":4,"po":20,"ii":52.6,"fc":43.5,"scicode":61.8,"tb21":null,"tb40":57.1,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":48.8,"auto":77.5,"gpqa":null,"critpt":27.1,"hle":57.1,"lcr":79.7,"ifbench":null,"mmmu":null,"gdpv":56.2,"gdppdf":21.8,"ctx":1048576},
{"id":"claude-haiku-5-5","n":"Claude Haiku 5.5","lab":"Anthropic","free":false,"pi":0.1,"po":0.5,"ii":43.4,"fc":41.8,"scicode":55,"tb21":null,"tb40":32.8,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":53.8,"auto":35.4,"gpqa":null,"critpt":18.9,"hle":44.4,"lcr":82.7,"ifbench":null,"mmmu":null,"gdpv":55.9,"gdppdf":20.8,"ctx":1000000},
{"id":"beam-free","n":"Beam Free","lab":"Reflection AI","free":true,"pi":0,"po":0,"ii":30.3,"fc":null,"scicode":48.5,"tb21":null,"tb40":3,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":null,"auto":48.5,"gpqa":null,"critpt":13.1,"hle":34.7,"lcr":78,"ifbench":null,"mmmu":null,"gdpv":33.9,"gdppdf":11.6,"ctx":1048576},
{"id":"longcat-2.5-preview-free","n":"LongCat 2.5 Preview Free","lab":"Meituan","free":true,"pi":0,"po":0,"ii":null,"fc":null,"scicode":null,"tb21":null,"tb40":null,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":null,"auto":null,"gpqa":null,"critpt":null,"hle":null,"lcr":null,"ifbench":null,"mmmu":null,"gdpv":null,"gdppdf":null,"ctx":1000000},
{"id":"mimo-v2.6-pro","n":"MiMo-V2.6-Pro","lab":"Xiaomi","free":false,"pi":0.435,"po":0.87,"ii":46.3,"fc":45.4,"scicode":60.9,"tb21":null,"tb40":34.8,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":37.5,"auto":58.6,"gpqa":null,"critpt":26.6,"hle":49.4,"lcr":86.3,"ifbench":null,"mmmu":null,"gdpv":59.2,"gdppdf":19.2,"ctx":1048576},
{"id":"gpt-6-luna","n":"GPT-6 Luna","lab":"OpenAI","free":false,"pi":0.1,"po":0.5,"ii":38.1,"fc":41.9,"scicode":54.6,"tb21":null,"tb40":12.6,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":43.8,"auto":53.2,"gpqa":null,"critpt":19.4,"hle":38.5,"lcr":83.3,"ifbench":null,"mmmu":79.7,"gdpv":46.6,"gdppdf":22.8,"ctx":1050000},
{"id":"grok-4.7","n":"Grok 4.7","lab":"xAI","free":false,"pi":2,"po":6,"ii":46.4,"fc":33.8,"scicode":57.4,"tb21":null,"tb40":25.8,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":52.5,"auto":65.6,"gpqa":null,"critpt":17.7,"hle":43.1,"lcr":76.7,"ifbench":null,"mmmu":null,"gdpv":60.6,"gdppdf":20,"ctx":500000},
{"id":"step-5-preview","n":"Step 5 Preview","lab":"StepFun","free":false,"pi":1,"po":2.7,"ii":43.7,"fc":38.4,"scicode":58.9,"tb21":null,"tb40":33.3,"tbh":null,"tau2":null,"taub":null,"apex":38,"analyst":35,"auto":51,"gpqa":null,"critpt":20.9,"hle":46.5,"lcr":88.3,"ifbench":null,"mmmu":76.4,"gdpv":54.3,"gdppdf":14.8,"ctx":1000000},
{"id":"deepseek-v4.1-flash","n":"DeepSeek V4.1 Flash","lab":"DeepSeek","free":false,"pi":0.15,"po":0.6,"ii":39.5,"fc":44,"scicode":51.9,"tb21":null,"tb40":26.8,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":35,"auto":68.9,"gpqa":null,"critpt":14.3,"hle":39.2,"lcr":84,"ifbench":null,"mmmu":77,"gdpv":55,"gdppdf":12.8,"ctx":1000000},
{"id":"muse-spark-1.3-contributor","n":"Muse Spark 1.3 Contributor","lab":"Meta","free":false,"pi":0.1,"po":0.2,"ii":48.1,"fc":40.6,"scicode":58.8,"tb21":84.3,"tb40":33.3,"tbh":null,"tau2":null,"taub":50.5,"apex":null,"analyst":37.5,"auto":57.9,"gpqa":93.5,"critpt":24.9,"hle":48.7,"lcr":83,"ifbench":null,"mmmu":null,"gdpv":59,"gdppdf":26.6,"ctx":1048576},
{"id":"hy4-preview","n":"Hy4 preview","lab":"Tencent","free":false,"pi":0.834,"po":2.501,"ii":null,"fc":null,"scicode":null,"tb21":null,"tb40":null,"tbh":null,"tau2":null,"taub":null,"apex":null,"analyst":null,"auto":null,"gpqa":null,"critpt":null,"hle":null,"lcr":null,"ifbench":null,"mmmu":null,"gdpv":null,"gdppdf":null,"ctx":1024000},
{"id":"qwen3.8-flash","n":"Qwen3.8 Flash","lab":"Alibaba","free":false,"pi":0.15,"po":0.47,"ii":39.8,"fc":null,"scicode":50.6,"tb21":86.1,"tb40":25.3,"tbh":null,"tau2":null,"taub":45.4,"apex":null,"analyst":null,"auto":55.9,"gpqa":92.3,"critpt":11.1,"hle":38,"lcr":79.7,"ifbench":null,"mmmu":79.8,"gdpv":56.4,"gdppdf":15.6,"ctx":1000000},
{"id":"glm-5.3-flash","n":"GLM-5.3-Flash","lab":"Zhipu","free":false,"pi":0.15,"po":0.5,"ii":41.8,"fc":41,"scicode":51.6,"tb21":84.3,"tb40":32.8,"tbh":null,"tau2":null,"taub":47.2,"apex":null,"analyst":25,"auto":60.4,"gpqa":91.2,"critpt":15.4,"hle":39.9,"lcr":80,"ifbench":null,"mmmu":null,"gdpv":57.1,"gdppdf":15.4,"ctx":1000000},
{"id":"glm-5.3","n":"GLM-5.3","lab":"Zhipu","free":false,"pi":1.4,"po":4.4,"ii":44.8,"fc":40.1,"scicode":59,"tb21":83.9,"tb40":41.9,"tbh":null,"tau2":null,"taub":50.3,"apex":null,"analyst":38.8,"auto":62.2,"gpqa":91.7,"critpt":19.1,"hle":42.3,"lcr":79.7,"ifbench":null,"mmmu":null,"gdpv":57.5,"gdppdf":11.2,"ctx":1000000},
{"id":"qwen3.8-max","n":"Qwen3.8 Max","lab":"Alibaba","free":false,"pi":2,"po":6,"ii":45.4,"fc":43.2,"scicode":52.1,"tb21":88.8,"tb40":38.9,"tbh":null,"tau2":null,"taub":47.8,"apex":42.4,"analyst":45,"auto":56.2,"gpqa":92.8,"critpt":17.7,"hle":43.1,"lcr":80.3,"ifbench":null,"mmmu":82.8,"gdpv":58.2,"gdppdf":22.8,"ctx":1000000},
{"id":"kimi-k3","n":"Kimi K3","lab":"Moonshot","free":false,"pi":3,"po":15,"ii":43.6,"fc":43.6,"scicode":59.5,"tb21":85,"tb40":12.6,"tbh":null,"tau2":null,"taub":46,"apex":41.3,"analyst":38.8,"auto":58.3,"gpqa":93.5,"critpt":23.4,"hle":46.9,"lcr":88.7,"ifbench":null,"mmmu":80.5,"gdpv":51.6,"gdppdf":22,"ctx":1048576},
{"id":"kimi-k2.7-code","n":"Kimi K2.7 Code","lab":"Moonshot","free":false,"pi":0.95,"po":4,"ii":25.8,"fc":null,"scicode":47.8,"tb21":67.4,"tb40":1,"tbh":44.7,"tau2":90.1,"taub":20.2,"apex":null,"analyst":null,"auto":24.5,"gpqa":89.6,"critpt":10,"hle":35,"lcr":79.3,"ifbench":63.1,"mmmu":null,"gdpv":26.9,"gdppdf":11.2,"ctx":262144},
{"id":"qwen3.7-plus","n":"Qwen3.7 Plus","lab":"Alibaba","free":false,"pi":0.4,"po":1.6,"ii":25.2,"fc":null,"scicode":46.1,"tb21":61,"tb40":1,"tbh":47,"tau2":93,"taub":17.5,"apex":22.4,"analyst":null,"auto":17.4,"gpqa":90,"critpt":9.1,"hle":35.6,"lcr":73,"ifbench":78,"mmmu":80.5,"gdpv":13.4,"gdppdf":12.2,"ctx":1000000},
{"id":"minimax-m3","n":"MiniMax M3","lab":"MiniMax","free":false,"pi":0.3,"po":1.2,"ii":29.2,"fc":23,"scicode":47.1,"tb21":65.2,"tb40":2,"tbh":42.4,"tau2":88.9,"taub":15.3,"apex":null,"analyst":10,"auto":21.3,"gpqa":92.9,"critpt":3.7,"hle":39,"lcr":83,"ifbench":82.9,"mmmu":78.6,"gdpv":37.1,"gdppdf":9.8,"ctx":1048576},
{"id":"deepseek-v4-pro","n":"DeepSeek V4 Pro","lab":"DeepSeek","free":false,"pi":0.66,"po":1.98,"ii":36,"fc":38.8,"scicode":51,"tb21":78.7,"tb40":14.1,"tbh":null,"tau2":null,"taub":39.6,"apex":null,"analyst":null,"auto":56.7,"gpqa":92.8,"critpt":18,"hle":41,"lcr":80.3,"ifbench":null,"mmmu":null,"gdpv":47.4,"gdppdf":11.4,"ctx":1000000},
{"id":"mimo-v2.5-pro","n":"MiMo-V2.5-Pro","lab":"Xiaomi","free":false,"pi":0.435,"po":0.87,"ii":26,"fc":null,"scicode":50.6,"tb21":65.2,"tb40":0,"tbh":43.2,"tau2":94.2,"taub":9.9,"apex":2.4,"analyst":20,"auto":13.7,"gpqa":86.6,"critpt":4,"hle":35.7,"lcr":79.7,"ifbench":79.9,"mmmu":null,"gdpv":31,"gdppdf":4,"ctx":1048576},
{"id":"mimo-v2.5","n":"MiMo-V2.5","lab":"Xiaomi","free":false,"pi":0.14,"po":0.28,"ii":21.8,"fc":null,"scicode":43.9,"tb21":63.7,"tb40":0,"tbh":41.7,"tau2":90.6,"taub":8.7,"apex":null,"analyst":null,"auto":18.4,"gpqa":84.9,"critpt":3.7,"hle":27.2,"lcr":73,"ifbench":67.1,"mmmu":75.4,"gdpv":24.9,"gdppdf":4,"ctx":1048576}
];