Hugging Face'te Karar Modelleri (Decision Models)
Kaynak: Hugging Face Blog
İçindekiler 2 başlık
Büyük Dil Modelleri (LLM'ler) metin üretme konusunda olağanüstü başarılıdır. Soruları yanıtlamak, kod yazmak, problemler üzerinde akıl yürütmek ve çok daha fazlası için onları kullanıyoruz. Ancak yazılım geliştirmede karşılaştığımız her problem metin üretmeyi gerektirmez.
Bir müşteri destek sisteminin şu mesajı aldığını düşünün: "Aboneliğim için iki kez ücret alındı. Bugün iade istiyorum." Sistemin bu talebi hangi ekibin ele alması gerektiğini, ne kadar acil olduğunu ve müşterinin iade talep edip etmediğini belirlemesi gerekir. Standart yaklaşımda bir LLM'den bu yanıtları içeren bir JSON nesnesi döndürmesini isteyebiliriz:
{
"team_to_handle": "Billing",
"urgency": "High",
"request_refund": true
}
Peki ya model hiçbir metin üretmeden, mevcut seçenekleri doğrudan değerlendirip bunlar üzerinde bir olasılık dağılımı döndürebilseydi? Hugging Face transformers kütüphanesindeki decision pipeline'ı (autotrust/GEV-26B-Decide gibi modellerle) tam olarak bunu yapar:
from transformers import pipeline
decide = pipeline("decision", model="autotrust/GEV-26B-Decide")
decision = decide({
"state": "I was charged twice for my order and want a refund.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"technical": "Bugs and technical issues",
"sales": "Pricing and subscriptions"
}
}
}
})
Bu çağrı sonucunda model; seçilen departmanı (billing), güven skorunu (confidence: 0.9974) ve tüm seçeneklerin olasılık dağılımını (probabilities) doğrudan döndürür. İşte karar modelleri (decision models) arkasındaki temel fikir budur.
Karar Modelleri (Decision Models) Nedir?#
Bir karar modeli; girdi bağlamını (state) alır, önceden tanımlanmış olası yanıtlar kümesine (primitives) sahip bir soruyu değerlendirir ve olasılıklarla birlikte yapılandırılmış bir karar döndürür. Modelden yanıtı token token üretmesini istemek yerine, uygulamamızın halihazırda anladığı yanıtlara olasılık atamasını isteriz.
TypeSafe AI, Jev modelini tanıtırken bunu hızlı ve sezgisel düşünmeyi temsil eden Sistem 1 (System One) modeli olarak tanımlamıştı. Ancak topluluk, bilişsel bir teoriye atıfta bulunmak yerine modelin hesaplama rolünü doğrudan tanımladığı için karar modeli (decision model) teriminde uzlaştı.
Bir karar modeli için temel arayüz şöyledir: Durum (State) + Sorular (Questions) + İzin Verilen Yanıtlar (Allowed Answers) → Kararlar (Decisions) + Olasılıklar (Probabilities)
Neden Her Şey İçin LLM Kullanmıyoruz?#
Bir LLM'den kararlarımızı içeren bir JSON nesnesi döndürmesini isteyebiliriz. Nitekim pek çok uygulama sınıflandırma, yönlendirme (routing) ve diğer yapılandırılmış görevler için dil modellerini bu şekilde kullanmaktadır. Ancak üretim ortamında (production) yazılım geliştirirken bu yaklaşımın önemli sorunları vardır:
- LLM'lerin istenen şemaya uyması garanti edilmez: Yapılandırılmış çıktı (Structured Output) ve JSON modu kullanılsa dahi, token tabanlı metin üretimi doğası gereği şema sapmalarına, gereksiz düşünme adımlarına (thinking tokens) ve ayrıştırma (parsing) hatalarına açıktır.
- Pratik Geliştirici Çıkarımı: Uygulamanızda açık uçlu metin üretimi yerine sabit seçenekler arasından yönlendirme veya sınıflandırma yapıyorsanız, karar modelleri kullanmak deterministik şema uyumu sağlar, gecikmeyi azaltır ve olasılık skorları sayesinde güven eşiği (confidence threshold) kurmanıza olanak tanır.
Kaynak ve atıf
Bu yazı, Hugging Face Blog üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- huggingface.co/blog/decision