File size: 1,768 Bytes
71d4ffc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
---
language: [id]
license: apache-2.0
tags: [text-classification, dfk, indonesian, disinformasi, fitnah, ujaran-kebencian]
base_model: unsloth/Qwen3.5-9B
---

# DFK Ministral-3-8B

Fine-tuned dari `unsloth/Qwen3.5-9B` untuk klasifikasi konten berbahaya Bahasa Indonesia (4 kelas).

## Kelas: Fakta | Disinformasi | Fitnah | Ujaran Kebencian

## Cara Pakai
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch, re

tokenizer = AutoTokenizer.from_pretrained("ggapar/Qwen3.5-9B-DFK")
model     = AutoModelForCausalLM.from_pretrained(
    "ggapar/Qwen3.5-9B-DFK", torch_dtype=torch.bfloat16, device_map="auto"
)

SYSTEM = (
    "Anda adalah sistem deteksi konten DFK. "
    "Klasifikasikan teks ke dalam: Fakta, Disinformasi, Fitnah, atau Ujaran Kebencian."
)

def classify(text):
    msgs   = [
        {"role":"system","content":SYSTEM},
        {"role":"user","content":f"Klasifikasikan:
{text}"},
    ]
    prompt = tokenizer.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
    inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
    with torch.inference_mode():
        out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
    resp = tokenizer.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
    # Parse [LABEL] dan [REASONING]
    lbl_m = re.search(r'label\s*:\s*\*{0,2}([\w\s]+?)\*{0,2}[\.,]', resp.lower())
    rsn_m = re.search(r'penjelasan\s*:\s*(.*)', resp, re.DOTALL|re.IGNORECASE)
    return {
        "[LABEL]"    : lbl_m.group(1).strip().upper() if lbl_m else "UNKNOWN",
        "[REASONING]": rsn_m.group(1).strip()[:300]   if rsn_m else resp,
        "raw"        : resp,
    }

print(classify("Vaksin COVID menyebabkan autism menurut dokter X."))
```