Text Generation
PEFT
Safetensors
Turkish
function-calling
tool-use
turkish
lora
unsloth
conversational

Gemma 4 E4B — Türkçe Tool-Calling LoRA

bilalabic/turkish-tool-calling veri setiyle eğitilmiş LoRA adaptörü. Türkçe sorgularda araç çağırmayı, çağırmamayı ve eksik bilgiyi sormayı öğretir.

temel model   unsloth/gemma-4-E4B-it
LoRA          r = 32, alpha = 32, dropout 0
eğitim        bf16, 2 epoch, 47.798 kayıt, A100 80 GB

Ölçülen sonuçlar

Test split'inden 500 tabakalı örnek, do_sample=False, temel modelle aynı istem, aynı örnekler, aynı üretim ayarları:

Metrik Temel Bu model Fark
Karar doğruluğu %90,0 %94,4 +4,4
Araç adı eşleşmesi %95,1 %97,4 +2,3
Argüman tam eşleşme %77,7 %84,4 +6,8
Halüsinasyon (listede olmayan araç) %0,0 %0,0
Biçim hatası %0,2 %0,0 −0,2

Toplam hata 50 → 28. En büyük kazanç aşırı çağırmanın düşmesinde:

                     temel  bu model
çağırdı  -> çağırdı    378    382
çağırdı  -> çağırmadı    7      3
çağırmadı-> çağırdı     43     25    <- %42 düşüş
çağırmadı-> çağırmadı   72     90

Bağımsız benchmark — BFCL v3 (AST), İngilizce

Alt küme Temel Bu model
simple %91,0 %89,0
multiple %88,0 %88,0
parallel %88,0 %86,0
irrelevance %85,0 %77,0
GENEL %88,0 %85,0

İngilizcede geriliyor. −3 puan, McNemar p ≈ 0,045 (sınırda; alt küme başına 100 örnek kesin konuşmak için az). Bu model Türkçe için eğitildi; İngilizce tool-calling gerekiyorsa temel modeli kullan.

Gerilemenin sebebi veri setinin bir özelliği: metin argümanlarının %88,4'ü sorguda birebir geçiyor, dolayısıyla model çıkarım gerektiren değerleri üretmeyi öğrenmiyor. Kaybedilen örneklerin hepsinde doğru değer sorguda yoktu — "Los Angeles" yerine "Los Angeles, CA", ima edilen initial_velocity: 0, çoğul sculptures yerine şemadaki sculpture.

Kullanım

from unsloth import FastModel
from unsloth.chat_templates import get_chat_template
import json, torch

model, tokenizer = FastModel.from_pretrained(
    "bilalabic/gemma-4-e4b-toolcall-tr-lora2",
    max_seq_length=4096, load_in_4bit=False,
)
tokenizer = get_chat_template(tokenizer, chat_template="gemma-4")
# Gemma 4 cok kipli: `tokenizer` bir Gemma4Processor, ilk konumsal
# parametresi `images`. Ham metin islerinde ic tokenizer kullanilir.
metin_tok = getattr(tokenizer, "tokenizer", tokenizer)
FastModel.for_inference(model)

SISTEM = (
    "Sen araç kullanabilen bir asistansın. Aşağıda kullanabileceğin araçlar var.\n"
    "Uygun bir araç varsa YALNIZCA şu biçimde çağır, başka hiçbir şey yazma:\n"
    '<tool_call>{"name": "araç_adı", "arguments": {"parametre": "değer"}}</tool_call>\n'
    "Birden çok çağrı gerekiyorsa her birini ayrı satıra yaz.\n"
    "Uygun araç yoksa veya zorunlu bilgi eksikse araç ÇAĞIRMA, Türkçe cevap ver."
)

araclar = [{
    "name": "hava_durumu",
    "description": "Belirtilen şehir için güncel hava durumunu getirir.",
    "parameters": {"type": "object",
                   "properties": {"sehir": {"type": "string", "description": "Şehir adı."}},
                   "required": ["sehir"]},
}]

icerik = (SISTEM + "\n\nAraclar:\n" + json.dumps(araclar, ensure_ascii=False)
          + "\n\nKullanici: Ankara'da hava nasıl?")

istek = tokenizer.apply_chat_template(
    [{"role": "user", "content": icerik}],
    tokenize=False, add_generation_prompt=True).removeprefix("<bos>")
