Huashu Design
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
Cloudflare's 27B multimodal model that scores the allowed answers to typed questions about a text, JSON, image or video input, instead of writing free text.
Clef is a kit in the Developer category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page, a zip of its files. Nothing in it runs by itself.
pip install -U huggingface_hub hf download Cloudflare/clef
Clef is a 27B multimodal model from Cloudflare. You give it a situation and a list of questions that each have fixed answer options. It scores every option of every question in one pass, so you get probabilities instead of a written reply.
The situation can be text, JSON, images or video. Clef is post-trained from Qwen3.8-27B and adds a small head that scores all the options together.
It suits teams that need a model to make a structured decision, such as sorting a message or labeling a record, and want numbers they can act on. The card describes its API as compatible with Jev and SystemOne.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Customer support | Support engineers | Route messages to the right team | Choosing between billing and technical |
| Finance operations | Back-office teams | Classify records by status | Reading an invoice as paid, overdue or draft |
| Software | Backend developers | Add a decision step to a workflow | Checking whether a message sounds urgent |
| Data teams | Analysts | Label inputs against a fixed set of answers | Scoring a record on a named scale |
Skip it if you need free-form writing, since this model does not generate text.
| Use case | Who | What they get back |
|---|---|---|
| Triage a message | Support teams | A probability for each team that could handle it |
| Classify a record | Operations teams | A probability for each allowed status |
| Yes or no checks | Developers | The probability that a statement is true |
You need a few things in place first.
pip install -U huggingface_hub hf download Cloudflare/clef
You write a record with a state and a set of questions. Each question has a type, its instructions and, for a choice, the allowed options. The helper encodes the record, runs the model and returns one score per option. A softmax per question turns them into probabilities.
import sys
import torch
from huggingface_hub import snapshot_download
path = snapshot_download("Cloudflare/clef")
sys.path.insert(0, path)
from joint_schema_model import collate_records, encode_record, load_release_model
model, processor = load_release_model(path, device="cuda")
record = {
"state": {"invoice": {"vendor": "Acme", "total": 1250.0, "currency": "USD", "status": "overdue"}},
"questions": {
"status": {
"type": "choice",
"instructions": "What is the invoice status?",
"criteria": {"paid": "Invoice is paid.", "overdue": "Invoice is past due.", "draft": "Not sent."},
},
"large": {"type": "noul", "instructions": "Is the total above 1000 USD?"},
},
}
encoded = encode_record(processor.tokenizer, record, processor=processor)
batch = collate_records([encoded], processor.tokenizer.pad_token_id, torch.device("cuda"))
with torch.inference_mode():
logits = model(batch)[0]
for question, question_logits in zip(encoded.questions, logits):
probabilities = question_logits.float().softmax(-1).tolist()
print(question.question_id, dict(zip(question.option_ids, probabilities)))To serve it, the card shows a Docker command that starts SGLang on a single H200.
docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--ipc=host \
lmsysorg/sglang:dev-clef \
sglang serve \
--model-path Cloudflare/clef \
--host 0.0.0.0 \
--port 30000| Tool | What it does |
|---|---|
| load_release_model | Loads the backbone and the scoring head from the downloaded folder |
| encode_record | Turns a state and its questions into model input |
| systemone | A Python function that answers a Jev or SystemOne style request |
You pass an invoice record from Acme with the question "What is the invoice status?" and the options paid, overdue and draft. You get back a probability for each option, plus one for the yes or no question about a total above 1000 USD.
Think of Clef as a classifier you steer with questions, not a chatbot. Start by running the Python record from the card and reading the probabilities it prints. Change one option description and run it again.
Under the hood, a Qwen3.8-27B backbone with its vision encoder feeds a joint head. A small head on top of the backbone matches parts of the state to each question and ranks every option jointly. There is no sampling and no output parsing. The API returns a choice, a score or a yes or no probability per question, plus a confidence value.
Cloudflare's 27B multimodal model that scores the allowed answers to typed questions about a text, JSON, image or video input, instead of writing free text.
Made by Cloudflare on Hugging Face. These notes are Mindket's, written from its model page and model card; the model's own files and license are on Hugging Face.
What it is: Clef is a 27B multimodal model from Cloudflare. You give it a situation and a list of questions that each have fixed answer options. It scores every option of every question in one pass, so you get probabilities instead of a written reply.
The situation can be text, JSON, images or video. Clef is post-trained from Qwen3.8-27B and adds a small head that scores all the options together.
Who it suits: It suits teams that need a model to make a structured decision, such as sorting a message or labeling a record, and want numbers they can act on. The card describes its API as compatible with Jev and SystemOne.
Industry | Who uses it | How they use it | Example
Customer support | Support engineers | Route messages to the right team | Choosing between billing and technical
Finance operations | Back-office teams | Classify records by status | Reading an invoice as paid, overdue or draft
Software | Backend developers | Add a decision step to a workflow | Checking whether a message sounds urgent
Data teams | Analysts | Label inputs against a fixed set of answers | Scoring a record on a named scale
Skip it if you need free-form writing, since this model does not generate text.
Where to use it:
Use case | Who | What they get back
Triage a message | Support teams | A probability for each team that could handle it
Classify a record | Operations teams | A probability for each allowed status
Yes or no checks | Developers | The probability that a statement is true
How to set it up: You need a few things in place first.
pip install -U huggingface_hub
hf download Cloudflare/clef
How to use it: You write a record with a state and a set of questions. Each question has a type, its instructions and, for a choice, the allowed options. The helper encodes the record, runs the model and returns one score per option. A softmax per question turns them into probabilities.
import sys
import torch
from huggingface_hub import snapshot_download
path = snapshot_download("Cloudflare/clef")
sys.path.insert(0, path)
from joint_schema_model import collate_records, encode_record, load_release_model
model, processor = load_release_model(path, device="cuda")
record = {
"state": {"invoice": {"vendor": "Acme", "total": 1250.0, "currency": "USD", "status": "overdue"}},
"questions": {
"status": {
"type": "choice",
"instructions": "What is the invoice status?",
"criteria": {"paid": "Invoice is paid.", "overdue": "Invoice is past due.", "draft": "Not sent."},
},
"large": {"type": "noul", "instructions": "Is the total above 1000 USD?"},
},
}
encoded = encode_record(processor.tokenizer, record, processor=processor)
batch = collate_records([encoded], processor.tokenizer.pad_token_id, torch.device("cuda"))
with torch.inference_mode():
logits = model(batch)[0]
for question, question_logits in zip(encoded.questions, logits):
probabilities = question_logits.float().softmax(-1).tolist()
print(question.question_id, dict(zip(question.option_ids, probabilities)))
To serve it, the card shows a Docker command that starts SGLang on a single H200.
docker run --gpus all \
--shm-size 32g \
-p 30000:30000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--ipc=host \
lmsysorg/sglang:dev-clef \
sglang serve \
--model-path Cloudflare/clef \
--host 0.0.0.0 \
--port 30000
Tool | What it does
load_release_model | Loads the backbone and the scoring head from the downloaded folder
encode_record | Turns a state and its questions into model input
systemone | A Python function that answers a Jev or SystemOne style request
Example: You pass an invoice record from Acme with the question "What is the invoice status?" and the options paid, overdue and draft. You get back a probability for each option, plus one for the yes or no question about a total above 1000 USD.
For newcomers and experts: Think of Clef as a classifier you steer with questions, not a chatbot. Start by running the Python record from the card and reading the probabilities it prints. Change one option description and run it again.
Under the hood, a Qwen3.8-27B backbone with its vision encoder feeds a joint head. A small head on top of the backbone matches parts of the state to each question and ranks every option jointly. There is no sampling and no output parsing. The API returns a choice, a score or a yes or no probability per question, plus a confidence value.
Send a state and typed questions
The backbone reads the state
The joint head scores every option
You get a probability per option
Good to know:
Download its files with Hugging Face's command line:
pip install -U huggingface_hub
hf download Cloudflare/clef
Then follow the usage in its model card. Nothing in this kit runs by itself.
README.md 7 KB
Listed Hugging Face models in the same category that share the most tags with this one.
| Product | Downloads, last 30 days | Likes | Parameters | License | Last change |
|---|---|---|---|---|---|
| Clef This page | 72,287 | 2,356 | 27.4B | apache-2.0 | |
| Clef-FlashShares image-text-to-typed-output · post-train · cloudflare | 36,799 | 919 | 9.4B | apache-2.0 | |
| Cloudflare clef GGUFShares image-text-to-typed-output · post-train · cloudflare | 18,354 | 36 | 27B | apache-2.0 | |
| clef-flash-4bitShares cloudflare · clef · systemone | 3,524 | 40 | 9.4B | apache-2.0 | |
| Clef-LoRA-for-Qwen3.8-27B-GGUFShares clef · systemone · qwen3.8 | 311 | 6 | 668M | apache-2.0 | |
| Qwen3.8-27B-piShares qwen3.8 · multimodal · qwen3_5 | 1,857 | 87 | 27.8B | apache-2.0 |
Posts and comments that name this project on Hacker News, Bluesky, X, Reddit, Facebook and YouTube, found by a weekly search and on Trendshift. Mindket doesn’t write or check them. Open one to read it where it was posted.
alchaincyf · Skill
Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…
op7418 · Skill
Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…
alirezarezvani · Skill
Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…
block · Kit
Self-hostable workspace where people and AI agents share the same rooms, built on a Nostr relay that logs every action as a signed event. For teams that want t…
backnotprop · Kit
Opens your AI coding agent's plans, specs and code changes in a browser so you can annotate or comment on them and send the feedback straight back to the agent.
alibaba · Kit
Reviews Git changes with an AI agent that reads files and searches the codebase, then writes comments tied to exact lines. It suits developers who want automat…