Developers / JevModel
Batch text classification with the JevModel API
Classify CSV or JSONL rows with Jev Choice questions. Reuse the normal API, preserve row IDs and export results without inventing a batch endpoint.
Last updated:
1. Choose the Console or a server-side loop
Console → Batch imports CSV, TXT or JSONL locally and applies one fixed question set to each row. It exports row-level results; it is not an accuracy dashboard. From code, use POST /api/v1/systemone once per row. JevModel does not expose an asynchronous bulk-job endpoint or a single-request discount here. A row with multiple questions is still an ordinary request. Use the Console when you want to inspect a file before integration; use your server when you need repeatable imports and durable result storage.
JevModel API: request and responseEvaluate a Jev workflow2. Prepare a small, identifiable input file
Start with representative examples and keep a stable row ID in your own output. Multi-column CSV uses its first row as column headers; a one-column CSV treats every row as text. JSONL has one JSON value per nonempty line; TXT uses one nonempty line per state. Console files are capped at 2 MB (2,000,000 bytes) and 1,000 rows. Serialized state is capped at 8,000 characters, and the complete validated request including questions must also fit within 8,000. Leave space for question descriptions and JSON syntax rather than filling the whole row budget.
3. Use one fixed Choice contract
For a support backlog, define billing, technical and review before sending any rows. Keep the question unchanged across the file so results are comparable. The example request is for one row, not an array of independent jobs; array state is shared context for one judgment. The row ID belongs in your result bookkeeping. Review overlapping labels and ambiguous input before increasing volume. A reply needs more than a category: leave writing to your application or a generative model.
Route customer support with JevUse Jev for review queues{
"state": "The customer was charged twice and requests an invoice correction.",
"questions": {
"queue": {
"type": "choice",
"instructions": "Which team should handle this customer message?",
"criteria": {
"billing": "Charges, refunds and invoice corrections.",
"technical": "Broken app behavior, API failures and outages.",
"review": "Ambiguous or unsupported requests that need a person."
}
}
}
}4. Save each result and stop on ambiguous failures
For each row, send the ordinary request from your server, check HTTP status and code === 0, and store its request_id, answer and original row ID before moving on. Begin sequentially; do not flood the API with unmeasured concurrency. The existing GitHub clients demonstrate one request and explicit --live opt-in. There are no idempotency keys: a lost response may hide a successful, billed run. Check history before retrying that row, and resume from stored results instead of blindly rerunning the whole file. Console processing also depends on the current browser session; export results before leaving.
JevModel API: request and responsePrivate runs and history5. Compare labels and budget the next batch
Every successful row uses one of the shared 10 daily free runs first, subject to site capacity, then actual input tokens from the same balance as Playground and API. Failed ordinary requests refund their reservation. Export probabilities along with selected labels, compare with independently labeled cases, and count wrong automatic actions separately from human-review volume. Keep wordings, model path and evaluation data fixed when comparing revisions. JevModel is independent and not affiliated with TypeSafe AI; the examples are workflow designs, not measured accuracy claims.
Score leads on a useful rubricJevModel pricing and free Jev runsJevModel is independent and not affiliated with TypeSafe AI.