girdi = metin_tok(istek, return_tensors="pt").to("cuda")
cikti = model.generate(**girdi, max_new_tokens=128, do_sample=False,
                       pad_token_id=metin_tok.pad_token_id)
print(metin_tok.decode(cikti[0][girdi["input_ids"].shape[1]:], skip_special_tokens=True))

İstem biçimi eğitimdekiyle aynı olmalı. Model <tool_call>{...}</tool_call> üretmeyi bu yönergeyle öğrendi; başka bir şablon kullanırsan çıktı biçimi tutarsızlaşır.

Araç çağrısını ayıklamak için:

import re
CAGRI_RE = re.compile(r"<tool_call>\s*(\{.*?\})\s*</tool_call>", re.S)
cagrilar = [json.loads(p) for p in CAGRI_RE.findall(cikti_metni)]

Sınırlar

1. Tek turlu. Araç çağrısını üretir, ama dönen sonucu Türkçe cevaba çevirmeyi öğrenmedi — eğitim verisinde observation döngüsü yok. Çalışma anında ikinci turda temel modelin yeteneğine kalırsın. Sistem promptuna "araç sonucunu aldıktan sonra Türkçe, kısa ve sonucu birebir yansıtan bir cevap ver" eklemek dil kaymasının çoğunu kapatır.

2. Çıkarım gerektiren argümanlar zayıf. Yukarıda açıklandı.

3. İngilizce geriledi. Yukarıda ölçüldü.

4. Hata / kurtarma, onay isteme, sıralı çağrı yok. Eğitim verisinde timeout, boş sonuç, riskli işlem onayı veya çağrılar arası bağımlılık senaryoları bulunmuyor.

5. Türkiye'ye özgü alan kapsaması zayıf. Araç dağılımı RapidAPI kataloğunu yansıtır; OBS, kargo, e-devlet, belediye gibi alanlar yok.

6. Bağımsız Türkçe eval seti yok. Yukarıdaki Türkçe rakamlar veri setinin kendi test split'inden; aile bazlı split sayesinde hiçbir sorgu eğitimde görülmedi, ama aynı hattan türüyor.

Lisans

Adaptör ağırlıkları eğitim verisinin lisansına tabidir.

⚠️ Ticari kullanım için uygun değildir. Eğitim verisinin xLAM kısmı cc-by-4.0 etiketli ama kaynak kartında "for research purposes only" ifadesi de bulunuyor; ayrıca o kısmın Türkçe metinleri OpenAI API ile üretildi ve OpenAI hizmet koşulları çıktının rakip model geliştirmede kullanımını kısıtlar.

Temel model unsloth/gemma-4-E4B-it kendi lisansına tabidir (Gemma Terms of Use).

@article{liu2024apigen,
  title   = {APIGen: Automated Pipeline for Generating Verifiable and
             Diverse Function-Calling Datasets},
  author  = {Liu, Zuxin and Hoang, Thai and Zhang, Jianguo and others},
  journal = {arXiv preprint arXiv:2406.18518},
  year    = {2024}
}

@article{ross2025when2call,
  title   = {When2Call: When (not) to Call Tools},
  author  = {Ross, Hayley and Mahabaleshwarkar, Ameya Sunil and Suhara, Yoshi},
  journal = {arXiv preprint arXiv:2504.18851},
  year    = {2025}
}

Eğitim ve ölçüm kodu: https://github.com/BilalAbic/turkish-tool-calling-dataset


English

LoRA adapter for unsloth/gemma-4-E4B-it, trained on bilalabic/turkish-tool-calling (47,798 records, r=32, bf16, 2 epochs).

On the Turkish test split it improves decision accuracy 90.0% → 94.4%, argument exact match 77.7% → 84.4%, and cuts over-calling by 42%. On the English BFCL v3 AST benchmark it regresses 88.0% → 85.0% (McNemar p ≈ 0.045) — this model is for Turkish; use the base model for English tool calling.

Single-turn only: it emits tool calls but was never taught to turn a tool result into a Turkish answer. Not commercially usable — see the license note above.

Downloads last month
19
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for bilalabic/gemma-4-e4b-toolcall-tr-lora2

Adapter
(62)
this model

Dataset used to train bilalabic/gemma-4-e4b-toolcall-tr-lora2

Papers for bilalabic/gemma-4-e4b-toolcall-tr-lora2