ChatNusa: Low-Resource Conversational AI for West Nusa Tenggara & Indonesian
ChatNusa adalah Large Language Model (LLM) percakapan cerdas yang diadaptasi khusus untuk bahasa-bahasa daerah di Provinsi Nusa Tenggara Barat (Bahasa Sasak, Bahasa Samawa / Sumbawa, Bahasa Mbojo / Bima & Dompu) serta Bahasa Indonesia.
Model ini dikembangkan oleh kodetr sebagai bagian dari ekosistem riset NusaNLP untuk melestarikan dan mendemokratisasi teknologi AI bagi bahasa-bahasa daerah berdaya rendah (low-resource regional languages).
- Developed by: kodetr / NusaNLP Team
- Base Model:
unsloth/Qwen2.5-3B-Instruct-unsloth-bnb-4bit (Qwen 2.5)
- Training Method: QLoRA (Quantized Low-Rank Adaptation) via Unsloth (2x faster, 70% less VRAM)
- License: Apache 2.0
- Supported Languages:
- Bahasa Sasak (
sas) — Lombok (~3 juta penutur)
- Bahasa Samawa (
smw) — Sumbawa & Sumbawa Barat (~500 ribu penutur)
- Bahasa Mbojo (
bjn / Bima) — Bima & Dompu (~600 ribu penutur)
- Bahasa Indonesia (
id)
Kemampuan Utama (Key Capabilities)
- Definisi & Leksikon Kamus Terpadu:
- Memahami puluhan ribu lema dan terjemahan kata daerah berdasarkan Kamus Terpadu Sasambo Balai Bahasa Provinsi NTB.
- Analisis Morfologi & Struktur Kata:
- Mengurai kata turunan menjadi kata dasar (lemma), awalan (prefix), akhiran (suffix), dan infiks (infix).
- Kesantunan Bertutur & Budaya Lokal:
- Mampu membedakan ragam halus/hormat (Basa Alus/Krama) dan ragam akrab (Basa Lumbrah) pada bahasa Sasak.
- Memahami falsafah adat luhur seperti "Maja Labo Dahu" (Bima/Dompu) dan "Sabalong Samalewa" (Sumbawa).
- Terjemahan Kontekstual Bilingual:
- Menerjemahkan kalimat dan frasa dari Bahasa Indonesia ke bahasa daerah NTB dan sebaliknya.
Panduan Penggunaan (Quickstart)
1. Menggunakan Transformers & PEFT (Python)
```python
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_model_id = "unsloth/Qwen2.5-3B-Instruct-unsloth-bnb-4bit"
lora_model_id = "kodetr/chatnusa-qwen-3b" # Ganti dengan ID repo Anda
1. Load tokenizer & model
tokenizer = AutoTokenizer.from_pretrained(lora_model_id)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.float16,
device_map="auto"
)
model = PeftModel.from_pretrained(base_model, lora_model_id)
model.eval()
2. Format percakapan
messages = [
{
"role": "system",
"content": "Anda adalah ChatNusa, asisten AI cerdas untuk bahasa daerah Nusa Tenggara Barat (Sasak, Samawa, Mbojo) dan Bahasa Indonesia."
},
{
"role": "user",
"content": "Napi kabar pelungguh? Apa bahasa Sasak dari 'saya ingin makan bersama di rumah'?"
}
]
3. Generate respons
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda")
outputs = model.generate(inputs, max_new_tokens=256, temperature=0.7, top_p=0.9)
response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)
print(response)