Development guide

September 19, 2026 ยท View on GitHub

Jeff 1 is a text-conditioned decision model with Choice, Noul, and Score interfaces. Read README.md for usage and docs/TRAIN_YOUR_OWN.md for the training workflow.

Released model

  • Base: Qwen/Qwen3-4B-Instruct-2507
  • Adapter: GestaltLabs/Jeff-1 (lora_4b_multi)
  • License: Apache 2.0 (LICENSE, NOTICE)

The client uses the local release adapter when present and otherwise downloads it from Hugging Face. Other experimental adapters are not part of Jeff 1.

Setup and entrypoints

uv sync
uv run python -m scripts.jev_clf_server

The demo runs at http://127.0.0.1:8079; requests use POST /v1/systemone.

PathPurpose
jev_clf/schema.pyQuestion and prediction schemas
jev_clf/client.pyPython client
jev_clf/readout.pyFirst-token and whole-sequence label scoring
scripts/jev_clf_lora_train.pyLoRA training
scripts/jev_clf_lm_eval.pyModel evaluation
scripts/audit_decision_results.pySaved-prediction audit

Development requirements

  • Preserve label descriptions and caller-supplied label order. Use max(probs.items(), key=lambda kv: kv[1]) for the recorded argmax convention; sorting labels changes ties.
  • Use sequence scoring when candidate labels share their first token.
  • Keep training, validation, and test data separate by source/group as well as row identifier. The published fact-check evaluation files are not training data.
  • Real training runs use Colab GPUs. Local checks should not start model training.
  • Test changes to schemas, prompt construction, and readout with representative Choice, Noul, and Score inputs. Include labels with shared first tokens.
  • Keep unrelated research changes out of release commits.

Evaluation and documentation

The release metrics are recorded in results/researchmax_gap_audit.json and its Markdown companion. Recompute them from the saved predictions with:

uv run python -m scripts.audit_decision_results

The raw data and prediction files must be available for this command. They are not all included in a fresh clone.

Use maximum class probability for like-for-like ECE comparisons. Report accuracy against human labels separately from agreement with a teacher. Identify the adapter and dataset alongside every result; older Choice-only validation results do not describe the released adapter. Evaluation data used for development is not an untouched holdout for later versions.

Current limitations are documented in the README and model card. Preserve those disclosures when changing documentation. Small interface checks do not establish comprehensive reasoning equivalence with another model.