La versione open e locale di Jev. Dai uno state, fai le tue domande: torna un sì/no, una classe, uno score o un numero, con le probabilità. Sul tuo computer. The open, local take on Jev. Give it a state, ask your questions: get back a yes/no, a class, a score or a number, with probabilities. On your own machine.
Apple Silicon · MLX · nessuna chiave API, nessuna telemetria Apple Silicon · MLX · no API key, no telemetry
Scegli un esempio e il tipo di risposta, poi dallo in pasto al riccio. Pick an example and an answer type, then feed it to the hedgehog.
Risposte e tempi reali, registrati da Spark-X2.5-4B a 8 bit su una RTX 5060 Ti (mediana di 5 chiamate a caldo, prompt v3). Nessuna risposta è stata scelta o corretta a mano. Il viaggio dei dati è rallentato per farsi vedere; il riccio "pensa" davvero per quei millisecondi. Real answers and timings, recorded from Spark-X2.5-4B at 8 bit on an RTX 5060 Ti (median of 5 warm calls, prompt v3). No answer was picked or fixed by hand. The data's journey is slowed down so you can see it; the hedgehog really "thinks" for that many milliseconds.
Ogni mossa è una decisione del modello: una POST /v1/decisions, zero token generati.
Every move is one model decision: one POST /v1/decisions, zero generated tokens.
Registrazione a velocità reale, non accelerata: 140 mosse in 25,6 s (≈ 5,5 al secondo), circa 150 ms a decisione andata e ritorno. Spark-X2.5-4B a 8 bit su una RTX 5060 Ti (CUDA). È una sola partita, non un benchmark; la demo è inclusa nel backend su /snake.
Recorded at real speed, not sped up: 140 moves in 25.6 s (≈ 5.5 per second), about 150 ms per decision round trip. Spark-X2.5-4B at 8 bit on an RTX 5060 Ti (CUDA). One game, not a benchmark; the demo ships with the backend at /snake.
La decisione è già nel modello dopo un solo passaggio: basta leggerla. The decision is already in the model after a single pass: you just read it.
Testo o JSON: un ticket, un CV, un log.Text or JSON: a ticket, a CV, a log.
Lo state si elabora una volta; la cache si riusa per ogni domanda.The state is processed once; its cache is reused for every question.
Ogni risposta possibile è una lettera. Si leggono solo quei logit.Every possible answer is a letter. Only those logits are read.
Valore + probabilità. Niente parsing, niente errori di tipo.Value + probabilities. No parsing, no type errors.
Stessa richiesta, stessa risposta: cambi solo l'URL. E la risposta dichiara sempre il modello locale. Same request, same response: you only change the URL. And the response always names the local model.
Forma della risposta; i valori qui sono illustrativi. Shape of the response; the values here are illustrative.
Per classificare, instradare, dare un punteggio, verificare. Dentro il tuo codice.To classify, route, score, verify. Inside your code.
Pesi open sul tuo Mac o sulla tua GPU NVIDIA. Nessun dato esce, nessuna chiave API.Open weights on your Mac or your NVIDIA GPU. No data leaves, no API key.
Un passaggio, nessun ciclo di generazione: circa 85 ms a decisione su una RTX 5060 Ti, 250 ms su un M4 Pro.One pass, no decoding loop: about 85 ms per decision on an RTX 5060 Ti, 250 ms on an M4 Pro.
boolean, choice, score, numeric. Fino a 26 opzioni per domanda.boolean, choice, score, numeric. Up to 26 options per question.
21 domande su uno state da ~2.000 token: 1,8 s con il prefill condiviso, 12,7 s senza (RTX 5060 Ti, 8 bit).21 questions on a ~2,000-token state: 1.8 s with the shared prefill, 12.7 s without (RTX 5060 Ti, 8 bit).
Astensione e fuori scala integrati: il valore diventa null, con uno status.Built-in abstention and out-of-range: the value becomes null, with a status.
Attenzione ibrida: ~36 KiB di cache per token. Il limite lo scegli tu con --ctx.Hybrid attention: ~36 KiB of cache per token. You pick the limit with --ctx.
Il playground incluso nel backend, in italiano e in inglese. The playground that ships with the backend, in Italian and English.
Senza sconti: dove siamo avanti e dove no.No sugar-coating: where we lead and where we don't.
| rizzo-flow | Jev (TypeSafe) | SemIf | |
|---|---|---|---|
| Dove giraWhere it runs | In locale · Apple Silicon, NVIDIA CUDALocal · Apple Silicon, NVIDIA CUDA | Servizio cloudHosted service | In locale · CUDA, MLXLocal · CUDA, MLX |
| Pesi openOpen weights | ✓ Spark-X2.5 | ✗ | ✓ Qwen3.5 |
| API HTTP stile JevJev-style HTTP API | ✓ | l'originalethe original | ✗ CLI |
| Primitiva numericaNumeric primitive | ✓ | ✗ | ✗ |
| Opzioni per domandaOptions per question | 26 | 255 | 16 |
| Probabilità calibrateCalibrated probabilities | le calibri tuyou calibrate | ✓ dichiarateclaimed | ✗ |
| Contesto in inputInput context | 1M token1M tokens | 32k | 262k |
Qualità su authored144Quality on authored144 | 0.829 | — | 0.819 |
Progetto indipendente, non affiliato a TypeSafe. Qualità: balanced accuracy a 8 bit, fixture e metrica di SemIf. Contesto: massimo del modello; di default 8.192 token (--ctx). Tutti i risultati e i limiti.
Independent project, not affiliated with TypeSafe. Quality: balanced accuracy at 8 bit, SemIf's fixtures and metric. Context: model maximum; 8,192 tokens by default (--ctx). All results and caveats.
Mac con Apple Silicon (o GPU NVIDIA: --extra cuda), Python 3.11+ e uv. Quattro comandi.A Mac with Apple Silicon (or an NVIDIA GPU: --extra cuda), Python 3.11+ and uv. Four commands.
git clone https://github.com/Rizzo-AI-Academy/rizzo-flow && cd rizzo-flow
uv sync --extra mlx --extra test --locked
.venv/bin/rizzo download # 4B, ~8 GB · --size 1.7b → ~3.4 GB
.venv/bin/rizzo serve --bits 8 # → http://127.0.0.1:8017/playground