jevper
Python wrapper that answers System One and OpenAI Decisions API questions using any OpenAI-compatible chat model.
Overview
jevper is an independent implementation of OpenAI's documented Decisions API schema and TypeSafe's System One wire format on top of any OpenAI-compatible model. You wrap an existing client, such as the OpenAI SDK pointed at a local llama.cpp, LM Studio, Ollama, vLLM or SGLang server, or an Anthropic-compatible endpoint, and call client.decisions.create with an input and predicate, choice or score questions. It returns typed answers with a confidence and usage, in the same shape the native route returns.
The point is portability: a model you run today can answer decision questions now, and moving later to a native decisions route is a client swap rather than a rewrite. Requests that include something jevper cannot ask the model about, notably image inputs, are refused before sending rather than answered from missing evidence. The raw underlying response is kept for inspection. It is not affiliated with OpenAI or TypeSafe and is aimed at developers who want Jev-shaped classification over models they already use.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Pick the intent of the message. | billing · technical · sales |
| Yes / no | Any predicate (yes/no) question about the input | — |
| Score | Any ordered score question about the input | — |
How it works
- Wrap an OpenAI-compatible client in SystemOneClient
- Call decisions.create with input and typed questions
- jevper asks the chat model and derives a typed answer and confidence
- Unsupported inputs such as images are refused before sending
Strengths
- Use decision-style APIs with local or existing models
- Same request and response shape as the native route
- Refuses rather than guesses when evidence is missing
Caveats
- Confidence comes from a general chat model, not a trained decision model
- No image input support
- Independent, unofficial implementation
Getting started
from jevper import SystemOneClient; client = SystemOneClient(OpenAI(), model=...); client.decisions.create(input=..., questions=[...])At a glance
- Type
- Library
- Status
- beta
- Language
- Python
- Runtime
- library
- Has code
- yes
Use cases and integrations
How curated lists describe it
Jev-shaped (TypeSafe System One) classification wrapper over OpenAI-like clients.
wh000wh000/awesome-jev-liveJev-shaped (TypeSafe System One) classification wrapper over OpenAI-like clients: probabilities and confidence instead of prose.
hellogumbo/awesome-jevIndependent implementation of the documented System One wire format over an OpenAI-compatible chat model.
MrJev/awesome-jev
Frequently asked questions
Do I need Jev to use jevper?
No. It asks any OpenAI-compatible chat model the same typed questions.
Why use the Decisions schema?
So code written now can switch to a native decisions route later by changing only the client.
Are images supported?
No, requests with image inputs are refused before anything is sent.
Related projects
Swift package for typed decisions (probability, choice, score) over local MLX or Core AI models, Clef decision heads, or the Jev API.
LibrarybetaSwiftNative Go runtime serving Gemma 4 12B as a Jev-like decision model with hand-tuned PTX kernels and no CGo or CUDA toolkit.
ProjectbetaGoGo harness for System One models: hosted Jev, open Kev in-process via llama.cpp, and Cloudflare Clef, with typed helpers and a CLI.
ServicebetaGoGo gateway exposing the Jev /v1/systemone contract over ordinary LLM backends by reading single-token label logprobs.
ServicebetaGoTypeScript library for one-line local decisions with open models (kev-0.6b, kev-4b, open-jev), no API keys or cloud.
ProjectbetaTypeScriptPython library that finds numeric answers by bisection, asking Jev higher, lower or exactly at each guess.
ProjectbetaPython