- Büyük dil modellerinin (LLM) JSON, XML, kod gibi yapılandırılmış biçimler üretirken ortaya çıkan kararsızlığı çözmeye yönelik geliştiriciler için pratik bir kılavuz
- Olasılıksal doğası nedeniyle çıktı deterministik olmayan şekilde bozulabilir; bu durumu telafi etmek için deterministik yapılandırılmış teknikleri ele alır
- İç çalışma prensipleri, araç ve teknik seçimi, dağıtım·ölçekleme·maliyet optimizasyonu, çıktı kalitesini iyileştirme gibi tüm süreci kapsar
- Hızla değişen yapılandırılmış üretim alanındaki güncel bilgileri sürekli güncellenen bir belge biçiminde bir arada sunar
- Veri çıkarma, kod üretimi, araç çağırma gibi alanlarda LLM'leri programatik olarak kullanan geliştiriciler için vazgeçilmez bir başvuru kaynağı
Yapılandırılmış LLM çıktısına neden ihtiyaç var?
- LLM'ler çoğunlukla JSON, XML, kod gibi sözdizimsel olarak geçerli çıktılar üretse de, olasılıksal doğaları nedeniyle biçim hataları veya eksik sonuçlar ortaya çıkabilir
- Bu da veri çıkarma, kod üretimi, araç çağırma gibi otomatikleştirilmiş süreçlerde sorunlara yol açar
- Bu sorunları çözmek için deterministik yapılandırılmış çıktı yöntemleri gerekir
- El kitabı, geliştiricilerin yapılandırılmış çıktıyı güvenilir biçimde uygulayabilmesi için araç ve tekniklerin tamamını ele alır
El kitabının ana içeriği
- İç çalışma prensipleri, en uygun araç ve teknikler, araç seçimi ölçütleri, sistem kurma·dağıtma·ölçekleme yöntemleri, gecikme süresi·maliyet optimizasyonu, çıktı kalitesini artırma gibi pratik odaklı konuları içerir
- Her başlık, geliştiricilerin doğrudan uygulayabileceği adım adım yaklaşımlar olarak düzenlenmiştir
- Yapılandırılmış çıktıyla ilgili en güncel araştırmalar ve açık kaynak araçlar tek bir belgede bir araya getirilmiştir
Güncellik ve güncellemeler
- Yapılandırılmış üretim teknolojileri çok hızlı geliştiği için mevcut kaynaklar kısa sürede eskimiş hale gelir
- Bu el kitabı, düzenli olarak güncellenen yaşayan bir belge (living document) olarak sürdürülür
- Geliştiriciler, farklı makaleleri, blogları ve GitHub depolarını taramak zorunda kalmadan en güncel bilgilere tek yerden erişebilir
Kullanım şekli
- Baştan sona sırayla okunabilir ya da gereken konunun hemen bulunabildiği bir başvuru kaynağı olarak kullanılabilir
- Pratik geliştirici odaklı yapısı sayesinde, belirli bir sorunu çözerken hızlı referans olarak kullanılabilir
Hazırlayanlar ve topluluk
- El kitabı Nanonets ekibi tarafından hazırlanmıştır
- LLM geliştirici topluluğu bülteni aracılığıyla iki haftada bir en güncel içgörüler, atılımlar, faydalı araçlar ve teknikler sunulur
1 yorum
Hacker News yorumları
Gerçekten çok güzel bir rehber. Özellikle birkaç sayfadaki sekme geçiş animasyonlarını çok beğendim
grammar-constrained generation konusunu oldukça iyi anladığımı düşünüyordum (llama.cpp grammar implementasyonuna birkaç katkım da oldu), ama buna rağmen bu rehberden yeni içgörüler edindim
Yapılandırılmış çıktıların, LLM motorlarının en az değer verilen özelliklerinden biri olduğunu düşünüyorum. Dilbilgisi kısıtları sayesinde LLM’ler daha büyük bir pipeline’ın parçası olarak güvenilir biçimde kullanılabiliyor (ör. tool-calling agent)
Çıktı anlamsal olarak yanlış olabilir ama dilbilgisel olarak her zaman doğrudur. Özellikle yerel modeller kullanırken bu nokta çok önemlidir
Örneğin Jart’ın Raspberry Pi tabanlı spam filtresi örneğinde olduğu gibi, TinyLlama modeline grammar uygulayıp yalnızca
"yes"veya"no"çıktısı vermesini sağlarsanız, küçük donanımlarda bile kararlı çalışırGerçekten harika bir rehber. Doktora sürecimde structured generation üzerine çalıştım; ilgilenenler için birkaç kaynak paylaşayım
Kütüphane olarak Outlines, Guidance, XGrammar var
Makale olarak Efficient Guided Generation for Large Language Models, Automata-based constraints for language model decoding, Pitfalls, Subtleties, and Techniques in Automata-Based Subword-Level Constrained Generation öneririm
Blog yazıları olarak da LLM Decoding with Regex Constraints ve Coalescence: making LLM inference 5x faster var
İyi derlenmiş bir rehber. Guidance ve llguidance optimizasyonu hakkında daha fazla bilgi edinmek isterseniz, yazdığımız kısa makaleye bakabilirsiniz
Bu rehber, insanların çoğunlukla kullandığı iki yöntemi iyi ele alıyor. Ancak constrained generation, LLM’in özgün dağılımından sapabilir
Örneğin LLM uzun yapılandırılmış nesneler üretirken
…gibi kalıpları tercih edebilir; kısıtlı üretim ise bunu zorla kapatılan tırnak işaretleri vb. ile düzelttiği için aslında daha yanlış sonuçlar verebilirBuna karşılık resampling, geçerli bir sonuç çıkana kadar tekrar ettiği için daha kararlıdır
Ayrıca schema hatalarını bağlama ekleyip uzunluğu artırmak yerine, doğrudan yeniden deneme yapmanın kalite ve maliyet açısından daha iyi olduğunu düşünüyorum
SoTA modellerde (Opus, Gemini vb.) hâlâ output schema enforcement gerekip gerekmediğini merak ediyorum
Bugünün modelleri JSON veya kod üretirken neredeyse hiç sözdizimi hatası yapmıyor, ama içeride hâlâ schema doğrulaması yapılıp yapılmadığını merak ediyorum
Küçük modeller için yapılandırılmış üretimin gerekli olduğunu anlıyorum
json\ngibi gereksiz token’lar eklediği için, hâlâ JSON yanıt şeması belirtmek daha güvenliYapılandırılmış çıktıyı zorlamak performans düşüşüne yol açıyor. Duruma göre 2–3 kat daha yavaş olabilir. Bunun katlanmaya değer bir maliyet olup olmadığı kullanım durumuna göre değerlendirilmeli
Gerçekten şaşırtıcı derecede iyi bir rehber. Keşke 1 yıl önce böyle bir kaynak olsaydı. Çevremdeki insanlarla kesinlikle paylaşacağım
Güzel bir rehber. Özellikle masked decoding diyagramını beğendim
JSON’dan daha güvenilir ve parse etmesi daha kolay bir çıktı formatı olup olmadığını merak ediyorum. YAML veya TOML’un ayrı ayrı dezavantajları var ama token sayısı ya da maliyet açısından daha iyi olabilirler gibi geliyor
Doküman/cookbook sayfasının teknoloji stack’ini merak ediyorum. MkDocs ya da GitBook’a benzemiyor; ne kullandığınızı bilmek isterim