Vibeleaderboard
Index / tool
Visit github.com
Category
AI Tools
Rank
No. 1025Tools index

Previous survey · No. 1043 ·

Pricing
Open Source
Type
TOOL
Use case
Data Processing
Latest release
v1.2
Date

About

Jeff is a set of fine-tuned Qwen3.5 and Gemma 4 models for zero-shot classification. You describe a situation and list the options in plain words, and a single forward pass returns a calibrated probability for each option. It uses the same request format as Jev and is smaller, so it approaches Jev on benchmarks but with weaker reasoning.

What it does

Jeff is a 0.8B open model built to make quick decisions in front of a larger assistant. A request carries some state, such as a support ticket or a voice command, plus one or more questions, each with its own option set. Instead of writing an answer, the model reads out a probability for every option, a pick and a confidence, so there is no generated text to parse. Small add-on adapters, each trained for one job like spam, tool choice or sanctions screening, sit on a shared base and are chosen per request by name. It runs as a local HTTP server on NVIDIA GPUs or Apple silicon.

Why it's ranked here

The case rests on measured numbers with the method written down. Across eight adapter tasks the authors report 94.6% mean accuracy for Jeff with its adapter against 86.6% for a 27B model answering directly, at 0.25 seconds per decision versus 8.1 on an Apple M4 Max, with fixed held-out samples and the fallback threshold chosen before test rows were scored. The code is MIT licensed, the request format is frozen for the current base, and the serving code refuses inputs it cannot handle rather than quietly cutting them. The caveat: every figure is self-reported, and the 27B baseline ran with step-by-step reasoning switched off.

What's good

Adapters are bound to the exact base they were trained on: each records a hash of the base weights, and the server refuses a mismatch, so an old adapter cannot silently run on a new base. Inputs over the trained length of 8,192 tokens are rejected, never truncated. Option counts above what a model was trained on are refused with a message telling you to shortlist. The prompt puts the fixed question and options before the changing part, so a server can reuse that work across requests on one screen. A bundled kit checks training rows, splits them by family, and fails when a training row overlaps an evaluation row.

Tradeoffs

The current base gave up zero-shot accuracy to favour adapters: on the 100-option contract clause task without an adapter it falls from 66.0% on the previous base to 7.4%, and the authors say to use the older base for zero-shot work. Adapters only run on the base they were trained for. Adapter licences differ: the sanctions and security-alert adapters are non-commercial because of their source data. Training data is not released. The model answers one request at a time; by default a request that arrives while it is busy is turned away at once. Emotion detection stays weak at 60.5% with its adapter.

How to use it well

Use it as a fast first filter in an agent or support pipeline where the choices are known in advance: injection guarding, ticket routing, picking which tool an agent calls, or checking whether an answer is backed by its sources. Pick the adapters you need rather than relying on the bare base, and send uncertain cases to a larger model, which is how the authors get their best numbers. Check each adapter's licence before commercial use. With no matching adapter, the kit lets you train one, and on small data the Jeff base gives it a head start. It is not for multi-step reasoning or writing.

Technical notes+

src/jeff/model.py builds the prompt in decision_messages() with two layouts, state-first and live-last, and docs/v1.3-request-format.md freezes live-last for the v1.3 base; answer codes are the first 255 single-token strings from A..Z then AA, AB, and the answer is a temperature-scaled softmax over a 255-row readout initialised from the language-model head rows for those codes. src/jeff/decoder.py ports the same readout to Gemma 3, Gemma 4 E2B and Phi-4-mini at pinned revisions, and src/jeff/encoder.py offers a ModernBERT cross-encoder variant. src/jeff/server.py is FastAPI: one lock around the model, JEFF_QUEUE_MS (default 0) before a 529, JEFF_MAX_TOKENS (default 8192) with 422 on overflow, optional bearer auth via JEFF_API_KEY compared with hmac.compare_digest, up to four images capped at 8 MB and 16 million pixels, and shared or merged adapter modes. src/jeff/lora.py serves only plain LoRA (no rsLoRA, DoRA or per-layer ranks) and check_base() compares SHA-256 hashes of the base weight files. pyproject.toml pins exact dependency versions, sets mypy strict on the package, and exposes 20 console scripts including jeff-serve and jeff-kit; src/jeff/kit/cli.py provides check-rows, split, leak-check, shortcut-report, replay-mix and evaluate. One oddity: the default BASE_MODEL constant in src/jeff/model.py names Qwen/Qwen3.8-27B, while the server comment calls that 27B name misleading; released checkpoints record their own base in their saved config.

Observed

License
MIT (code); some adapters carry CC BY-NC 4.0 or data-source terms
Language
Python, requires 3.12 or newer
Packaging
pyproject.toml with hatchling build backend, installed via uv
Interfaces
HTTP decision API (FastAPI), Python client, 20 CLI entry points including jeff-serve and jeff-kit
Platform support
NVIDIA GPUs (cuda extra), Apple silicon via MLX (mac extra), CPU fallback in code
Base models supported
Qwen3.5 backbone, plus Gemma 3, Gemma 4 E2B, Phi-4-mini and ModernBERT variants
Option limit
1 to 255 options per question
Input limit
8,192 tokens by default; longer inputs rejected, not truncated
Training data
Not released; sources listed in docs/data-sources.md

Read from README.md, pyproject.toml, LICENSE, src/jeff/__init__.py, src/jeff/server.py, src/jeff/model.py, src/jeff/encoder.py, src/jeff/decoder.py, src/jeff/kit/cli.py, src/jeff/lora.py, docs/data-sources.md, docs/v1.3-request-format.md.

Intel on Jeff

More in Intel

Tags

classificationzero-shotqwengemmafine-tuningllm

Tech Stack

Node.jsPython

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.