Türkçe Byte-Level BPE Tokenizer

Türkçe Wikipedia makaleleri üzerinde eğitilmiş, 128.008 kelime dağarcığına (vocab) sahip byte-level BPE tokenizer. Kendi tasarımımız olan Yılmaz Chat Template ile birlikte gelir — sohbet mesajlarını (system/user/assistant/tool) doğru biçimde sarmalayan, thinking ve tool-calling desteği olan bir Jinja2 şablonu.

Detaylar

  • Vocab boyutu: 128.008 (128.000 temel + 10 özel token)
  • Algoritma: Byte-Level BPE (GPT-2/LLaMA tarzı)
  • Eğitim verisi: Türkçe Wikipedia (wikimedia/wikipedia, tr)
  • Kütüphane: Hugging Face tokenizers
  • Chat template: chat_template.jinja (bu repoda ayrı dosya olarak bulunur)

Temel kullanım

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("Resad2173/BPE_Magibu")

metin = "Türkiye ve Azerbaycan kardeş ülkelerdir."
ids = tokenizer.encode(metin)
print(ids)
print(tokenizer.decode(ids))

Yılmaz Chat Template

Bu tokenizer'a, ChatML mantığından esinlenen ama kendi markalı özel token'larımızı kullanan bir sohbet şablonu bağlanmıştır. role alanları (system/user/assistant/tool) standart messages formatıyla uyumlu bırakılmış; marka kimliği yalnızca özel token isimlendirmesindedir.

Tur formatı

<|yilmaz_start|>ROL
İÇERİK<|yilmaz_end|>

Eklenen özel token'lar

Token Amacı
<|yilmaz_start|> Tur başlangıcı (ardından rol adı gelir)
<|yilmaz_end|> Tur bitişi
<|yilmaz_think|> ... <|yilmaz_think_end|> Model muhakemesi / düşünme bloğu (opsiyonel)
<|yilmaz_tool_call|> ... <|yilmaz_tool_call_end|> Fonksiyon çağrısı (JSON formatında)
<|yilmaz_tool_result|> ... <|yilmaz_tool_result_end|> Fonksiyon çağrısının sonucu
<|yilmaz_error|> ... <|yilmaz_error_end|> Başarısız tool çağrısının hata mesajı

Bu 10 token, add_special_tokens ile vocab'a eklendi ve her biri tek bir id'ye karşılık gelir — tokenize edilirken alt-parçalara bölünmezler.

Kullanım örneği

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("Resad2173/BPE_Magibu")

messages = [
    {"role": "system", "content": "Sen yardımsever bir bankacılık asistanısın."},
    {"role": "user", "content": "Hesap bakiyemi nasıl görebilirim?"},
]

prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True
)
print(prompt)

Çıktı:

<|yilmaz_start|>system
Sen yardımsever bir bankacılık asistanısın.<|yilmaz_end|>
<|yilmaz_start|>user
Hesap bakiyemi nasıl görebilirim?<|yilmaz_end|>
<|yilmaz_start|>assistant

Tool-calling ve thinking örneği

messages = [
    {"role": "user", "content": "Ankara'da hava nasıl?"},
    {
        "role": "assistant",
        "content": "",
        "reasoning_content": "Kullanıcı hava durumu soruyor, get_weather çağırmalıyım.",
        "tool_calls": [
            {"function": {"name": "get_weather", "arguments": {"city": "Ankara"}}}
        ],
    },
    {"role": "tool", "content": '{"city": "Ankara", "temp_c": 27}'},
]

prompt = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True, enable_thinking=True
)
print(prompt)

Çıktı:

<|yilmaz_start|>user
Ankara'da hava nasıl?<|yilmaz_end|>
<|yilmaz_start|>assistant
<|yilmaz_think|>
Kullanıcı hava durumu soruyor, get_weather çağırmalıyım.
<|yilmaz_think_end|>
<|yilmaz_tool_call|>{"name": "get_weather", "arguments": {"city": "Ankara"}}<|yilmaz_tool_call_end|><|yilmaz_end|>
<|yilmaz_start|>user
<|yilmaz_tool_result|>{"city": "Ankara", "temp_c": 27}<|yilmaz_tool_result_end|><|yilmaz_end|>
<|yilmaz_start|>assistant
<|yilmaz_think|>

Neler yapıldı (güncelleme geçmişi)

  1. Mevcut 128.000 kelimelik vocab'a 10 yeni özel token eklendi (add_special_tokens), her biri benzersiz bir id aldı (128000–128009).
  2. Kendi tasarımımız olan chat_template.jinja şablonu tokenizer'a bağlandı — system/user/assistant/tool rollerini sarmalıyor, opsiyonel thinking ve tool-calling (başarı + hata durumları dahil) destekliyor.
  3. Banka_Diyalog_Magibu dataset'inden gerçek örneklerle doğrulandı — hem tek turlu hem çok turlu diyaloglarda doğru çıktı üretiyor.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support