Constrained Decoding
Kısıtlı kod çözme işleminin, yapay zeka yanıtlarını daha güvenli, yapılandırılmış ve yazılımların ayrıştırması daha kolay hale getirmek için geçerli JSON, şemaları, gramerleri ve araç çıktılarını nasıl zorladığını öğren.
Kısıtlı kod çözme, üretken bir modeli, her token üretirken geçerli çıktılarla sınırlayan bir çıkarım tekniğidir. Modelin tüm kelime dağarcığından seçim yapmasına izin vermek yerine, kod çözücü; izin verilen etiketler listesi, düzenli ifade, dil bilgisi veya bir JSON Schema gibi bir kuralı ihlal edecek seçimleri kaldırır. Bu, özellikle bir yapay zeka sisteminin yapılandırılmış veri döndürmesi veya izin verilen bir eylemi seçmesi gerektiğinde model yanıtlarının yazılım tarafından ayrıştırılmasını daha kolay ve daha güvenli hale getirir.
Kısıtlı Kod Çözme Nasıl Çalışır#
Otoregresif bir dil modeli, bir diziyi her seferinde bir token olarak üretir. Her adımda, olası sonraki token'lara logit adı verilen puanlar atar ve normalde bunları softmax kullanarak olasılıklara dönüştürür. Kısıtlı kod çözme ek bir filtreleme adımı ekler:
- Çıktının halihazırda üretilmiş olan kısmını takip et.
- Kısıtlama altında hangi sonraki token'ların geçerli kalmaya devam ettiğini belirle.
- Geçersiz token'ları maskele, böylece olasılıkları sıfır olsun.
- Kalan geçerli token'lar arasından seçim yap veya örnekleme gerçekleştir.
- Kısıtlama durumunu güncelle ve işlemi tekrarla.
Geçerli küme dinamik olarak değişir. Örneğin {"status": " üretildikten sonra bir şema, yalnızca "approved", "rejected" veya "review" değerini tamamlayabilecek token'lara izin verebilir. vLLM structured outputs sunan altyapılar seçimleri, düzenli ifadeleri, dil bilgisi kurallarını ve JSON şemalarını zorunlu kılabilirken, Outlines JSON generation kısıtlamaları şemalardan veya türü belirlenmiş Python modellerinden türetebilir.
Grafik kısıtlamalı kod çözme, geçerli dizileri bir grafik veya durum makinesi üzerinden yollar olarak temsil eden uygulamaları tanımlar. Üretilen her token kod çözücüyü, çıkış kenarları sonraki geçerli seçimleri tanımlayan başka bir duruma taşır. Bu yaklaşım dil bilgisi kuralları, varlık ilişkileri ve diğer duruma bağımlı kurallar için faydalıdır.
İlgili Kavramlar ve Temel Farklar#
Kısıtlı kod çözme birkaç yapay zeka kavramıyla yakından bağlantılıdır, ancak bunlar birbirinin yerine kullanılamaz:
- Structured outputs: Gerekli alanlara ve veri türlerine sahip bir nesne gibi istenen sonuç. Kısıtlı kod çözme, bu sonucu üretmek için kullanılan mekanizmalardan biridir. OpenAI Structured Outputs, Claude structured outputs ve Gemini structured outputs dahil olmak üzere hizmetler şema tabanlı kontroller sunar.
- JSON modu: Genellikle geçerli JSON sözdizimini garanti eder ancak belirli anahtarları, türleri veya izin verilen değerleri zorunlu kılmayabilir. Şema kısıtlı kod çözme belirli bir yapıyı hedefler.
- Function calling and tool use: Bir modelin harici bir işlemi nasıl talep ettiğini tanımlar. Kısıtlı kod çözme geçerli işlev adlarını ve argüman şekillerini zorunlu kılabilir, ancak uygulama yine de aracı çalıştırır ve yetkilendirir.
- Prompt engineering: Modelden talimatlar aracılığıyla bir biçimi izlemesini ister. Davranışı etkiler ancak geçersiz token'ları mekanik olarak ortadan kaldırmaz.
- Speculative decoding: Token'lar önererek ve doğrulayarak üretimi hızlandırır. Birincil amacı hızdır, oysa kısıtlı kod çözme geçerliliği kontrol eder.
Tür güvenli sistemler, her kuralı manuel olarak yazmak yerine Pydantic JSON Schema gibi araçlar aracılığıyla şemalar tanımlayabilir.
Gerçek Dünya Uygulamaları#
Belge işleme: Bir fatura işleme sistemi taranan belgelerden vendor, invoice_number, total ve currency verilerini çıkarabilir. Kısıtlı kod çözme, muhasebe yazılımına girmeden önce yanıtın beklenen anahtarlara ve veri türlerine sahip olmasını sağlar. Çıkarılan toplamın gerçekte doğru olduğunu garanti edemese de, hatalı biçimlendirilmiş yükleri önler.
Görüntü tabanlı güvenlik otomasyonu: Bir sistem, çalışanları ve koruyucu ekipmanı tespit etmek için Ultralytics YOLO26 kullanabilir, ardından ilgili gözlemleri bir dil modeline gönderebilir. Kod çözücü modelin kararını no_action, manual_review veya send_alert ile sınırlandırabilir. Bir Ultralytics Platform Agents workflow iş akışında, görüntü modelleri, koşullar, dil modelleri ve eylemler birbirine bağlanabilir, böylece yalnızca yeterli kriterleri karşılayan görüntüler sonraki adımlara ilerleyebilir.
Pratik İş Akışı Örneği#
Bilgisayarlı görü tahminleri, token token üretilmek yerine halihazırda yapılandırılmıştır. Aşağıdaki YOLO Predict mode iş akışı, aşağı akış kısıtlı dil modeli kararına girdi olabilecek JSON üretir:
from ultralytics import YOLO
# Load the recommended object detection model
model = YOLO("yolo26n.pt")
# Run inference and select the first result
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Serialize detections for a downstream constrained decoder
json_output = result.to_json()
print(json_output)Burada to_json(), kısıtlı kod çözme değil, deterministik serileştirme gerçekleştirir. Kısıtlı adım, üretken bir model bu tespitleri şemayla sınırlı bir rapora veya eyleme dönüştürürse daha sonra gerçekleşir.
Avantajlar, Sınırlar ve En İyi Uygulamalar#
Kısıtlı kod çözme ayrıştırma hatalarını, yeniden denemeleri, beklenmeyen alanları ve geçersiz araç argümanlarını azaltır. Bununla birlikte, yapısal geçerlilik LLM hallucinations sorununu ortadan kaldırmaz: kusursuz oluşturulmuş bir yanıt yine de yanlış gerçekler veya uygunsuz bir eylem içerebilir.
Dar şemalar, anlamlı alan açıklamaları, kapalı seçimler için enum'lar ve bilginin mevcut olmayabileceği durumlarda boş bırakılabilir (nullable) alanlar kullan. Üretimden sonra iş kurallarını doğrula, reddetmeleri ve kesilmiş yanıtları ele al ve her sağlayıcının desteklenen şema alt kümesini test et. Üretimde ayrıca biçim uyumluluğunu tek başına değerlendirmek yerine şema derleme yükünü, kod çözme gecikmesini ve anlamsal doğruluğu ölç.









