Zero-Shot Classification
Transformers
Safetensors
English
qwen3_5
feature-extraction
legal
decision-model
system-one
classification
citator
case-law
custom_code
Instructions to use jonathankleiman/lev with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use jonathankleiman/lev with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("zero-shot-classification", model="jonathankleiman/lev", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModel processor = AutoProcessor.from_pretrained("jonathankleiman/lev", trust_remote_code=True) model = AutoModel.from_pretrained("jonathankleiman/lev", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Lev 9B: frozen weights (rounds 1-6)
Browse files- NOTICE +2 -2
- config.json +8 -8
- decision_config.json +3 -3
- model-00001-of-00002.safetensors → model-00001-of-00004.safetensors +2 -2
- model-00002-of-00002.safetensors → model-00002-of-00004.safetensors +2 -2
- model-00003-of-00004.safetensors +3 -0
- model-00004-of-00004.safetensors +3 -0
- model.safetensors.index.json +0 -0
- questions.py +75 -0
- readout.safetensors +2 -2
NOTICE
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
d3-
|
| 2 |
Copyright 2026 vLLM Semantic Router Team
|
| 3 |
|
| 4 |
-
Built on Qwen/Qwen3.5-
|
|
|
|
| 1 |
+
d3-flash (Decision 3.0)
|
| 2 |
Copyright 2026 vLLM Semantic Router Team
|
| 3 |
|
| 4 |
+
Built on Qwen/Qwen3.5-9B (Apache-2.0).
|
config.json
CHANGED
|
@@ -15,9 +15,9 @@
|
|
| 15 |
"full_attention_interval": 4,
|
| 16 |
"head_dim": 256,
|
| 17 |
"hidden_act": "silu",
|
| 18 |
-
"hidden_size":
|
| 19 |
"initializer_range": 0.02,
|
| 20 |
-
"intermediate_size":
|
| 21 |
"layer_types": [
|
| 22 |
"linear_attention",
|
| 23 |
"linear_attention",
|
|
@@ -80,25 +80,25 @@
|
|
| 80 |
"rope_theta": 10000000,
|
| 81 |
"rope_type": "default"
|
| 82 |
},
|
| 83 |
-
"tie_word_embeddings":
|
| 84 |
"use_cache": true,
|
| 85 |
"vocab_size": 248320
|
| 86 |
},
|
| 87 |
-
"tie_word_embeddings":
|
| 88 |
"transformers_version": "5.17.0",
|
| 89 |
"video_token_id": 248057,
|
| 90 |
"vision_config": {
|
| 91 |
"deepstack_visual_indexes": [],
|
| 92 |
-
"depth":
|
| 93 |
"hidden_act": "gelu_pytorch_tanh",
|
| 94 |
-
"hidden_size":
|
| 95 |
"in_channels": 3,
|
| 96 |
"initializer_range": 0.02,
|
| 97 |
-
"intermediate_size":
|
| 98 |
"model_type": "qwen3_5_vision",
|
| 99 |
"num_heads": 16,
|
| 100 |
"num_position_embeddings": 2304,
|
| 101 |
-
"out_hidden_size":
|
| 102 |
"patch_size": 16,
|
| 103 |
"rope_parameters": {
|
| 104 |
"rope_theta": 10000.0,
|
|
|
|
| 15 |
"full_attention_interval": 4,
|
| 16 |
"head_dim": 256,
|
| 17 |
"hidden_act": "silu",
|
| 18 |
+
"hidden_size": 4096,
|
| 19 |
"initializer_range": 0.02,
|
| 20 |
+
"intermediate_size": 12288,
|
| 21 |
"layer_types": [
|
| 22 |
"linear_attention",
|
| 23 |
"linear_attention",
|
|
|
|
| 80 |
"rope_theta": 10000000,
|
| 81 |
"rope_type": "default"
|
| 82 |
},
|
| 83 |
+
"tie_word_embeddings": false,
|
| 84 |
"use_cache": true,
|
| 85 |
"vocab_size": 248320
|
| 86 |
},
|
| 87 |
+
"tie_word_embeddings": false,
|
| 88 |
"transformers_version": "5.17.0",
|
| 89 |
"video_token_id": 248057,
|
| 90 |
"vision_config": {
|
| 91 |
"deepstack_visual_indexes": [],
|
| 92 |
+
"depth": 27,
|
| 93 |
"hidden_act": "gelu_pytorch_tanh",
|
| 94 |
+
"hidden_size": 1152,
|
| 95 |
"in_channels": 3,
|
| 96 |
"initializer_range": 0.02,
|
| 97 |
+
"intermediate_size": 4304,
|
| 98 |
"model_type": "qwen3_5_vision",
|
| 99 |
"num_heads": 16,
|
| 100 |
"num_position_embeddings": 2304,
|
| 101 |
+
"out_hidden_size": 4096,
|
| 102 |
"patch_size": 16,
|
| 103 |
"rope_parameters": {
|
| 104 |
"rope_theta": 10000.0,
|
decision_config.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
| 2 |
"format_version": 1,
|
| 3 |
"format_id": "d3-code-readout-v1",
|
| 4 |
"prompt": "d3",
|
| 5 |
-
"base_model": "Qwen/Qwen3.5-
|
| 6 |
-
"revision": "
|
| 7 |
"codes": [
|
| 8 |
"A",
|
| 9 |
"B",
|
|
@@ -518,7 +518,7 @@
|
|
| 518 |
12185,
|
| 519 |
78382
|
| 520 |
],
|
| 521 |
-
"temperature": 1.
|
| 522 |
"attention_mode": "noncausal_full_attention",
|
| 523 |
"pooling": "last",
|
| 524 |
"max_length": null,
|
|
|
|
| 2 |
"format_version": 1,
|
| 3 |
"format_id": "d3-code-readout-v1",
|
| 4 |
"prompt": "d3",
|
| 5 |
+
"base_model": "Qwen/Qwen3.5-9B",
|
| 6 |
+
"revision": "c202236235762e1c871ad0ccb60c8ee5ba337b9a",
|
| 7 |
"codes": [
|
| 8 |
"A",
|
| 9 |
"B",
|
|
|
|
| 518 |
12185,
|
| 519 |
78382
|
| 520 |
],
|
| 521 |
+
"temperature": 1.6,
|
| 522 |
"attention_mode": "noncausal_full_attention",
|
| 523 |
"pooling": "last",
|
| 524 |
"max_length": null,
|
model-00001-of-00002.safetensors → model-00001-of-00004.safetensors
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2c322016b91b1232c0d7628560164560d06d477a3edc3362714635f0e2f5949c
|
| 3 |
+
size 4911663824
|
model-00002-of-00002.safetensors → model-00002-of-00004.safetensors
RENAMED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:169ae981a723d83037c340e0641bda9e2160c0383433dc8d9b274e236eb74b82
|
| 3 |
+
size 4987839568
|
model-00003-of-00004.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:feb85fdf87b29d88a487fe5ee056a434a76dc55e09db0252fa8e80b7e946573a
|
| 3 |
+
size 4954726768
|
model-00004-of-00004.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:37ece9f15f7e4a7cf933b4201741172af73668ad5da8f0503919dbafa3bae3fe
|
| 3 |
+
size 1931248816
|
model.safetensors.index.json
CHANGED
|
The diff for this file is too large to render.
See raw diff
|
|
|
questions.py
CHANGED
|
@@ -201,3 +201,78 @@ QUESTIONS.update({
|
|
| 201 |
CITATOR = ("treatment", "history", "reported", "dissent")
|
| 202 |
DECISION_LEVEL = ("outcome", "decision_type", "proceeding", "area", "publication_ban", "self_represented", "separate_opinions")
|
| 203 |
PASSAGE_LEVEL = ("standard_of_review", "element_finding")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 201 |
CITATOR = ("treatment", "history", "reported", "dissent")
|
| 202 |
DECISION_LEVEL = ("outcome", "decision_type", "proceeding", "area", "publication_ban", "self_represented", "separate_opinions")
|
| 203 |
PASSAGE_LEVEL = ("standard_of_review", "element_finding")
|
| 204 |
+
|
| 205 |
+
|
| 206 |
+
# ---- Second-generation questions ----
|
| 207 |
+
|
| 208 |
+
VOICE = {
|
| 209 |
+
"own_reasoning": "The court cites or discusses the case in its own reasoning.",
|
| 210 |
+
"inside_quotation": "The case appears only inside a passage the court quotes from another source.",
|
| 211 |
+
"other_court_or_party": "The case appears only where the court reports another court's reasoning or a party's argument.",
|
| 212 |
+
"not_named": "The excerpt never actually names or cites this case.",
|
| 213 |
+
}
|
| 214 |
+
TREATMENT_GROUP = {
|
| 215 |
+
"positive": "The court follows the case or applies its rule.",
|
| 216 |
+
"neutral": "The court considers the case or merely refers to it.",
|
| 217 |
+
"distinguished": "The court says the case does not govern because the facts or the law differ.",
|
| 218 |
+
"negative": "The court questions the case, declines to follow it, overrules it, or holds it superseded by statute.",
|
| 219 |
+
"not_courts_own": "The case appears only in a quotation, in a party's argument or another court's reasoning, or not at all.",
|
| 220 |
+
"same_matter": "The case is an earlier decision in the same proceeding.",
|
| 221 |
+
}
|
| 222 |
+
GROUP_OF = {"followed": "positive", "applied": "positive", "considered": "neutral", "referred_to": "neutral",
|
| 223 |
+
"distinguished": "distinguished", "questioned": "negative", "not_followed": "negative", "overruled": "negative",
|
| 224 |
+
"superseded_by_statute": "negative", "inside_quotation": "not_courts_own", "other_court_or_party": "not_courts_own",
|
| 225 |
+
"not_named": "not_courts_own", "same_matter": "same_matter"}
|
| 226 |
+
VOICE_OF = {**{k: "own_reasoning" for k in GROUP_OF}, "inside_quotation": "inside_quotation",
|
| 227 |
+
"other_court_or_party": "other_court_or_party", "not_named": "not_named"}
|
| 228 |
+
BURDEN = {
|
| 229 |
+
"balance_of_probabilities": "The court applies the balance of probabilities to this issue.",
|
| 230 |
+
"beyond_reasonable_doubt": "The court applies proof beyond a reasonable doubt to this issue.",
|
| 231 |
+
"other": "The court states some other burden or standard of proof for this issue.",
|
| 232 |
+
"not_stated": "The excerpt states no burden or standard of proof for this issue.",
|
| 233 |
+
}
|
| 234 |
+
PROVISION = {
|
| 235 |
+
"interpreted": "The court states what the provision's words mean, how far it reaches, or what its purpose requires.",
|
| 236 |
+
"applied": "The court applies the provision to the facts without stating its meaning.",
|
| 237 |
+
"mentioned": "The court only refers to the provision or quotes it.",
|
| 238 |
+
}
|
| 239 |
+
PREVAILING = {
|
| 240 |
+
"appellant": None, "respondent": None, "applicant": None, "plaintiff": None, "defendant": None, "accused": None,
|
| 241 |
+
"crown": None, "split": "The result is mixed.", "other": "Another party, or unclear.",
|
| 242 |
+
}
|
| 243 |
+
COUNSEL = {
|
| 244 |
+
"listed": "Counsel are named.",
|
| 245 |
+
"unnamed_representative": "A party was represented but the representative is not named.",
|
| 246 |
+
"none": "The decision says a party was unrepresented and no counsel is named.",
|
| 247 |
+
"redacted": "Names of counsel were removed or reduced to initials.",
|
| 248 |
+
"not_stated": "There is no appearance information at all.",
|
| 249 |
+
}
|
| 250 |
+
|
| 251 |
+
QUESTIONS.update({
|
| 252 |
+
"voice": {"type": "choice", "instructions": "In whose voice does the cited case appear in the citing decision?", "criteria": VOICE},
|
| 253 |
+
"negative": {"type": "noul", "instructions": "Does the citing court itself treat the cited case negatively: question it, decline to follow it, overrule it, or hold it superseded by statute?"},
|
| 254 |
+
"treatment_group": {"type": "choice", "instructions": "Broadly, how does the citing decision treat the cited case? If it treats the case in more than one way, choose the most negative.", "criteria": TREATMENT_GROUP},
|
| 255 |
+
"burden": {"type": "choice", "instructions": "Which burden or standard of proof does the court apply to the issue stated in the excerpt?", "criteria": BURDEN},
|
| 256 |
+
"provision_treatment": {"type": "choice", "instructions": "How does the decision treat the statutory provision named in the excerpt?", "criteria": PROVISION},
|
| 257 |
+
"proposition": {"type": "noul", "instructions": "Does the court, in this paragraph, state a proposition of law that it relies on to decide?"},
|
| 258 |
+
"prevailing_party": {"type": "choice", "instructions": "Which party prevailed in this decision?", "criteria": PREVAILING},
|
| 259 |
+
"counsel_status": {"type": "choice", "instructions": "What does the decision say about who appeared for the parties?", "criteria": COUNSEL},
|
| 260 |
+
})
|
| 261 |
+
AUXILIARY = ("voice", "negative", "treatment_group")
|
| 262 |
+
SECOND_GENERATION = ("burden", "provision_treatment", "proposition", "prevailing_party", "counsel_status", "cited_for", "cite_fill")
|
| 263 |
+
|
| 264 |
+
# questions whose options come with the example
|
| 265 |
+
ITEM_INSTRUCTIONS = {
|
| 266 |
+
"cite_fill": "One citation was removed from the paragraph and replaced with [CITATION]. Which case was cited there?",
|
| 267 |
+
"cited_for": "What does the citing decision cite the case for?",
|
| 268 |
+
"au_treatment": "How does the citing decision treat the cited case? If it treats the case in more than one way, choose the most negative treatment.",
|
| 269 |
+
}
|
| 270 |
+
|
| 271 |
+
|
| 272 |
+
def spec_of(row):
|
| 273 |
+
"""The question of a training or test row: a fixed one from QUESTIONS, or one the row carries itself."""
|
| 274 |
+
if row.get("options"):
|
| 275 |
+
return {"type": "choice", "instructions": row.get("instructions") or ITEM_INSTRUCTIONS[row["q"]], "criteria": dict(row["options"])}
|
| 276 |
+
if row.get("instructions"):
|
| 277 |
+
return {"type": "noul", "instructions": row["instructions"]}
|
| 278 |
+
return QUESTIONS[row["q"]]
|
readout.safetensors
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c1fcd628c2891dd37d7987a9195f354950123aa461830ab0a66cda4f49739745
|
| 3 |
+
size 4178000
|