Skip to main content

jev-align

jev-align is an experimental CLI from Sutro for building AI Functions with TypeSafe's Jev.

It finds uncertain examples, asks you to label them, and uses GEPA to improve the function. Use it in your application and keep learning from production examples.

Quick start

Requires Python 3.11 or newer.

uv tool install jev-align
export TYPESAFE_API_KEY="..."
export OPENAI_API_KEY="..." # or ANTHROPIC_API_KEY / GEMINI_API_KEY
jeva

Start the CLI with either jeva or jev-align.

Use pip install jev-align if you do not use uv. The guided setup discovers local CSV, Parquet, and JSONL files and includes three ready-to-run examples.

How it works

Each round:

  1. Evaluates the configured dataset and measures uncertainty.
  2. Selects ambiguous rows plus a random audit sample for you to label.
  3. Uses your accumulated labels and optional rationales to run GEPA.
  4. Shows the score, certainty change, and proposed definition diff.
  5. Lets you accept, reject, rewind, or resume later.

Every label comes from you. A higher training score never accepts a proposal automatically.

Task types

Type Output
Binary True or False
Multiclass Exactly one fixed label
Multilabel Zero or more fixed labels
Score One level from an ordered rubric

Configuration

The guided Advanced menu configures:

  • 5, 10, 15, or 20 training annotations per round.
  • An optional 20% held-out evaluation set.
  • GEPA's metric-call budget, which defaults to 300.

By default, jev-align uses the first 1,000 rows—or the entire dataset when it is smaller—and lets you concatenate all fields or select specific columns.

Everything can also be configured with flags:

jeva optimize posts.csv \
  --question "Is the post related to aviation?" \
  --column title \
  --column text \
  --pool-size 1000

Use repeated --class "NAME=DESCRIPTION" options for multiclass or multilabel tasks, and repeated --score-level options for scoring tasks. Run jeva optimize --help for the complete flag reference.

Reflection models

GEPA's reflection model is separate from the JEV model evaluating your data. OpenAI, Anthropic, and Gemini models are detected automatically. Any LiteLLM provider—including Fireworks, local vLLM, and other OpenAI-compatible endpoints—can be supplied with --reflection-model provider/model.

export HOSTED_VLLM_API_BASE="http://localhost:8000/v1"
jeva optimize data.csv --question "Is this relevant?" --column text \
  --reflection-model "hosted_vllm/Qwen/Qwen3-8B"

Controls

  • Arrow keys and Enter navigate menus.
  • b returns to the previous label; /back leaves the rationale prompt.
  • Space toggles choices in multilabel tasks.

Saved AI Functions

jeva functions
jeva optimize --resume .jev-align/runs/<run-id>

Keep learning from production

Load an AI Function in your application and capture useful production examples:

from jev_align import AIFunction

is_aviation = AIFunction.load(
    ".jev-align/runs/<run-id>",
    capture=True,
)

prediction = is_aviation(
    title="Airport expansion",
    text="A new runway opens next year.",
)

Later, resume the AI Function and label the captured examples. GEPA uses that feedback to propose the next version:

jeva functions

Using a coding agent

See AGENTS.md for detailed setup, provider configuration, CLI operation, and development guidance for coding agents.

Affiliation

Sutro is not affiliated with TypeSafe AI, the makers of Jev.

Release files for jev-align 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jev-align 0.1.0
File Size Uploaded
jev_align-0.1.0.tar.gz 2.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for jev-align 0.1.0
File Interpreter ABI Platform
jev_align-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 4.7 MB

Release files / jev_align-0.1.0.tar.gz

Download URL jev_align-0.1.0.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
aa315cafde1c5dc567dcdb7fe5f7cb40ea913510f25508fab7958db2b86478b1
BLAKE2b-256 checksum
How to use checksums
73ce62b243da661865e7515a690a9b238df15c1a69e243987416dc4d9d173f55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / jev_align-0.1.0-py3-none-any.whl

Download URL jev_align-0.1.0-py3-none-any.whl
Size 2.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
61b3f2f04b9c62c774cd6d740d2365a235835ce9e988bac076d5d9e5a0d479e3
BLAKE2b-256 checksum
How to use checksums
e30940d9574ca91ce2976957f09dcc3ac123024f5f823c53ec1f36fc4f2edc54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.2

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page