Views
No views yet
Qwen/Qwen3-4B. It is a research prototype for turning English prose arguments into a constrained JSON decomposition.1{
2 "claim": "the conclusion",
3 "warrants": ["each distinct inferential step"],
4 "impact": "the stake or consequence",
5 "implicit_premises": ["minimally necessary unstated assumptions"],
6 "load_bearing_component": "one listed component, or an empty abstention",
7 "negation_justification": "why negating that component breaks the argument",
8 "support_edges": [["w0", "claim"]]
9}claim, w{k}, i{k}, and impact component tokens.1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4repo = "fzhualpha/qwen3-4b-argument-analyst-r6"
5tokenizer = AutoTokenizer.from_pretrained(repo)
6model = AutoModelForCausalLM.from_pretrained(
7 repo,
8 torch_dtype=torch.bfloat16,
9 device_map="auto",
10).eval()
11
12system = """You are an argument analyst. Given a prose argument, return only one valid JSON object.
13Faithfully identify the claim, each warrant step, impact, and only minimally necessary implicit premises.
14Also emit support_edges using claim, w{k}, i{k}, and impact tokens. Use an empty load-bearing component
15when no unique component exists; never choose a component merely because it sounds weak."""
16
17argument = "The city should add bus lanes because buses move more people in less road space."
18messages = [
19 {"role": "system", "content": system},
20 {"role": "user", "content": argument},
21]
22text = tokenizer.apply_chat_template(
23 messages,
24 tokenize=False,
25 add_generation_prompt=True,
26 enable_thinking=False,
27)
28inputs = tokenizer(text, return_tensors="pt").to(model.device)
29with torch.no_grad():
30 output = model.generate(
31 **inputs,
32 max_new_tokens=768,
33 do_sample=False,
34 pad_token_id=tokenizer.eos_token_id,
35 )
36print(tokenizer.decode(output[0, inputs.input_ids.shape[1]:], skip_special_tokens=True))Qwen/Qwen3-4Bfzhualpha/argument-analyst-data, configuration r6