跳到正文

TheoLeeCJ

openjev

Can we run something like Jev on a 3090 at home?

README 已保存到本站,可直接阅读

Documentation snapshot

README 快照

这篇是英文原文

下面正文是项目自己的英文 README。想读全文就用浏览器自带的整页翻译: Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」; 手机浏览器一般在菜单里。

本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。

OpenJev

Can we run something like Jev on a 3090 at home?

Wow! No waitlist. Run it in your browser today.

图片:Measured replay: typed decisions appear together while JSON streams token by token

Same frozen 4B model · same state · same 21 questions · measured separately, aligned at t=0 in the replay

图片:Some AI company asks you to join a waitlist; OpenJev runs in your browser today

Most agent decisions are small: route this, retry that, does the evidence support X? A chat model can answer them, but it spends time generating text that software immediately parses back into an if statement.

Jev is TypeSafe’s closed service for runtime-defined semantic decisions. This project reproduces that interface pattern with open models; it does not reproduce Jev’s undisclosed model or training.

This baseline reads typed option probabilities directly from a model. No answer sentence, JSON repair, or decoding loop.

Quick start

Python 3.10+, CUDA, and a GPU that can hold a 4B BF16 model:

python -m venv .venv
. .venv/bin/activate
export HF_HOME=/path/to/large-drive/huggingface
pip install -e '.[test]'

Run the owned examples:

CUDA_VISIBLE_DEVICES=0 openjev-score \
  --mode direct \
  --model Qwen/Qwen3.5-4B \
  --revision 851bf6e806efd8d0a36b00ddf55e13ccb7b8cd0a \
  --input examples/decisions.jsonl \
  --output results.jsonl

Each result contains typed option scores, timing, the exact model revision, and a prompt hash.

If every row has the same exact state, switch to --mode shared to prefill it once and evaluate the criteria in parallel.

How it works

flowchart LR
    S[Unstructured state] --> M[4B model]
    C[Runtime criteria] --> M
    O[Typed options] --> M
    M -- native option logits --> P[Probabilities]
  • Runtime-defined: criteria and option descriptions arrive with the request.
  • Decision-native: one forward pass reads declared option logits; no answer token is sampled.
  • Shared-state aware: one long state can be prefetched once, then branched across many criteria.
  • Auditable: the owned fixture, exact runners, row-level outputs, revisions, prompts, and known failures are committed.

Speed

Decisions versus a compact generated array

Same frozen Qwen3.5-4B, same owned state, same 21 binary criteria, one RTX 3090:

Output pathTimeOutput tokensResult
Direct typed logits, median of 31.023 s021 probability pairs
Autoregressive JSON array, median of 35.332 s111Valid ordered 21-value array

The compact generative baseline emits only ordered "yes"/"no" values—no keys, confidence objects, or explanations. Its median first-token time was 0.489 s, but completing the array took 5.21× as long as direct readout. All three arrays were valid and identical. Their choices agreed with direct argmax on 18/21 criteria, so this is a systems comparison rather than a claim that the two readouts are semantically equivalent. Exact prompt, outputs, token timeline, and runs are committed.

Reusing a state across 21 decisions

On an owned 37-state × 21-criterion workload:

Execution pathDecisions/s777 decisions
Fresh direct scoring2.33333.1 s
Serial prefix reuse10.7572.3 s
Parallel suffixes20.0338.8 s
Native reranker1.86417.3 s

The owned 37×21 fixture, direct/reuse runner, reranker runner, raw timings, and row-level predictions are included. The fast reuse paths are experimental: BF16 execution changed 5–6 of 777 argmaxes relative to fresh scoring.

Quality

Frozen workloadRowsDirect logitsNative rerankerPublished Jev
Authored decisions, balanced accuracy1440.8130.625—
WANLI, balanced accuracy2560.6370.522—
TypeSafe selected subset, modal agreement102 across 20 cases0.8450.5600.883
Every judgment grid, accuracy360.8060.694—

The reranker remained strong at retrieval ranking, but direct logits were the better general-decision baseline.

The Jev number is read from TypeSafe’s published records; we did not run a live Jev endpoint. The comparison covers the 102 rows that could be aligned from public artifacts, not TypeSafe’s reported 711-row aggregate.

Input

{
  "id": "route-1",
  "state": "Customer cannot access an account after a password reset.",
  "question": "Which queue should handle this request?",
  "options": [
    {"id": "access", "description": "Account access support."},
    {"id": "billing", "description": "Billing support."}
  ]
}

Returned probabilities are conditional on the supplied options. Calibrate and validate them on the workload where they will make decisions. state may also be a nonempty JSON object or array. Direct modes preserve it as structured JSON; reranker mode renders it as document text.

Documentation

  • Results — quality, speed, perturbations, and claim boundaries
  • Method — frozen prompts, metrics, and timing scope
  • Reproduce — exact environment, pinned commands, perturbations, and verification
  • Interactive replay
  • Browser-only WebGPU demo — no waitlist; use it today
  • Machine-readable summary
  • Benchmark bundle — fixtures, runners, selection IDs, and reproduction commands
  • Raw results and checksums
  • Third-party sources

Evaluation sources

This is an independent research project. Model weights and third-party records without a redistribution grant are excluded; immutable selection IDs and fetch manifests are included. Upstream models retain their licenses. Project code is released under the MIT License.

Official distribution

获取与安装

暂未发现可确认的官方软件包地址

当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。

本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。

使用前核验

本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。