个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A public reference benchmark for radiology finding-to-report generation.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗LAIBench is a technical benchmark framework — not a medical device, not regulatory approval, and not clinical validation. It must not be used as the sole basis for clinical deployment decisions. Everything below is within that technical scope.
Why LAIBench exists? Existing LLM benchmarks measure general reasoning. Radiology requires evaluation of clinical safety, report faithfulness, terminology consistency, and critical finding detection. LAIBench was created to measure those properties.
Most "report quality" benchmarks reward fluent prose. A confidently-written report that misses a pneumothorax can score well. LAIBench is built so that cannot happen:
FAIL — no matter how polished the rest of the report is. Form never rescues substance.MIN(deterministic, judge) — an optional LLM judge can lower a score but never inflate past the deterministic gate.scoringHash (over the gate-deciding source files) and a cases-only suiteHash pin exactly what produced each number.Pure TypeScript, zero runtime dependencies, deterministic checks, optional frozen judging, bootstrap CIs, McNemar / Cohen's h.
LAIBench evaluates reporting behavior from provided text evidence: whether a system can convert an exam descriptor and concise findings into a faithful radiology report under the public contract. It is not primary image interpretation.
It makes failure modes visible: clinically relevant omissions, hallucinated/unsupported findings, factual contradictions, critical-finding preservation, structured-report compliance, terminology and report-language compliance, privacy hygiene, and auditability.
| Dimension | Weight | Purpose |
|---|---|---|
| CRIT | 30% | Critical-finding preservation and unsafe-negation checks |
| QUAL | 25% | Clinical quality, finding preservation, hallucination resistance, impression synthesis |
| TERM | 20% | Locale, modality, section, terminology, and report-language contract |
| GUIDE | 15% | Guideline and anatomical coverage expectations |
| RAG | 10% | Evidence fidelity, section order, laterality, levels, and measurements |
Critical-finding omissions, unsafe negations, contradictions, unsupported normalcy, wrong report language, and structural errors trigger failure gates — a high average score cannot hide them. See docs/laibench-leaderboard-methods.md.
npm ci
npm run typecheck
npm test
npm run guard:public # public-release safety gate
npm run smoke:mock # run the synthetic en-US suite with a bundled mock agent
npm run smoke:leaderboard # build a leaderboard from the run
npm run smoke:reference # template reference agent on the en-US suite (31 PASS / 18 PARTIAL / 0 FAIL)
npm run ladder # public discrimination ladder → site/ladder.json + docs/public-ladder.md
npm run ladder degrades a template reference report by exactly one error per rung on the 49 public cases — no answer keys needed — and scores every version with the real harness. Under v3.11.0 every critical rung (critical denied, omitted or fabricated, and a "No acute abnormality." null report) is vetoed, and no critical rung passes. Full table: docs/public-ladder.md.
Run the synthetic public en-US suite with a local command adapter:
npm run bench -- suite \
--suite suites/lite-public.en-US.json \
--provider command \
--cmd "node examples/mock-agent.mjs" \
--run-name mock-agent \
--track agent \
--out runs/mock-agent.json
Any agent that reads a JSON job on stdin and writes the report HTML to stdout works with the command provider — no SDK required:
npm run bench -- suite \
--suite suites/lite-public.en-US.json \
--provider command \
--cmd "node path/to/your-agent.mjs" \
--run-name my-agent --track agent \
--entity-name "My Lab" --entity-type org --system-type product-agent \
--out runs/my-agent.json
examples/mock-agent.mjs is a minimal reference adapter. OpenRouter and any OpenAI-compatible endpoint are also supported (--provider openrouter / --provider openai-compatible); examples/smoke-openai-compatible.mjs shows the shape.
npm run bench -- reliability \
--inputs runs/run-1.json runs/run-2.json runs/run-3.json \
--out runs/reliability.json --markdown runs/reliability.md
npm run bench -- eval-submission \
--suite suites/lite-public.en-US.json \
--predictions predictions/my-agent.jsonl \
--run-name my-agent --track agent --out runs/my-agent.json
Each JSONL line follows the prediction record schema (instance_id, model_output). See docs/public-submissions.md.
laibench.laudos.ai is a static site in site/ that runs the real scorer in the browser: scripts/build-site-scorer.mjs bundles src/ with esbuild (Node built-ins shimmed in site-src/shims/) and a test requires the bundle to return the same verdict, score, gate reasons and per-check outcomes as the CLI. The site has the pneumothorax test, a playground that marks up any report with the scorer's evidence, the discrimination ladder, the leaderboard (each row states the scoring version that produced it), the 49 public cases, and in-browser recomputation of the suiteHash and scoringHash.
npm run site:build # bundle the scorer, copy the public cases, write site/provenance.json
npm run ladder # regenerate site/ladder.json
npx serve site # or any static server
npm test fails if site/assets/laibench-scorer.js or site/provenance.json is stale relative to the scoring source.
The public stratified page is a reference-vs-null sanity check: it verifies the harness is not inverted by comparing public reference reports against a fixed unsafe null baseline. That is a sanity check, not a claim that the null baseline measures realistic model degradation. Dose-response controls require answer-key material and are generated only inside the controlled environment; public releases publish aggregate calibration summaries only — never case-level predictions or gold labels.
Two distinct artifacts exist, and only one is open:
Do not attach "open benchmark" language to the controlled suite.
The public demonstration cases under cases/public/ are synthetic and input-only (every case is flagged synthetic: true). The controlled pt-BR cases are synthetic and were authored and reviewed by senior radiologists in São Paulo, SP, Brazil. Synthetic authorship and internal senior-radiologist review are a data-quality process, not an independent third-party validation; external inter-rater adjudication is tracked as future work and is not claimed here. A radiologist-review claim on any public score is gated by npm run guard:public and npm run laibench:validate-adjudication.
This repository ships synthetic, public-safe material only — code, schemas, docs, the site, and a tiny synthetic demo suite. It contains no raw clinical reports, private corpus, hidden test sets, answer keys, private scoring criteria, credentials, or internal tooling. The boundary is enforced by npm run guard:public (and guard:private) in CI. See DATA_ACCESS_POLICY.md.
@software{laibench,
title = {LAIBench: a governance-oriented benchmark for AI-assisted radiology reporting},
author = {{Laudos.AI Research}},
year = {2026},
url = {https://laibench.laudos.ai}
}
Companion (conceptual): Beyond Templates: A Compositional Model and Lower Bound for Radiology Report Variability.
Released under the MIT License. It applies to the public code, schemas, documentation, examples, synthetic demo cases, and tooling in this repository. It does not apply to the private clinical corpus, gated datasets, hidden test sets, answer keys, private scoring criteria, or protected evaluation artifacts — none of which are included here.