OneJev¶
| Checkpoints | Inputs |
|---|---|
OmniJev/OneJev1.6-0.8B, -4B, -9B, -27B |
text, images, video |
OneJev models are trained to answer System One questions. Flide renders every question with OneJev's own prompt,
reads the answer slots from the output head at the question's last token, and applies the calibration.json that
ships next to the weights. The rendering matches the training prompts byte for byte. A choice with more options
than the model has answer slots is asked in chunks, each with an option for none of the listed ones, so a choice
takes up to 256 options. A score takes as many levels as the model has answer slots.
Start a server¶
flide serve --model OmniJev/OneJev1.6-0.8B
Send a request¶
curl http://localhost:8000/v1/systemone -H "Content-Type: application/json" -d '{
"state": "Order #1182 arrived with a cracked screen. The customer asks for a refund and attached two photos.",
"questions": {
"action": {"type": "choice", "instructions": "What should support do next?",
"criteria": {"refund": "refund the order", "replace": "send a replacement", "escalate": "ask a human"}},
"urgent": {"type": "noul", "instructions": "Does this need a reply within the hour?"}
}
}'
Images and video¶
A request carries its pictures in media, and the state marks where each one belongs with <image:N> or
<video:N>, counted from 1 in the order of media. Each item is referenced once, in order.
IMG=$(base64 -w0 photo.jpg)
curl http://localhost:8000/v1/systemone -H "Content-Type: application/json" -d @- <<EOF
{
"state": {"ticket": "Order #1182 arrived with a cracked screen. The customer asks for a refund.", "photo": "<image:1>"},
"media": [{"type": "image", "data": "data:image/jpeg;base64,$IMG"}],
"questions": {
"cracked": {"type": "noul", "instructions": "The photo shows a cracked screen"},
"action": {"type": "choice", "instructions": "What should support do next?",
"criteria": {"refund": "refund the order", "replace": "send a replacement", "escalate": "ask a human"}}
}
}
EOF
A video is a list of frames that are already extracted, and fps sets the timestamps the model sees (1.0 when left
out).
F1=$(base64 -w0 frame1.jpg); F2=$(base64 -w0 frame2.jpg); F3=$(base64 -w0 frame3.jpg)
curl http://localhost:8000/v1/systemone -H "Content-Type: application/json" -d @- <<EOF
{
"state": {"task": "The robot moves the red block onto the blue mat.", "clip": "<video:1>"},
"media": [{"type": "video", "fps": 1.0, "frames": ["data:image/jpeg;base64,$F1",
"data:image/jpeg;base64,$F2",
"data:image/jpeg;base64,$F3"]}],
"questions": {
"done": {"type": "noul", "instructions": "At the end of the clip the red block is on the blue mat"}
}
}
EOF
An image or a frame is given as data (a data URL or plain base64), as url (http or https), or as path. Paths
resolve against the directory given by --media-root and are refused without it.
Options¶
| Option | What it does |
|---|---|
?debias=3 |
asks each question in 3 cyclic shifts of its options and combines them (default 1, the order given) |
--calibration FILE |
another calibration.json in place of the one next to the weights |
--media-root DIR |
the directory local media paths resolve against |
--max-branch-tokens 32768 |
longest state plus question, in tokens |
--max-request-tokens 65536 |
longest request, the state once plus every question, in tokens |
debias is a query parameter of the request, as in /v1/systemone?debias=3. The response carries Flide's timing
under the key onejev, and the server also answers to the model names jev-latest and jev-preview.