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)
- Mevcut 128.000 kelimelik vocab'a 10 yeni özel token eklendi (
add_special_tokens), her biri benzersiz bir id aldı (128000–128009). - Kendi tasarımımız olan
chat_template.jinjaşablonu tokenizer'a bağlandı —system/user/assistant/toolrollerini sarmalıyor, opsiyonel thinking ve tool-calling (başarı + hata durumları dahil) destekliyor. Banka_Diyalog_Magibudataset'inden gerçek örneklerle doğrulandı — hem tek turlu hem çok turlu diyaloglarda doğru çıktı üretiyor.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support