Guides / 動画ウォークスルー
Jev Text Classification API: Zero-Shot CLI & REST with classifier.dev
最終更新日: 2026-09-27
classifier.dev wraps the Jev decision engine in a zero-shot text classification CLI and REST API. This illustrated guide installs the tool, pipes a bulk feedback file through comma-separated labels, gates on --review 0.7, and dissects the input + labels POST contract and its typed JSON response.
要点
classifier.dev is a stateless zero-shot text classification proxy over the Jev decision engine — no API key, account, or auth, because the state you send is judged and immediately discarded. One npm command (npm i -g classifier.dev) gives you a classify command that takes comma-separated taxonomy tags plus a stdin-redirected text file and returns every line with its assigned category. Add --review 0.7 (any float strictly between 0 and 1) to route low-confidence rows to human review while high-confidence rows continue to the automated pipeline. The same engine is a REST API: POST { input, labels } to the classifier.dev endpoint — cap the taxonomy at 100 discrete categories per request — and read back { label, confidence, scores, model, ms }; the video’s demo response returns label "bug" with confidence 1 from model jev-1.13.0 in 260 ms. Because no tokens are generated, hallucinated categories and multi-second LLM delays never enter the pipeline, and agents can attach the same capability via MCP.
ステップごとのウォークスルー
- 1
Why text classification needs a decision engine, not an LLM
The video opens on the bottleneck: autoregressive LLMs generate one token at a time, so categorizing thousands of support tickets means paying latency and compute on every token — and risking hallucinated or malformed results. classifier.dev takes the other route: a specialized System One decision engine, powered by Jev, that evaluates the unstructured input and your predefined categories in a single parallel pass and returns a typed decision — no generated text anywhere in the loop. By the end of the 4:35 walkthrough you have both shapes of the same engine: a local CLI pipeline that parses bulk files, and a programmatic REST call for backends.

A decision engine judges; it never writes tokens.タイムスタンプ 0:20 を見る - 2
Install the CLI globally — no key, no account, no auth
Requirements are minimal: an active terminal, Node.js on your machine, and a basic text file. Provision the tool with npm i -g classifier.dev, then type classify to activate the help menu and confirm the binary is available system-wide — the install log checks off each package, prints Setup complete, and ends with Config verified. There is no API key provisioning, account creation, or authentication step at all: classifier.dev operates strictly as a stateless proxy, sending your data to the model and immediately discarding it.

One npm command; the help menu confirms the binary.タイムスタンプ 1:08 を見る - 3
Write the input file: one record per line
Zero-shot means you never train anything or upload examples — the labels themselves carry the semantics. Create a plain local text file filled with a few distinct lines of unstructured user comments. The video’s feedback.txt mixes three intentions: a bug report ("System is responsive but needs more features"), a feature request ("Color scheme is vibrant and clear" — a change request in context), and a compliment ("Integration with external tools is seamless"). One line equals one classification, and mixing intentions in one file is what makes the batch worth automating.

One line, one decision — mix intentions on purpose.タイムスタンプ 1:32 を見る - 4
Run classify: comma-separated tags + stdin redirection
The call shape is: the classify command, followed by your taxonomy tags as comma-separated arguments — error, function, praise in the video — then Unix standard input redirection to send the text file directly into the command stream: classify error,function,praise < feedback.txt. The terminal instantly echoes your original text with each line’s assigned category appended. Combining Unix data pipelines with zero-shot classification is how you structure massive logs on the fly, reaching the semantic understanding of an AI model without writing custom API wrapper code.

Tags as arguments, the file as stdin.タイムスタンプ 1:44 を見る - 5
Read the tagged output and trust the calibration
Every raw line comes back with its mathematically assigned category neatly added: the system error is tagged [bug], the two algorithm requests are tagged [feature], and the positive note is tagged [praise]. Underneath, the Jev model produces calibrated probabilities — the video contrasts this with standard language models, which frequently assign high certainty to incorrect statements. With calibration, higher confidence scores are strictly correlated with greater statistical accuracy, and that property is exactly what makes threshold-based automation safe in the next step.

Same lines in, every line labeled on the way out.タイムスタンプ 1:52 を見る - 6
Gate on confidence with --review 0.7
Run the CLI command again and add the flag --review 0.7. The value passed to review must be a float strictly between 0 and 1. That single flag establishes deterministic routing: ambiguous data points below the threshold are isolated for human review, while high-confidence results keep flowing to automated execution. The video’s calibration chart draws the split — statistical accuracy plotted against model confidence, the ideal-calibration diagonal rising through the 0.7 decision boundary, with the automated pipeline on one side and manual review on the other.

Below the line: a human. Above it: the pipeline.タイムスタンプ 2:28 を見る - 7
Go programmatic: POST { input, labels } from your backend
For web applications and microservices you move from the shell to programmatic REST calls: send a standard JSON POST request to the classifier.dev endpoint using curl in your backend script. The payload requires exactly two keys — an input string with your text and a labels array that defines your categories; the video’s request body pairs input "the checkout button does nothing" with the labels bug, feature, and praise. To maintain optimal processing speed in a single pass, limit the taxonomy space to a maximum of 100 discrete categories per request.

