Instructions to use rizalbasri/qwen2.5-coder-7b-retail-text2sql-id with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use rizalbasri/qwen2.5-coder-7b-retail-text2sql-id with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2.5-Coder-7B-Instruct") model = PeftModel.from_pretrained(base_model, "rizalbasri/qwen2.5-coder-7b-retail-text2sql-id") - Notebooks
- Google Colab
- Kaggle
🛒 Qwen2.5-Coder-7B-Retail-Text2SQL-ID
Model Spesialis Text-to-SQL Berbahasa Indonesia untuk Domain Ritel, POS, & E-Commerce
📋 Daftar Isi
- Deskripsi Model
- Fitur Unggulan
- Konfigurasi LoRA
- Panduan Penggunaan (Inference)
- Contoh Kasus & Output
- Format Prompt Rekomendasi
- Praktik Keamanan & Batasan
- Sitasi & Kontak
📌 Deskripsi Model
Qwen2.5-Coder-7B-Retail-Text2SQL-ID adalah LoRA fine-tuned adapter dari model fondasi Qwen/Qwen2.5-Coder-7B-Instruct. Model ini dilatih khusus untuk memahami terminologi bisnis dan operasional ritel Indonesia (seperti omzet, retur barang, stok menipis, diskon promo, margin kotor, cabang toko, kasir, metode pembayaran QRIS/tunai/transfer) dan mengonversinya menjadi kueri SQL yang presisi dan efisien.
🌟 Fitur Unggulan
- 🇮🇩 Pemahaman Konteks Lokal: Mengerti bahasa alami percakapan bisnis ritel Indonesia tanpa perlu translasi ke bahasa Inggris.
- 🔗 Kemampuan Multi-Table Relational: Menguasai pembentukan klausa
JOINantar tabel transaksi, detail barang, pelanggan, kasir, dan master cabang. - 📊 Kueri Analitik & Agregasi: Mampu menghasilkan query
GROUP BY,HAVING, fungsi jendela (ROW_NUMBER(),RANK()), serta kalkulasi subtotal/omzet secara tepat. - 🗄️ Kompatibilitas Dialek SQL: Mendukung sintaks standar ANSI SQL yang kompatibel dengan PostgreSQL, MySQL, MariaDB, dan SQLite.
- ⚡ Adapter Ringan: Bobot adapter di bawah 100MB sehingga fleksibel dipasang di berbagai infrastruktur on-premise maupun cloud.
⚙️ Konfigurasi LoRA
Berdasarkan metadata adapter:
| Parameter | Nilai | Penjelasan |
|---|---|---|
| Base Model | Qwen/Qwen2.5-Coder-7B-Instruct |
7B SOTA instruction code model |
| LoRA Rank ($r$) | 16 |
Dimensi subspace adaptasi |
| LoRA Alpha ($\alpha$) | 32 |
Faktor pengali bobot gradien |
| LoRA Dropout | 0.05 |
Regularisasi untuk mencegah overfitting |
| Target Modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
Seluruh proyeksi linear modul attention & MLP |
| Task Type | CAUSAL_LM |
Model generasi autoregresif |
🚀 Panduan Penggunaan (Inference)
Dependensi
pip install torch transformers peft accelerate bitsandbytes
Opsi A: Standar (Transformers + PEFT)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
BASE_ID = "Qwen/Qwen2.5-Coder-7B-Instruct"
ADAPTER_ID = "rizalbasri/qwen2.5-coder-7b-retail-text2sql-id"
tokenizer = AutoTokenizer.from_pretrained(BASE_ID, trust_remote_code=True)
base_model = AutoModelForCausalLM.from_pretrained(
BASE_ID,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True
)
model = PeftModel.from_pretrained(base_model, ADAPTER_ID)
model.eval()
Opsi B: Hemat Memori (4-bit Quantization)
Gunakan opsi ini jika Anda menjalankan model pada GPU dengan VRAM terbatas (8GB - 16GB):
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel
BASE_ID = "Qwen/Qwen2.5-Coder-7B-Instruct"
ADAPTER_ID = "rizalbasri/qwen2.5-coder-7b-retail-text2sql-id"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16
)
tokenizer = AutoTokenizer.from_pretrained(BASE_ID, trust_remote_code=True)
base_model = AutoModelForCausalLM.from_pretrained(
BASE_ID,
quantization_config=bnb_config,
device_map="auto",
trust_remote_code=True
)
model = PeftModel.from_pretrained(base_model, ADAPTER_ID)
model.eval()
# Definisi Skema & Prompt
schema = """
CREATE TABLE transaksi (
id_transaksi VARCHAR(20) PRIMARY KEY,
tanggal DATE,
id_cabang VARCHAR(10),
total_bayar DECIMAL(12, 2),
metode_bayar VARCHAR(30)
);
CREATE TABLE detail_transaksi (
id_detail VARCHAR(20) PRIMARY KEY,
id_transaksi VARCHAR(20) REFERENCES transaksi(id_transaksi),
id_produk VARCHAR(10),
nama_produk VARCHAR(100),
kategori VARCHAR(50),
jumlah INT,
harga_satuan DECIMAL(12, 2)
);
"""
user_question = "Berapa total pendapatan dari metode pembayaran QRIS per kategori barang di bulan Januari 2024?"
prompt_content = f"""### Skema Database:
{schema.strip()}
### Pertanyaan:
{user_question}
### SQL:"""
messages = [
{
"role": "system",
"content": "Kamu adalah database architect dan ahli SQL yang menerjemahkan pertanyaan bahasa Indonesia ke SQL query berdasarkan skema database yang disediakan."
},
{"role": "user", "content": prompt_content}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
temperature=0.0,
do_sample=False,
pad_token_id=tokenizer.eos_token_id
)
hasil_sql = tokenizer.decode(outputs[0][len(inputs.input_ids[0]):], skip_special_tokens=True)
print(hasil_sql)
Opsi C: Merge Adapter ke Base Model
Jika Anda ingin mengekspor model menjadi standalone model untuk inferensi berkecepatan tinggi dengan vLLM, atau dikonversi ke GGUF / Ollama:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
BASE_ID = "Qwen/Qwen2.5-Coder-7B-Instruct"
ADAPTER_ID = "rizalbasri/qwen2.5-coder-7b-retail-text2sql-id"
OUTPUT_DIR = "./qwen2.5-coder-7b-retail-text2sql-id-merged"
print("Memuat base model...")
base_model = AutoModelForCausalLM.from_pretrained(
BASE_ID,
torch_dtype=torch.float16,
device_map="cpu",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(BASE_ID, trust_remote_code=True)
print("Memasang LoRA adapter...")
model = PeftModel.from_pretrained(base_model, ADAPTER_ID)
print("Menggabungkan bobot (merging)...")
merged_model = model.merge_and_unload()
print(f"Menyimpan model hasil merge ke {OUTPUT_DIR}...")
merged_model.save_pretrained(OUTPUT_DIR, safe_serialization=True)
tokenizer.save_pretrained(OUTPUT_DIR)
print("Selesai! Model siap digunakan pada vLLM atau dikonversi ke GGUF.")
💡 Contoh Kasus & Output
1. Manajemen Stok & Peringatan Reorder
- Pertanyaan: "Tampilkan produk apa saja yang sisa stoknya kurang dari 15 buah dan urutkan dari yang paling sedikit."
- Output SQL:
SELECT id_produk, nama_produk, kategori, stok
FROM produk
WHERE stok < 15
ORDER BY stok ASC;
2. Multi-Table JOIN & Analisis Performa Cabang
- Pertanyaan: "Tampilkan 5 cabang dengan total penjualan tertinggi beserta nama kotanya pada kuartal 1 tahun 2024."
- Output SQL:
SELECT
c.id_cabang,
c.nama_cabang,
c.kota,
SUM(t.total_bayar) AS total_omzet
FROM cabang c
JOIN transaksi t ON c.id_cabang = t.id_cabang
WHERE t.tanggal BETWEEN '2024-01-01' AND '2024-03-31'
GROUP BY c.id_cabang, c.nama_cabang, c.kota
ORDER BY total_omzet DESC
LIMIT 5;
📝 Format Prompt Rekomendasi
Gunakan struktur prompt berikut untuk konsistensi akurasi tertinggi:
<|im_start|>system
Kamu adalah database architect dan ahli SQL yang menerjemahkan pertanyaan bahasa Indonesia ke SQL query berdasarkan skema database yang disediakan.<|im_end|>
<|im_start|>user
### Skema Database:
[Letakkan DDL atau deskripsi tabel di sini]
### Pertanyaan:
[Pertanyaan operasional / bisnis ritel dalam bahasa Indonesia]
### SQL:<|im_end|>
<|im_start|>assistant
🛡️ Praktik Keamanan & Batasan
- Akses Read-Only Database: Kueri hasil AI harus dieksekusi dengan akun database berizin
SELECTsaja untuk mencegah risiko modifikasi data tanpa sengaja. - Kueri Ambigu: Pastikan skema tabel mencantumkan relasi
FOREIGN KEYjika pertanyaan memerlukan penggabungan multi-tabel yang kompleks. - Execution Boundary: Selalu gunakan query timeout limit (misalnya 10-30 detik) pada database engine analitik Anda untuk mencegah bottleneck beban kueri.
📄 Lisensi & Atribusi
- Lisensi Kode & Model: Apache License 2.0
- Base Model: Qwen2.5-Coder-7B-Instruct oleh Alibaba Cloud
- Pengembang: rizalbasri
- Downloads last month
- 40