Açık kaynak · Apache 2.0 · v2.0
İlk Türkçe tam donanımlı
karar modeli
Karar modelleri, bir metin hakkında tanımlı sorulara (örneğin bir kaydın hangi ekibe yönlendirileceği, ne kadar acil olduğu ya da bir insana devredilmesinin gerekip gerekmediği) cevap verir ve metin üretmek yerine her seçenek için bir olasılık döndürür. Mevcut karar modelleri İngilizce için geliştirilmiştir ve Türkçedeki doğrulukları sınırlıdır. Pusula, Türkçeye uyarlanmış Decision 3.0'dır.
Gerçek müşteri mesajları
90,6
Decision 3.0: 84,0 · +6,6
Uzun müşteri şikâyetleri
88,3
Decision 3.0: 81,5 · +6,8
Türkçe Karar Benchmark'ı
92,0
Decision 3.0: 88,5 · +3,5
Pusula'nın doğruluğu (%). Değerlendirme yöntemi Sonuçlar bölümünde açıklanmıştır.
Nasıl çalışır
Bir istek, bir metinden (state) ve adlandırılmış sorulardan oluşur. Her sorunun
seçenekleri isteğin içinde tanımlanır; bu sayede yeni etiketler yeniden eğitim gerektirmeden eklenebilir.
İstek
{
"state": "Kartımdan bilgim dışında 4.500 TL çekilmiş, hemen bloke edin!",
"questions": {
"ekip": {
"type": "choice",
"instructions": "Bu talebi hangi ekip ele almalı?",
"criteria": {
"dolandiricilik": "Şüpheli işlem ve dolandırıcılık",
"kart_islemleri": "Kart başvurusu, limit ve şifre",
"genel_destek": "Diğer sorular"
}
},
"acil": { "type": "noul", "instructions": "Hemen müdahale gerekiyor mu?" },
"risk": {
"type": "score",
"instructions": "Finansal risk ne düzeyde?",
"criteria": ["Düşük", "Orta", "Yüksek"]
}
}
}
Cevap (temsilî değerler)
{
"answers": {
"ekip": {
"type": "choice",
"choice": "dolandiricilik",
"probabilities": {"dolandiricilik": 0.94, "kart_islemleri": 0.05, "genel_destek": 0.01},
"confidence": 0.94
},
"acil": {"type": "noul", "noul": 0.97},
"risk": {
"type": "score",
"score": 1.86,
"probabilities": {"0": 0.02, "1": 0.10, "2": 0.88},
"confidence": 0.88,
"legend": {"0": "Düşük", "1": "Orta", "2": "Yüksek"}
}
},
"model": "pusula"
}
Özellikler
Decision 3.0'ın arayüzü korunmuş ve Türkçe metinler için genişletilmiştir.
Önce Türkçe
Decision 3.0; bankacılık, hukuk, sağlık, e-ticaret, lojistik ve kamu hizmetleri dahil 20 alandan Türkçe karar verisiyle ince ayarlanmıştır. Gündelik yazım, yazım hataları, eksik Türkçe karakterler ve Türkçe–İngilizce karışık metinler kapsanmaktadır.
İstek anında tanımlanan seçenekler
Sorular ve seçenekleri her istekte ayrıca belirtilir. Model sabit bir etiket kümesiyle sınırlı değildir.
Üç soru tipi
choice (tek seçenek), noul (evet/hayır) ve
score (sıralı seviyeler). Her cevapta her seçenek için bir olasılık döndürülür.
d3 ile doğrudan değiştirilebilir
Decision 3.0'ın /v1/systemone istek
ve cevap biçimi aynen korunmuştur; bu nedenle Pusula, mevcut entegrasyonlarda d3'ün yerine
kullanılabilir.
Hazır Türkçe taksonomi ve şablonlar
20 alan, 103 alt alan ve 333 niyetin yanı sıra 20 hazır şablon (konu ve niyet, mesajlar için 14 kontrol ve yapay zekâ ajanları için 4 kontrol) sunulmaktadır. Kurumun kendi konu listesiyle yönlendirme de desteklenmektedir.
Bağımsız değerlendirme
Pusula, bağımsız olarak etiketlenmiş Türkçe test setlerinde ham Decision 3.0 ile karşılaştırılmıştır. Türkçe Karar Benchmark'ı modelle birlikte yayımlanmaktadır.
Modeller
İki model sunulmaktadır. Her iki model de aynı istekleri kabul eder.
Pusula (Türkçe Decision 3.0)
Çok seçenekli görevler dahil, hazır ve özel sorular için önerilmektedir.
- Boyut
- 26B:
vllm-sr/d3üzerine 0,9 GB'lık LoRA adaptörü - Çalıştığı yer
- GPU: BF16'da ≥ 64 GB, 4-bit'te ≥ 24 GB
- Benchmark / altın
- 92,0 / 92,1
- Ağırlıklar
- erenextlabs/pusula
Pusula Nano
Hazır sorularda yüksek hacim ve düşük gecikme için önerilmektedir.
- Boyut
- 149M (TabiBERT cross-encoder)
- Çalıştığı yer
- CPU veya herhangi bir GPU
- Benchmark / altın
- 83,2 / 91,3
- Ağırlıklar
- erenextlabs/pusula-nano
Sonuçlar
Doğruluk (%). Değerlendirme etiketleri, birbirinden bağımsız ve kör çalışan iki etiketçi (Claude Opus 5.5 ve Claude Sonnet 5.5) tarafından atanmış; ayrışmalar hakem tarafından karara bağlanmıştır. Tüm etiketler yayımlanan etiketleme politikasına uygundur. Değerlendirme etiketleri yalnızca ölçüm amacıyla kullanılmakta olup hiçbir zaman eğitim etiketi olarak kullanılmamaktadır.
Decision 3.0 ve Pusula, doğruluk (%)
Her satır, temel modelden Pusula'ya olan değişimi göstermektedir. Tüm değerler aşağıdaki tabloda yer almaktadır.
- Decision 3.0
- Pusula
| Değerlendirme | Soru | Decision 3.0 | Pusula | Pusula Nano |
|---|---|---|---|---|
| Gerçek müşteri mesajları (500, eğitim dışı, lisanslı) | 7.500 | 84,0 | 90,6 | 89,9 |
| Uzun müşteri şikâyetleri (500, eğitim dışı, lisanslı) | 4.500 | 81,5 | 88,3 | 84,6 |
| Türkçe Karar Benchmark'ı (2.194 mesaj) | 19.861 | 88,5 | 92,0 | 83,2 |
| Altın test seti (eğitimde olmayan 757 mesaj) | 11.355 | 86,3 | 92,1 | 91,3 |
| Görülmemiş sektörlerde özel sorular | 400 | 92,8 | 93,5 | 55,5 |
| MASSIVE tr-TR, 60 seçenekli niyet, sıfır örnek (insan yazımı) | 2.974 | 85,3 | 85,2 | 32,7 |
| OffensEval 2020 Türkçe, saldırgan dil (gerçek tweet'ler) | 3.528 | 88,4 | 88,3 | 81,8 |
Altın test seti, soru bazında
| Soru | Decision 3.0 | Pusula |
|---|---|---|
| Alan | 82,0 | 83,0 |
| Mesaj türü | 69,0 | 93,3 |
| Aciliyet (4 seviye) | 53,1 | 84,0 |
| Duygu | 89,2 | 93,9 |
| Eksik bilgi | 71,5 | 70,9 |
| Eylem gerekli mi | 88,6 | 92,1 |
| İnsana devretme | 81,4 | 87,6 |
| Kişisel veri | 96,4 | 96,4 |
| Güvenlik riski | 95,6 | 99,1 |
| Hakaret ve nefret söylemi | 99,2 | 100,0 |
| Dolandırıcılık | 92,1 | 98,8 |
| Can güvenliği | 98,0 | 99,1 |
| Yasal risk | 95,5 | 95,9 |
| Ayrılma riski | 85,7 | 89,3 |
| Satış fırsatı | 97,2 | 97,5 |
- Gerçek müşteri mesajları: Değerlendirme, ticari bir iş ortağından lisanslanan ve eğitimde kullanılmayan 500'er anonim mesajdan oluşan iki set üzerinde yapılmıştır: müşteri mesajları (yorum, şikâyet ve soru) ile uzun ve ayrıntılı müşteri şikâyetleri. Bu setler yayımlanmamaktadır.
- Sürüm 2.0: Değerlendirme setleri 20 şablonu kapsayacak biçimde genişletilmiş ve v2.0 etiketleme politikasıyla etiketlenmiştir; bu nedenle puanlar v1.0 için yayımlananlarla karşılaştırılamaz. v2.0'ın daha düşük kaldığı ölçümler dâhil v1.0 ile karşılaştırma README dosyasında yer almaktadır.
- Özel sorular (hazır şablonlar arasında yer almayan sorular) ve eksik bilgi şablonu, adaptör kapatılarak temel Decision 3.0 modeli tarafından cevaplanmaktadır; öteki hazır şablonlar adaptörle cevaplanmaktadır.
- Pusula Nano ağırlıklı olarak hazır sorularla eğitilmiştir. Hazır sorulardan farklı ya da çok seçenekli görevler için Pusula önerilmektedir.
- MASSIVE ve OffensEval eğitim verisinde yer almamaktadır.
Hızlı başlangıç
PyTorch'un CUDA sürümünün önceden kurulması gerekir. Pusula Nano için yalnızca serve
eki yeterlidir; model CPU'da çalışır.
Kurulum
pip install "pusula[serve,d3] @ git+https://github.com/erenextlabs/pusula"
hf download vllm-sr/d3 --local-dir ~/d3 --exclude "assets/*" # temel Decision 3.0 ağırlıkları (~52 GB)
hf download erenextlabs/pusula --local-dir ~/pusula # Pusula adaptörü (~0,9 GB)
# ya da temel ağırlık gerektirmeyen küçük model:
hf download erenextlabs/pusula-nano --local-dir ~/pusula-nano # Pusula Nano (~0,6 GB)
Python
from pusula.inference import D3Engine, DecisionEngine
engine = D3Engine.load("~/d3", adapter="~/pusula") # Pusula (Türkçe Decision 3.0)
# engine = DecisionEngine.load("~/pusula-nano") # Pusula Nano (GPU veya CPU)
answers = engine.decide(
"Siparişim 5 gündür kargoda, hâlâ gelmedi. Artık iptal etmek istiyorum.",
{
"niyet": {
"type": "choice",
"instructions": "Müşteri ne istiyor?",
"criteria": {
"kargo_takip": "Gönderinin nerede olduğunu öğrenmek",
"iptal": "Siparişi iptal etmek",
"iade": "Teslim alınan ürünü iade etmek",
},
},
"temsilci": {"type": "noul", "instructions": "Bir insan temsilciye aktarılmalı mı?"},
},
)
print(answers["niyet"]["choice"], answers["niyet"]["confidence"])
HTTP API, hazır taksonomi, soru yazma önerileri ve güven değerlerinin kullanımı README dosyasında açıklanmıştır.
Kendi modelinizi eğitmek
Pusula'nın oluşturulmasında kullanılan tüm bileşenler depoda yer almaktadır; bu sayede Decision 3.0 başka alanların ya da dillerin verisiyle ince ayarlanabilir. Etiketli karar verisi yerel bir açık ağırlıklı modelle üretilir, temizlenir ve d3'ün QLoRA ile ince ayarında kullanılır. Her aşama kaldığı yerden sürdürülebilir.
Lisans ve teşekkürler
Pusula, Apache 2.0 lisansıyla yayımlanmaktadır ve tümü Apache 2.0 lisanslı olan vllm-sr/d3 (vLLM Semantic Router), Qwen3.8 (Qwen Team, Alibaba Cloud) ve TabiBERT (Boğaziçi Üniversitesi TABILAB) üzerine kurulmuştur.
Veri kaynağı
Pusula modelleri ağırlıklı olarak bu proje için üretilmiş sentetik Türkçe veriyle eğitilmiştir. Ticari bir iş ortağından lisanslanan sınırlı sayıda gerçek müşteri mesajı da eğitim verisine dahil edilmiştir. Bu mesajlar kullanımdan önce anonimleştirilmiş olup hiçbir biçimde yeniden dağıtılmamaktadır.