Two keys in: input + labels, capped at 100.タイムスタンプ 3:12 を見る - 8
Consume the typed response: label, confidence, scores, ms
The video’s 200 OK response shows the whole contract: the selected dominant string label ("bug") with its primary confidence score (1), a nested scores object breaking out independent probabilities for each requested label (bug 1, feature 0, praise 0), the model string (jev-1.13.0), and an ms key tracking server-side processing latency — 260 milliseconds. Enforcing the delimited JSON data contract means a non-existent category cannot be generated, which eliminates the prompt engineering and JSON-parsing defenses traditional LLM integrations need. Autonomous agents can add the same capability to their skill set via MCP, running AI triage with the speed and reliability of standard software infrastructure.

Typed answer, per-label scores, 260 ms on the clock.タイムスタンプ 3:28 を見る
よくある質問(FAQ)
Does the Jev text classification API need an API key?
No. classifier.dev operates strictly as a stateless proxy: it sends your text to the Jev model and immediately discards it, so there is no API key provisioning, no account creation, and no authentication step. You install the CLI with one npm command and start classifying, and the same holds for the REST endpoint you call from a backend.
How do I do sentiment analysis with the Jev API?
Sentiment is just another taxonomy. Pass your own labels — for example positive, negative, neutral — as comma-separated CLI tags or as the labels array in the JSON POST, and the engine returns the dominant label with a primary confidence plus per-label probabilities in the scores object. Because classification is zero-shot you can rename or rescope the label set any time without retraining; just keep it to at most 100 discrete categories per request.
How many categories can one Jev classification request handle?
The video advises limiting your taxonomy space to a maximum of 100 discrete categories per request to maintain optimal processing speed in a single pass. Tighter label sets also read better: every label you define becomes one branch of the parallel evaluation, and the response’s scores object hands you an independent probability for each requested label.
What fields come back in the classification response?
Five things, straight from the video’s 200 OK example: the selected dominant string label ("bug"), a primary confidence score (1), a nested scores object with independent probabilities per requested label (bug 1, feature 0, praise 0), the model identifier (jev-1.13.0), and an ms key with server-side processing latency (260 ms). The delimited JSON contract prevents labels outside your taxonomy from ever appearing.
Why not just prompt an LLM to classify text as JSON?
An LLM generates tokens one at a time and can hallucinate categories or emit malformed JSON, so production integrations grow prompt engineering plus defensive parsing. The Jev-backed endpoint returns a bounded JSON contract instead: the selected label comes from your taxonomy, confidence is calibrated so higher scores correlate with statistical accuracy, and the demo call finished in 260 ms. Routing deterministically on that confidence — review anything below your threshold — is what turns classification into infrastructure.
関連ガイド
Jev API Reference
The evaluate endpoint and typed payload behind classification calls like these.
読むJev Classification Quickstart
Sam Witteveen’s OpenRouter walkthrough of the Choice, Score, and Noul primitives.
読むSupport Ticket Routing Recipe
Route tickets on typed labels and thresholds — the production pattern this pipeline feeds.
読むWhen to Use Jev
Where a classification decision beats text generation — and where it does not.
読むJev API Errors & Rate Limits
Keep batch classification loops running through 429s and timeouts without losing batches.
読むその他の動画ウォークスルー
- Jev Classification Quickstart: OpenRouter API, Primitives & Real Probabilities
- Jev Architecture Explained: Why 70ms Decision Models Beat LLMs for Workflow Automation
- Ultra-Fast Browser Agents with Jev: 178ms DOM Loops & Dual Model Orchestration
- Open Jev Models Are Here: Semif, Nimble, Decider, DiffusionGemma & Laya Hands-On
- Jev vs LLM: Will Jev Replace LLMs? Krish Naik's Whiteboard Explainer
- Jev Trader Tutorial: Build a Subsecond AI Trading Bot on Monad
- Jev Model Router: Build a Privacy-Gated LLM Router with Jev & OpenJev
- Jev Tutorial for Beginners: State, Questions & the TypeScript SDK
- Run Jev Locally: Kev, SemIf & Von on Your Own GPU (OpenJev Guide)
- Jev RAG Reranker: Policy-Steered Reranking for Retrieval-Augmented Generation
- When to Use Jev: An Engineer's Audit of Claims, Gates, and Failure Modes
- LangChain + Jev Integration Tutorial: Routing, Guardrails & Evals
- Jev MCP Server: Connect Jev Decisions to Claude Code & Cursor
- Jev vs Luna: Independent Benchmarks Put "Better, Faster, Cheaper" to the Test
- Jev Agent Harness: Where the Decision Gate Sits in Your LLM Loop
- Jev Playground Walkthrough: The Hotdog Lesson, Criteria, and a Four-Console Token Test
- Jev API Examples: First Request, curl & All Three Question Types
- Expanso Edge と Jev でログをトリアージする
- Treg と Jev でリードをエンリッチする: ICP 判定と登録スコアリング
- Heym で Jev Decision Node を使う: モデルルーティングを制御する
- Laya Tutorial: Open-Source AI Routing With Calibrated Probabilities (Laya vs Jev Setup)
- Train Your Own Jev: Fine-Tune a Jev-Style Decision Model for $5–$17 (What You Can and Cannot Train)
- Jev Tips: 8 Best Practices for Better Decisions (State, Questions, Criteria & Thresholds)
- Jev Context Compaction: Prune AI Agent Memory Without Generative Summaries
- Jev as an LLM Judge: Confidence-Gated Cascades at 0.36% of the Cost
- TypeSafe Computer Use: Local Desktop Automation with Jev, Step by Step
- Jev Resume Screening: Build an AI Resume Evaluator with the Jev JavaScript SDK
- Jev + Claude Code Guide: Voice-Controlled Browser Automation with Typed Decisions
- Jev + Codex: Install the TypeSafe Skill and Triage a Real Gmail Inbox
- Jev vs Ollama: Can Local AI Replace Hosted Jev Without Sending Your Data Away?
- Build Your Own Jev: Train a Free Open-Source Zero-Shot Classifier (That Plays Doom)
- CUA-S1-Forms: a 706K-Parameter Jev-Like Model That Fills GUI Forms on Your CPU
- NOC/SOC Alert Triage with Jev: Rules First, One Typed Question, a Policy Gate
- Ollama Decision Models: Run tev1 and Nimble Locally (Tested on an 8 GB Card)
- Jev Guardrails in Production: A Five-Step Playbook for Decision Automation
- A Session Drift Guard for Pi Agent: Let the Jev Model Propose, Let Code Decide
- 50 Tev1 Use Cases: What a Local Decision Model Can Actually Do (Tested on an 8 GB Laptop)
- Jev, Hands-On: Where the Official Claims Meet Independent Remeasurement
- Jev Ticket Classification in a Real App: the After-Insert Hook and the Calculated Field
- OpenJev RLCD: Run the Open-Source Calibrated Decision Model Locally (Full Guide)
- Clef-Flash vs Jev: I Tested Cloudflare's Decision Model Locally in Ollama (Q4_K_M)
- Clef-Flash Tutorial: Install and Run Cloudflare's 9B Multimodal Decision Model Locally on Ubuntu
- CLM-8B: the Contrastive Decision Model That Scores 1,024 Options in 44 ms (13x Faster Than Jev)
- Nox 4B Tutorial: Run the Decision 2.0 Model Locally and Put It Through Four Real Decisions (One Ends in a Fail)
- Julia-1 Tutorial: Install the Open-Source Jev Replacement in Pure Python (and Watch It Beat If-Statements 9 to 2)
- OpenJev 0.8B on CPU: I Built a Ticket-Routing Inbox and Calibrated the Thresholds
- Jev n8n Integration: the JevGate Community Node, Step by Step (Plus a Plain-HTTP Fallback)
- NanoJev Tutorial: Install the 0.6B Open-Source Jev Replica and Watch It Route Decisions at 47 ms
- PPLX Decider Tutorial: Perplexity's Open 27B Decision Model, Its Decisions API, and a 12-Ticket Triage Run
- AutoTrust JEV-27B Tested Locally: Four Arms, 72 Cases, and One 0.969 Score That Was Wrong
- Clef 27B Locally: Watch Cloudflare’s Multimodal Decision Model Read an Image, a Video and an Uzbek Newspaper in One Pass
- Ollaya Guide: Install the "Ollama for Decision Models" Runner, Read Every Vendor-Reported Number, and Run the CPU Test It Leaves Open
- Strands Decider 2B Tutorial: Install the AWS Strands Decision Model on an 8GB Laptop — and Keep Its Failures In
- Liquid AI Open d1 Locally: d1-3B and d1-omni-600M on a MacBook Air M5 — Guardrails, Screen Checks, Voice Routing and Document Triage, Every Number Frame-Checked
- Image Decision Models for RPA: Watch Two Open Models Review an Unsigned W-8BEN With No OCR
- GLiNER2.5-Decide (340M) vs Jev (4B): Which Decision Model Actually Wins? A Frame-by-Frame Selection Guide
- Decision Models on Jetson: Jev vs Strands Decider 2B vs Laya vs d1-3B — Skill Master Scores, Thor Latency and JevBench, Every Number Frame-Checked
- Microsoft Decision-1 Tested: 146 Independent Tests, a 93% Mean, 124/125 When Confident — Every Number Frame-Checked
- Wire Jev into an Azure AI Foundry Agent as the Evaluation Layer — OpenAPI Tool, TypeSafe Connection, Triage Instructions and an Honest First-Run Failure