Turkish Banking Agent 1.5B
Türkçe bankacılık senaryolarında araç çağırma (function calling) için eğitilmiş model. Kullanıcının doğal Türkçe isteğini uygun araca ve argümanlara çevirir, araç sonucu döndüğünde sonucu Türkçe olarak özetler.
Qwen/Qwen2.5-1.5B-Instruct üzerine LoRA ile eğitildi, 4096 token bağlamla
devam eğitimi yapıldı, adaptör taban modele birleştirildi.
Yetenekler
- Tekil ve çoklu araç çağrısı
- Zorunlu argüman eksikse tahmin etmeden kullanıcıya sorma
- Yıkıcı işlemlerde (transfer, kart kapatma) önce onay isteme
- Araç sonucunu Türkçe cevaba dönüştürme
- Araç gerektirmeyen isteklerde gereksiz araç çağırmama
- Kapsam dışı isteği reddetme
Değerlendirme
Eğitimde görülmemiş araçlar içeren tutulmuş test bölümünde, 598 örnek:
| Metrik | Değer |
|---|---|
| Araç çağırma kararı doğruluğu | %96,3 |
| Araç adı tam doğruluğu | %87,9 |
| Argüman anahtarı F1 | %88,7 |
| Argüman değeri doğruluğu | %84,2 |
| Tam çağrı doğruluğu | %83,0 |
| JSON geçerliliği | %97,0 |
| Yanlış araç çağırma oranı | %0,9 |
| Araç çağırmayı kaçırma oranı | %10,9 |
Test bölümü şablon ailesi bazında ayrıldı; test ve doğrulama setlerindeki araçlar eğitim setinde yer almıyor. Yani ölçüm ezberi değil genellemeyi gösteriyor.
Kullanım
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL = "saturday-labs/turkish-banking-agent-1.5b"
tok = AutoTokenizer.from_pretrained(MODEL)
model = AutoModelForCausalLM.from_pretrained(MODEL, dtype="auto", device_map="auto")
TOOLS = [{"type": "function", "function": {
"name": "get_account_balance",
"description": "Hesap bakiyesini getirir.",
"parameters": {"type": "object", "properties": {
"account_type": {"type": "string", "enum": ["deposit", "checking", "credit"]},
"currency": {"type": "string", "enum": ["TRY", "USD", "EUR"]}},
"required": ["account_type", "currency"]}}}]
messages = [{"role": "user", "content": "Vadesiz TL hesabımın bakiyesini göster."}]
inputs = tok.apply_chat_template(messages, tools=TOOLS, add_generation_prompt=True,
return_tensors="pt", return_dict=True).to(model.device)
out = model.generate(**inputs, max_new_tokens=192, do_sample=False)
print(tok.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))
<tool_call>
{"name": "get_account_balance", "arguments": {"account_type": "deposit", "currency": "TRY"}}
</tool_call>
Yukarıdaki çıktı bu kod çalıştırılarak alınmıştır. Araç şeması OpenAI
function-calling biçimindedir; mevcut tanımlarınız değiştirilmeden
kullanılabilir. Şemada enum kullanmak önerilir — kısıtlanmamış alanlarda
model şemada bulunmayan değerler üretebilir.
Araç sonucunu geri beslemek için sohbete assistant (tool_calls ile) ve
tool mesajlarını ekleyip üretimi tekrarlayın.
dtype="auto" transformers 5.x sözdizimidir; 4.x sürümlerinde
torch_dtype="auto" kullanın.
Örnek istekler
Aşağıdaki istekler model üzerinde çalıştırılarak doğrulanmıştır; her biri beklenen davranışı üretmektedir.
Tekil araç çağrısı
Vadesiz TL hesabımın bakiyesini göster.
1234567890 numaralı BES sözleşmemin detaylarını göster.
TR86-4813900 numaralı hesabımın son 5 işlemini listele.
Sonu 4821 olan kredi kartımın borcunu öğrenmek istiyorum.
Sonu 4821 olan kredi kartımın limitini göster.
Otomatik ödeme talimatlarımı listele.
Döviz hesabımdaki dolar bakiyemi söyle.
TR86-4813900 numaralı hesabımın IBAN'ını ver.
Kredi kartı ekstremi getir, son dört hane 4821.
Son 10 işlemimi listele, hesabım TR86-4813900.
Hesap özetimi çıkar, TR86-4813900.
Birikim hesabımın TL bakiyesini göster.
Vadesiz dolar hesabımın bakiyesi ne kadar?
Çoklu araç çağrısı
Vadesiz TL hesabımın bakiyesini ve güncel dolar kurunu söyle.
Kart borcumu ve vadesiz TL bakiyemi göster. Kartımın son dört hanesi 4821.
Döviz hesabımın dolar bakiyesini ve euro kurunu birlikte ver.
Vadesiz TL bakiyemi göster ve en yakın ATM'yi bul.
Kart limitimi ve güncel borcumu göster, kart 4821.
Eksik bilgi — model sorar
Ahmet'e 5.000 lira gönder.
Kredi kartı borcumu öğrenmek istiyorum.
Hesabımın IBAN'ını ver.
Para transferi yapmak istiyorum.
Son işlemlerimi göster.
Kartımın limitini artır.
Döviz almak istiyorum.
Hesabımdan para çekmek istiyorum.
Otomatik ödeme talimatı tanımla.
Onay gerektiren işlemler — model teyit ister
Sonu 4821 olan kartımı çaldılar, hemen kapat.
Vadesiz hesabımı kapat, hesap TR86-4813900.
Sanal kartımı sil, kart id 7788.
Otomatik ödeme talimatımı iptal et, talimat no 5512.
Kredi kartımı bloke et, son dört hane 4821.
Kapsam dışı
Bugün hava nasıl?
Bana bir şiir yaz.
En iyi pizza tarifi nedir?
Sınırlamalar
Bu model araştırma ve prototipleme için yayınlanmıştır. Üretim ortamında kullanılacaksa aşağıdaki noktalar uygulama katmanında ele alınmalıdır.
Sayısal değerlerin aktarımı. Model araç sonucundaki tutarları cevaba aktarırken biçim hataları yapabilir. Finansal tutarlar, hesap numaraları ve tarihler modelin ürettiği metinden okunmamalı; araç sonucundan alınıp uygulama katmanında biçimlendirilmelidir. Kritik değerlerin model çıktısıyla karşılaştırılarak doğrulanması önerilir.
Araç adı doğrulaması. Model nadiren tanımlı listede bulunmayan bir araç adı üretebilir. Çağrılar çalıştırılmadan önce tanımlı araç listesine karşı doğrulanmalıdır. Üretim sırasında kısıtlı çözümleme (constrained decoding) kullanılması bu durumu tamamen engeller.
Çoklu araç kapsamı. Çok sayıda araç gerektiren isteklerde model bazı araçları atlayabilir. Çok adımlı senaryolarda isteğin uygulama katmanında alt görevlere bölünmesi daha güvenilir sonuç verir.
Dil kalitesi. Serbest metin üretiminde yazım hataları ve nadiren anlamsız sözcükler görülebilir. Taban modelin Türkçe temsili sınırlıdır; 1,5B parametre ve LoRA ile bu sınır tamamen aşılamamıştır.
Bankacılık bilgi soruları. Model araç çağırma için eğitildi, bilgi kaynağı olarak değil. "BES nedir", "IBAN kaç hanedir" gibi sorularda doğru olmayan yanıtlar üretmektedir. Bu tür sorular modele yöneltilmemeli; bilgi içeriği uygulama tarafından (SSS, doküman arama veya RAG ile) sağlanmalıdır. Modelin güçlü olduğu yer, isteği doğru araca ve argümanlara çevirmektir.
Alan kapsamı. Model bankacılık araçlarıyla eğitildi; başka alanların araçlarıyla kullanılmak üzere tasarlanmadı.
Doğrulama. Model finansal karar üretmez, tavsiye vermez ve gerçek bir bankacılık sistemine bağlı değildir. Araç sonuçları çağıran uygulama tarafından sağlanır; modelin çıktısı bir bilgi kaynağı değil, bir arayüz katmanıdır.
Eğitim
| Taban model | Qwen/Qwen2.5-1.5B-Instruct |
| Yöntem | LoRA (r=32, alpha=64), tüm attention ve MLP projeksiyonları |
| Bağlam | 2048 → 4096 (devam eğitimi) |
| Kayıp | Yalnızca asistan dönüşlerinde; sistem, kullanıcı ve araç sonucu maskelendi |
| Optimizasyon | AdamW, cosine, lr 1e-4, warmup %3 |
| Hassasiyet | bfloat16 |
Eğitim verisi Türkçe bankacılık diyaloglarından oluşur ve şu kategorileri içerir: tekil araç, çoklu araç, netleştirme, onay, araç hatası, kapsam dışı, güvenlik ve araç gerektirmeyen sorular.
Lisans
Taban model Apache-2.0 lisanslıdır; bu model de aynı lisansla yayınlanmıştır.