Çok Modelli API Ağ Geçidinde Yapılandırılmış Çıktılar: JSON Şeması, Araç Çağrıları ve Anlamsal Korumalar
Birden çok LLM sağlayıcısında güvenilir yapılandırılmış çıktılar için pratik bir adaptör modeli: şemaları normalleştirin, yanıtları doğrulayın, araç çağrılarını yönetin, hataları günlüğe kaydedin ve güvenli olmayan eylemleri üretim iş akışlarına ulaşmadan engelleyin.
Bir modelden "JSON'u döndürmesini" istemek bir üretim sözleşmesi değildir. Yanlış numaralandırmayla geçerli JSON üretebilir, gerekli bir iş kuralını atlayabilir veya kullanıcının asla yetkilendirmediği bir eylemi kendinden emin bir şekilde talep edebilir. Çok sağlayıcılı bir iş akışında sorun daha da zorlaşıyor: Her sağlayıcı farklı yapılandırılmış çıktı ve araç kullanımı mekanizmalarını ortaya koyuyor ve her biri JSON Schema evreninin yalnızca bir kısmını destekliyor.
Pratik çözüm tek bir sihirli ipucu değildir. Katmanlı bir ağ geçidi modelidir: Geliştiricinin istediği şemayı normalleştirin, bunu sağlayıcının yerel yapılandırılmış çıktısına veya mümkün olduğunda araç çağrısı formatlarına çevirin, döndürülen nesneyi doğrulayın ve herhangi bir yan etkiden önce anlamsal korumalar uygulayın.
Bu kılavuz, genellikle birbirine karıştırılan üç farklı hedefi birbirinden ayırıyor:
- Söz dizimi geçerliliği: yanıt ayrıştırılabilir JSON'dur.
- Şema geçerliliği: JSON gerekli alanlar, türler, numaralandırmalar ve yapısal kurallarla eşleşir.
- İşletme doğruluğu: Nesne güvenlidir, kullanıcının amacına sadıktır ve sonraki işlemler için geçerlidir.
Üretim hatası: geçerli JSON, yanlış eylem
Gelen biletleri yönlendiren bir destek otomasyonu düşünün:
<ön>Bu nesne sözdizimsel olarak geçerlidir. action bir dize ve amount_usd bir sayı ise basit bir şemayı bile iletebilir. Ama yine de yanlış olabilir. Belki müşteri sadece fatura kopyasını istemiştir. Belki 100 doların üzerindeki geri ödemeler yönetici onayı gerektirebilir. Kullanıcının geri ödemeleri tetikleme yetkisi olmayabilir.
Yapılandırılmış çıkışlar ayrıştırma hatalarını azaltır. Riskli operasyonlar için yetkilendirme, politika kontrolleri, envanter kontrolleri, fiyatlandırma kontrolleri, yetkisizlik veya insan onayının yerini almazlar.
Gerçekler: Sağlayıcı yapılandırılmış çıktı modları neler vaat ediyor ve neler vaat etmiyor
Sağlayıcı ortamı hızlı bir şekilde değişiyor ancak mimarlık için önemli olan bazı sabit gerçekler var:
- JSON modu, geçerli JSON üretilmesine yardımcı olabilir ancak geçerli JSON, belirli bir şemaya uygunlukla aynı şey değildir.
- Sağlayıcıya özgü yapılandırılmış çıktı modları, şemaya uyumu iyileştirmek için tasarlanmıştır, ancak genellikle JSON Şemasının yalnızca bir alt kümesini desteklerler.
- Araç çağırma genellikle eylemler için serbest biçimli JSON'dan daha uygundur çünkü model, bildirilen bir aracı seçer ve yapılandırılmış bağımsız değişkenler döndürür, uygulama yürütmeden sorumlu olmaya devam eder.
- Farklı sağlayıcılar farklı sözleşmeler sunar. Biri katı bir JSON Şeması yanıt formatı kullanabilir, diğeri araç giriş şemalarını kullanabilir, diğeri ise doğrulama ve yeniden deneme geri dönüşü gerektirebilir.
- Şema açısından geçerli çıktı bile bir veritabanına, iş akışına veya ücretli eyleme ulaşmadan önce anlamsal olarak yanlış olabilir.
Bunun mimari anlamı basittir: OpenAI uyumlu bir API istemci arayüzünü standartlaştırabilir, ancak güvenilirlik katmanının yine de sağlayıcı yeteneklerini anlaması ve çıktıları üretimden sonra doğrulaması gerekir.
Önerilen mimari: yapılandırılmış çıkış bağdaştırıcısı
Uygulama kodu ile sağlayıcı API'leri arasında ağ geçidi tarafı bağdaştırıcısı kullanın. Uygulama bir şema amacı gönderir. Ağ geçidi, amacı desteklenen en güçlü sağlayıcı mekanizmasıyla eşleştirir.
1. Uygulamadan normalleştirilmiş bir isteği kabul edin
İstemcinin her sağlayıcı için ayrı kod yollarına ihtiyacı olmamalıdır. Pratik bir istek zarfı model tercihini, görev girişini, şemayı, şema meta verilerini ve risk düzeyini içerir:
<ön>Bu sözleşme, ağ geçidine sağlayıcıya özgü bir uygulama seçmesi, doğrulamayı çalıştırması ve anlamlı hata verilerini günlüğe kaydetmesi için yeterli bilgiyi sağlar.
2. Sağlayıcı yetenek matrisini koruyun
Ağ geçidi, makine tarafından okunabilen bir yetenek matrisi tutmalı, "Tüm OpenAI uyumlu modeller aynı şema davranışını destekler" gibi varsayımlara dayanmamalıdır. Yararlı bir matris şunları içerir:
- Sağlayıcı ve model adı.
- JSON modunu destekler.
- JSON Şeması yanıt biçimini destekler.
- Araç çağrılarını destekler.
- Katı şema modunu destekler.
- Bilinen JSON Şeması alt kümesi sınırlamaları.
- Paralel araç çağrılarının katı şema moduyla uyumlu olup olmadığı.
- İstenen mod desteklenmediğinde geri dönüş davranışı.
Örnek yetenek kaydı:
<ön>Bu matrisin sürümü oluşturulmalı ve test edilmelidir. Bir sağlayıcı davranışını değiştirdiğinde veya yeni bir model eklendiğinde, üretim yönlendirmeden önce yapısal çıktı uyumluluğu doğrulanmalıdır.
3. En güçlü sağlayıcı-yerel sözleşmeye çevirin
Bağdaştırıcı net bir tercih sırasını takip etmelidir:
- Seçili model ve şema tarafından desteklendiğinde, sağlayıcıya özgü katı yapılandırılmış çıktılar kullanın.
- Eylemler ve işlev benzeri görevler için sağlayıcıya özgü araç çağrısını kullanın.
- Katı mod kullanılamadığında doğrulama ve yeniden denemelerle katı olmayan yapılandırılmış çıktıyı veya JSON modunu kullanın.
- İsteği reddedin, uyumlu bir yedek modele yönlendirin veya yüksek riskli iş akışları için eylem dışı yanıt döndürün.
Yüksek riskli bir işlemin düzeyini katı şema modundan "en iyi çaba JSON'una" sessizce düşürmeyin. Uygulama katı davranış talep ettiyse ve seçilen sağlayıcı bunu destekleyemiyorsa ağ geçidi bunu bir hata, yönlendirme kararı veya açık sürüm düşürme işareti aracılığıyla görünür hale getirmelidir.
Yürütmeden önce üç doğrulama katmanı
Katman 1: ayrıştırma doğrulaması
Öncelikle yanıtın beklenen zarfa ayrıştırılıp ayrıştırılamayacağını belirleyin. Hatalı biçimlendirilmiş JSON, eksik araç çağrısı blokları, kısaltılmış yanıtlar veya sözleşmenin yasakladığı doğal dil ile JSON karışımı durumlarda hızlı başarısız olun.
işlev ayrıştırmaStructuredResponse(raw) {
dene {
return { ok: true, değer: JSON.parse(raw) };
} yakalamak (hata) {
return { ok: false, Failure_type: "parse_failure", error: String(error) };
}
Sağlayıcıya özgü araç çağrıları ham metin bloğunun ayrıştırılmasını gerektirmeyebilir ancak yine de zarf doğrulaması gerektirir: Model bilinen bir aracı seçti mi, bağımsız değişkenler sağladı mı ve beklendiği gibi araç yürütmeyi durdurdu mu?
Katman 2: JSON Şeması doğrulaması
Sonra, sunucu tarafı doğrulayıcı kullanarak nesneyi bildirilen şemaya göre doğrulayın. Sağlayıcı katı şema desteği talep ettiğinde bile bunu yapın. Ağ geçidi tarafı doğrulama, hataların tutarlı bir şekilde günlüğe kaydedilmesini sağlar, entegrasyon hatalarına karşı koruma sağlar ve aşağı yöndeki uyumsuzlukları yakalar.
const validate = schemaValidator.compile(schema);
const geçerli = validate(nesne);
eğer (!geçerli) {
dönüş {
tamam: yanlış,
başarısızlık_türü: "şema_başarısızlığı",
hatalar: validate.errors
};
Taşınabilirlik için şemaları ortak alt kümeyi göz önünde bulundurarak tasarlayın:
- Açık
type,required,properties,enumveadditionalProperties: false'u tercih edin. - Hedef sağlayıcının bunları desteklediğini bilmediğiniz sürece derinlemesine yuvalanmış
oneOf,anyOfve koşullu şemalar gibi karmaşık kombinasyonlardan kaçının. - Eylem argümanlarını küçük ve somut tutun.
- Aşağı yönlü sistemler başka bir tür gerektirmediği sürece kimlikler, tarihler ve kodlar için dizeleri kullanın.
confidence,missing_fieldsveyarequires_human_reviewgibi alanlarla belirsizliği açık bir şekilde temsil edin.
3. Katman: anlamsal ve iş doğrulama
Son olarak, yapılandırılmış sonucun görev için doğru olup olmadığını doğrulayın. Bu katman alana özeldir ve yalnızca JSON Schema'ya dış kaynak olarak verilemez.
Fatura çıkarma için anlamsal kontroller şunları içerebilir:
- Toplam negatif değildir ve satır öğeleriyle tolerans dahilinde eşleşir.
- Para birimi kaynak belgede görünüyor.
- Son tarih inanılmayacak kadar geçmişte veya gelecekte değil.
- Satıcı, onaylanmış bir satıcı listesinde mevcut.
- Güven, otomatik giriş için yeterince yüksektir.
Potansiyel müşteri yeterliliği için kontroller şunları içerebilir:
- Seçilen segment, satış ekibinin aktif segmentlerinden biridir.
- İstenen bütçe, kullanıcı bütçe sağlamadığında icat edilmemiş demektir.
- Kullanıcı açıkça istemediği sürece "kitap demosu" işlemi yürütülmez.
İş Ortağı API otomasyonu için kontroller şunları içerebilir:
- Bayi hesabı, istenen müşteriyi veya anahtarı oluşturma yetkisine sahiptir.
- İstenen harcama sınırı iş ortağı politikası dahilindedir.
- İşlemin bir önemsizlik anahtarı var.
- Eylem, yürütülmeden önce bir denetim günlüğüne kaydedilir.
Araç çağrıları: model çıktısını bir yürütme olarak değil, istek olarak ele alın
Modelin uygulamadan bir şey yapmasını istemesi gerektiğinde araç çağırma doğru modeldir: destek bildirimi oluşturmak, Telegram bot komutu göndermek, fiyatlandırmaya bakmak, müşteri kaydını güncellemek veya bir iş akışı başlatmak.
Güvenli bir araç döngüsü şuna benzer:
- Uygulama mevcut araçları ve bunların giriş şemalarını bildirir.
- Model, yapılandırılmış bağımsız değişkenlere sahip bir araç çağrısı döndürür.
- Ağ geçidi, araç adını ve bağımsız değişkenleri doğrular.
- Uygulama yetkilendirmeyi, politikayı, geçiciliği ve kullanıcı onayı gereksinimlerini kontrol eder.
- Ancak o zaman uygulama aracı çalıştırır.
- Konuşmanın devam etmesi gerekiyorsa araç sonucu modele geri gönderilir.
Bir araç çağrısını hiçbir zaman eylemin gerçekleşmesi gerektiğinin kanıtı olarak görmeyin. Bunu yapılandırılmış bir teklif olarak ele alın. Uygulama, yan etkiler konusunda otorite olmaya devam ediyor.
Çok modelli iş akışları için güvenli geri dönüş merdiveni
Bir ağ geçidi, olaylar meydana gelmeden önce geri dönüş davranışını tanımlamalıdır. Pratik bir merdiven:
- Birincil: tercih edilen modelde sıkı yapılandırılmış çıktı.
- Uyumlu geri dönüş: aynı katı şema gereksinimlerini destekleyen başka bir model.
- Doğrulama ve yeniden deneme: sıkı desteği olmayan ve yalnızca risk izin verdiğinde kullanılan bir sağlayıcı.
- İnsan incelemesi: Yapılandırılmış sonucu ve kaynak içeriği onay için sıraya koyun.
- Eylem dışı yanıt: sistemin işlemi güvenli bir şekilde tamamlayamayacağını açıklayın.
Yeniden denemeler, biçimlendirme veya küçük şema hataları için faydalıdır ancak bir güvenlik stratejisi değildir. Nesne anlamsal olarak güvensizse, tekrarlanan istem, doğru reddetmeyi tehlikeli bir yürütülebilir nesneye dönüştürebilir. Yüksek riskli işlemlerde, tekrarlanan başarıyı zorlama girişimleri yerine incelemeyi veya reddetmeyi tercih edin.
Gözlemlenebilirlik: her yapılandırılmış çıktı kararını günlüğe kaydedin
Yapılandırılmış çıkış arızaları operasyonel sinyallerdir. Gereksiz hassas içeriği açığa çıkarmadan yönlendirmeyi, şemaları ve istemleri iyileştirmek için bunları yeterli ayrıntıyla günlüğe kaydedin.
Önerilen alanlar:
schema_idveschema_version.- Sağlayıcı ve model.
- İstenen mod ve kullanılan gerçek mod.
- Ayrıştırma hatası durumu.
- Şema hatası durumu ve doğrulama hataları.
- Anlamsal doğrulama başarısızlığının nedeni.
- Sayımı yeniden dene.
- Gecikme.
- Jeton kullanımı ve maliyeti.
- Nihai eylem durumu: yürütüldü, sıraya alındı, reddedildi veya kullanıcıya iade edildi.
- Uygun olduğu yerde ekip, proje, API anahtarı veya iş ortağı hesabı tanımlayıcısı.
Bu günlükler hata ayıklamayı, maliyet analizini, sağlayıcı karşılaştırmasını ve ekip API yönetimini destekler. Ayrıca şu tür soruların yanıtlanmasına da yardımcı olurlar: "En çok yeniden denemeye hangi şema sürümü neden oluyor?" ve "Hangi yedek model sözdizimini geçiyor ancak iş doğrulamasında başarısız oluyor?"
Şema sürüm oluşturma kuralları
Şemalar üretim arayüzleridir. Onlara API sözleşmeleri gibi davranın.
- İstek meta verilerine ve günlüklerine
schema_idveschema_version'u ekleyin. - Mevcut otomasyonlar için gerekli alanları sessizce değiştirmeyin.
- İstemciler taşınırken eski şemaları kullanılabilir durumda tutun.
- Yeni isteğe bağlı alanları zorunlu hale getirmeden önce ekleyin.
- Yönlendirme havuzundaki her sağlayıcı ve yedek modele karşı şemaları test edin.
- Yan etkili her eylem için hangi şema sürümünün kullanıldığını kaydedin.
Sürüm oluşturma, birçok alt müşterinin istikrarlı yapılandırılmış bir sözleşmeye bağlı olabileceği ajanslar, bayiler ve İş Ortağı API otomasyonu için özellikle önem kazanıyor.
Yapılandırılmış bir sonuç ne zaman yürütülmemelidir
Aşağıdaki koşullardan herhangi biri ortaya çıktığında ani durdurma kullanın:
- Yanıt ayrıştırılamaz.
- Nesne JSON Şeması doğrulamasında başarısız oldu.
- Bir numaralandırma değeri desteklenmiyor veya icat edilmiş.
- Bir miktar, fiyat, tarih veya para birimi imkansızdır.
- Sonuç, kullanıcının belirttiği amaçla çelişiyor.
- Model düşük güvenirliği veya eksik kanıtları ifade ediyor.
- Kullanıcı talimatı belirsiz.
- Eylemin yan etkileri var ve onayı yok.
- Hesap, ekip veya API anahtarı yetkili değil.
- Sağlayıcının yanıtı, ret veya güvenlikle ilgili yanıt vermemeyi içerir.
Öneriler ve tahminler
Öneriler: Mümkün olduğunda sağlayıcıya özgü yapılandırılmış çıktılar kullanın, her yanıt ağ geçidi tarafını doğrulayın, eylemler için araç çağrılarını tercih edin, bir yetenek matrisi, sürüm şemaları sürdürün ve anlamsal kontroller başarılı olana kadar yan etkileri engelleyin.
Tahminler: Yapılandırılmış çıktılar için sağlayıcı desteği muhtemelen daha güçlü ve daha tutarlı hale gelecektir, ancak model aileleri, şema alt kümeleri ve araç çağrısı döngüleri bir gecede aynı olmayacağından taşınabilirlik bir ağ geçidi endişesi olmaya devam edecektir. Doğrulama, gözlemlenebilirlik ve şema sürüm oluşturma özelliklerini geliştiren ekipler artık her iş akışını yeniden yazmaya gerek kalmadan yeni sağlayıcı özelliklerini benimseme konusunda daha iyi bir konumda olacak.
Harekete geçirilebilir uygulama kontrol listesi
- Uygulamalarınız için normalleştirilmiş bir yapılandırılmış çıktı isteği biçimi tanımlayın.
- Yönlendirme havuzunuzdaki her model için bir sağlayıcı yetenek matrisi oluşturun.
- Taşınabilir bir JSON Şeması alt kümesi kullanarak şemalar tasarlayın.
- Desteklendiğinde istekleri katı sağlayıcıya özgü mekanizmalara çevirin.
- Oluşturma sonrasında ayrıştırılabilirliği, şema uyumluluğunu ve iş doğruluğunu doğrulayın.
- Yan etkili işlemler için araç çağrılarını kullanın.
- Model dışında yetkilendirme, yetkisizlik ve onay gerektirir.
- Şema sürümünü, sağlayıcıyı, doğrulama hatalarını, yeniden denemeleri, gecikmeyi, maliyeti ve işlem durumunu günlüğe kaydedin.
- İş akışı risk düzeyine göre geri dönüş davranışını tanımlayın.
- Bağımlı otomasyonlar taşınana kadar eski şemaları kullanılabilir durumda tutun.
Pratik amaç, her modelin aynı şekilde davranmasını sağlamak değildir. Ağ geçidi sağlayıcı farklılıklarını dürüstçe ele alırken, uygulama geliştiricilerine istikrarlı bir sözleşme vermektir. Yapılandırılmış çıktılar, güvenilir yapay zeka otomasyonu için gerekli altyapıdır ancak üretim sınırı, bir nesnenin kullanımının güvenli olup olmadığına karar veren doğrulayıcı ve politika katmanıdır.