OhmJudge generates fresh numerical electrical-engineering problems, gives the same committed prompts to any model, and grades answers locally with executable rules. Its default workflow needs no API key: use an answer-free offline collector to copy prompts into a model's ordinary web interface, paste answers back, and export the evidence for later grading.
Answer-free collector · Personal no-API lab · Synthetic report · Methodology · CI · Python 3.11+ · MIT · zero runtime dependencies
Important
OhmJudge is an early research tool, not an authoritative model ranking. The included dashboard uses clearly labelled synthetic responses to demonstrate the reporting pipeline. It makes no claim about the named commercial models.
Static benchmark questions can enter training data. LLM-as-a-judge scores can also change when the judge model or judging prompt changes. OhmJudge addresses a narrower, practical question: can an individual researcher run a fresh, same-suite EE calculation study without buying API access or trusting a hidden judge?
- fresh tasks — deterministic generators create a new suite from a recorded seed;
- executable grading — numeric answers, units, tolerances, and error categories are checked in Python;
- model-agnostic use — the answer-free collector works with any browser-based model;
- auditable artifacts — tasks, responses, grades, prices, and suite commitments are plain JSONL/JSON;
- useful diagnostics — see domain accuracy, confidence intervals, cost, latency, error types, and the price–accuracy Pareto frontier.
It currently includes 50 task templates across ten EE domains.
Install the v0.3.0 wheel directly from the GitHub Release:
python -m pip install "https://github.com/CAOShurong/ohmjudge/releases/download/v0.3.0/ohmjudge-0.3.0-py3-none-any.whl"
ohmjudge doctorOr install the exact tag from source:
python -m pip install "git+https://github.com/CAOShurong/[email protected]"Note
The package is not currently published on PyPI, so pip install ohmjudge
alone is not advertised. Release wheels, source archives, and SHA-256
checksums are attached to each GitHub Release.
For development:
git clone https://github.com/CAOShurong/ohmjudge.git
cd ohmjudge
python -m pip install -e .# Generate a private grading file plus a safe-to-share prompt file.
ohmjudge generate \
--count 50 \
--seed 2026 \
--output tasks.private.jsonl \
--public-output prompts.public.jsonl
# Build an answer-free, self-contained collector. It is safe to hand to the
# person collecting responses because it contains no reference answers,
# tolerances, or grading code.
ohmjudge collect \
--tasks tasks.private.jsonl \
--output blind-collector.htmlIn the collector:
- record the web product, visible model label, date, settings, tools, and retry policy;
- copy the current prompt into the model's normal web chat;
- paste its answer back;
- export a checkpoint and grade it later with the private task file.
Progress is saved in browser-local storage, and exported checkpoints can be
imported on another machine. Every response is bound to the exact suite
commitment. audit exits nonzero if responses from a different suite are
mixed in. Protocol fields are stored per model label, so two web products do
not silently inherit each other's settings.
For a quick personal practice run, ohmjudge lab --tasks tasks.private.jsonl
still provides live grading. That HTML embeds the private answer key and must
not be shared before a secrecy-sensitive collection is finished.
The model is instructed to return:
{"answer": 12.34, "unit": "kHz"}OhmJudge tolerates surrounding prose and a numeric fallback, but records the parse mode so a strict analysis can exclude fallback parsing.
ohmjudge grade \
--tasks tasks.private.jsonl \
--responses responses.jsonl \
--output grades.jsonl
ohmjudge report \
--tasks tasks.private.jsonl \
--grades grades.jsonl \
--title "My frontier-model EE study" \
--note "Web apps, zero-shot, collected 2026-08-04" \
--output report.htmlThe report is a self-contained interactive HTML file—no server, CDN, tracker, or JavaScript dependency. It includes:
- model-level accuracy with Wilson 95% confidence intervals;
- a domain heatmap;
- error taxonomy;
- latency and token summaries when available;
- user-supplied price estimates and a log-scaled price–accuracy Pareto frontier;
- filterable per-task evidence.
Generate the bundled synthetic demo with:
ohmjudge demo --output demoOr explore the live project site and synthetic demo.
ohmjudge audit \
--tasks tasks.private.jsonl \
--responses responses.jsonl \
--grades grades.jsonl \
--require-complete \
--require-protocol \
--output audit.json
ohmjudge compare \
--grades grades.jsonl \
--baseline-provider manual-web \
--baseline-model "Model A" \
--challenger-provider manual-web \
--challenger-model "Model B" \
--output comparison.jsonaudit recomputes every verdict and checks task coverage, capture-protocol
metadata, suite commitments, duplicates, units, tolerances, and cross-file
integrity. compare uses paired task outcomes and an exact two-sided McNemar
test; it warns when the discordant sample is too small for a strong conclusion. See
Running an experiment.
| Pack | Example templates | Deterministic checks |
|---|---|---|
| Circuits | voltage divider, RC cutoff, clipped op-amp, Thevenin resistance, series current | value, dimension, unit conversion, tolerance |
| Signals | RMS, Nyquist rate, alias frequency, sequence energy, convolution length | numeric or integer equality |
| Control | time constant, overshoot, settling time, pole radius, DC gain | formula-grounded numeric checks |
| Communications | Shannon capacity, free-space path loss, thermal noise, QPSK rate, link budget | logarithmic and linear-unit checks |
| Electronics | diode bias, BJT drive, MOSFET loss, ADC resolution, slew time | device-model and mixed-unit checks |
| Power | three-phase power, transformers, stored energy, PF correction, battery runtime | AC, energy, and efficiency checks |
| Electromagnetics | wavelength, plane waves, wire fields, capacitance, solenoids | physical constants and geometry checks |
| Digital | path delay, timing closure, counters, two's complement, Hamming distance | exact discrete and timing checks |
| Embedded | UART, PWM, timers, ADC buffers, I2C | firmware-facing timing and storage checks |
| Instrumentation | shunts, sensors, uncertainty, gain, Wheatstone bridges | measurement-chain checks |
The generators target calculation discipline and unit handling. They do not yet cover schematic images, open-ended design, HDL, RF layout, semiconductor process design, or safety certification. See Methodology for the exact validity boundary.
The browser workflow is the default. If you later want repeatable batch experiments, adapters are included for:
- OpenAI Responses;
- OpenAI-compatible Chat Completions, including providers that expose compatible endpoints;
- Anthropic Messages;
- replay from an existing response file.
API access is separate from a normal web subscription. OhmJudge never prints credential values. See Provider setup before running a paid endpoint.
ohmjudge doctor
ohmjudge run \
--tasks tasks.private.jsonl \
--provider openai-responses \
--model YOUR_MODEL_ID \
--output responses.jsonlEvery generated task has:
- a stable ID derived from its content;
- a pack, template, and generation seed;
- a prompt and private expected value;
- an accepted unit and absolute/relative tolerance;
- generator parameters for audit.
generate also prints a SHA-256 suite commitment. Publish the commitment and
public prompts before collecting answers; the collector writes that commitment
into every response. Release the private task file after the evaluation window
if you want others to audit your result.
Read the methodology, experiment guide, data schemas, and competitive landscape before reporting a serious comparison.
src/ohmjudge/
├── packs/ # seeded EE task generators
├── providers/ # optional remote runners
├── audit.py # cross-artifact integrity verification
├── collector.py # answer-free offline response collection
├── compare.py # paired model comparison
├── generate.py # suites and commitments
├── grade.py # deterministic validator
├── lab.py # no-API browser workflow
├── report.py # standalone interactive report
└── stats.py # confidence intervals and Pareto frontier
The most valuable contribution is a new task pack with an independently checkable answer—not a longer prompt. Start with Writing a pack, then read CONTRIBUTING.md.
Please cite the repository with the metadata in CITATION.cff. OhmJudge is released under the MIT License.
Planned verifier and task-family work is tracked in the roadmap.