Docs
CommunityJev Tools & CLIs
jevclient (PyPI)
The PyPI page for jevclient 1.3.1, an independent async Python client for TypeSafe Jev: typed Noul, Choice, Score and Box questions batch into one request, with image assets, billing tables and error classes documented in the README.
- Format
- Docs
- Reading time
- 3 min
- Published by
- Community
- Author
- AboveColin
- Last verified
- Oct 2026
Highlights
- Version 1.3.1; requires Python 3.12 or newer and aiohttp; installs with pip install jevclient.
- Four question types: Noul (probability of yes), Choice, Score and Box (image location); a Noul carries no confidence.
- Batching is nearly free in time: 3 questions answered in 712 ms and 400 in 1,336 ms, measured from the Netherlands on 2026-09-17.
- Image part of a request costs 2 x ceil(width/28) x ceil(height/28) tokens; sides must be 280 to 1568 px or the API returns 400.
- Box needs Jev 1.14; images work on 1.13 too, and an asset no string refers to is refused locally before a request is spent.
Quickstart
bash
pip install jevclientWatch out
Page text fetched 2026-10-17; the PyPI project page itself served a client challenge, so this entry rests on the metadata and README recovered in the supplemental fetch (version 1.3.1, requires_python >=3.12, author and licence undeclared). Latency and image-token figures are the README's own measurements on the dates it names. The README says the client is independent and not affiliated with TypeSafe, and links GitHub Sponsors for abovecolin.
Questions about this entry
Short answers drawn from the linked project or page.
An async Python client for TypeSafe Jev, the System One decision model, published on PyPI as version 1.3.1. Jev answers typed questions about a state and returns values, so there is no text to parse; the README states the client is independent and not affiliated with TypeSafe.
pip install jevclient. It requires Python 3.12 and aiohttp, and it can use your own aiohttp.ClientSession if you have one, in which case closing it stays your responsibility. Base URL and model are configurable on the client.
Four: Noul for yes/no questions returning the probability of yes; Choice for one of your options with probabilities and confidence; Score against ordered levels with a weighted score; and Box for where something is in an image. A Choice takes 2 to 255 options and a Score 2 to 10 levels, checked locally.
Pass images in assets keyed by a reference string and write the reference where the image belongs, in the state, an instruction or a criterion. The client sends a danger-zone header only when a request has an image or Box, and Box requires Jev 1.14 or jev-preview; on 1.13.0 the API answers 400.
Every question in a call is evaluated in isolation against the same state and answered in parallel: measured latency was 712 ms for 3 questions and 1,336 ms for 400, with warm connections at 250-580 ms. Question text is billed as input tokens, about 38 for a short question, and output is billed at zero.
Through typed exceptions: JevAuthError (401), JevValidationError (400, 413, 422), JevRateLimitError (429, carrying retry_after), JevOverloadedError (529) and JevConnectionError, all deriving from JevError. There is no internal retry loop, so the caller sets the policy, and errors from an HTTP answer carry their status.
Yes: base_url points the client away from https://api.typesafe.ai and model names which model to ask, with /v1/systemone appended to the base URL so a path prefix is kept. An empty api_key sends no Authorization header for endpoints that need no credential.
From the Jev guides
Original write-ups on what this entry is for.
From the Jev AI model community
Posts from builders shipping with Jev right now.