sutro-sh/jev-align

★ 200⑂ 16

Build calibrated AI classifiers from human feedback using Jev and GEPA.

About sutro-sh/jev-align

sutro-sh/jev-align is an open-source project on GitHub, mainly written in Python. Build calibrated AI classifiers from human feedback using Jev and GEPA. It currently holds 200 stars and 16 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

AI Homed tracks it on the Today's Trending board, currently at rank #80 with 0 new stars today.

GitHub Repository Details

Repository sutro-sh/jev-align · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

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.

Demo

https://github.com/user-attachments/assets/81650587-e3f1-4655-8213-ed5f6e120e9a

Quick start

Requires Python 3.11 or newer.

uv tool install jev-align
export TYPESAFE_API_KEY="..." # Or use Vercel or Cloudflare below
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:

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.

Jev providers

Jev can run directly through TypeSafe AI, Vercel AI Gateway, or Cloudflare Workers AI. The guided setup detects configured providers and lets you choose.

# Vercel AI Gateway
export AI_GATEWAY_API_KEY="..."
jeva optimize data.csv --question "Is this relevant?" --column text \
  --backend vercel

Cloudflare Workers AI

export CLOUDFLARE_ACCOUNT_ID="..." export CLOUDFLARE_API_TOKEN="..." jeva optimize data.csv --question "Is this relevant?" --column text \ --backend cloudflare

These routes do not require a TYPESAFE_API_KEY. The chosen provider is saved with the AI Function, so later runtime calls use the same provider. GEPA's reflection model is configured separately.

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

Saved AI Functions

jeva functions
jeva optimize --resume .jev-align/runs/

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/", 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.

GitHub Stars & Activity

200Stars
16Forks
0Open issues
PythonLanguage

GitHub Popularity

GitHub stars200
Forks16
Open issues0
Primary languagePython
License-
Stars gained today0
Created-
Last pushed-

Trending History

Daily boardrank #80 · ▲ 0 stars

Related AI Projects

1

NousResearch / hermes-agent

Python★ 247,332⑂ 51,995
2

Significant-Gravitas / AutoGPT

Python★ 187,453⑂ 46,009▲ 30 stars
3

docling-project / docling

Python★ 67,364⑂ 4,850▲ 129 stars
4

openai / openai-python

Python★ 31,654⑂ 5,822▲ 13 stars
5

harvard-edge / cs249r_book

Python★ 28,368⑂ 3,587▲ 31 stars
6

browser-use / browser-harness

Python★ 17,826⑂ 1,748▲ 86 stars
7

FareedKhan-dev / train-llm-from-scratch

Python★ 10,015⑂ 1,390▲ 196 stars
8

zhouxiaoka / autoclip

Python★ 7,748⑂ 1,504▲ 325 stars

More AI Rankings