Bir model uç noktasına bağlanmak bir öğleden sonra sürer. Ekipler bunu yapar, çalışan bir yanıt görür ve entegrasyonun büyük ölçüde bittiği sonucuna varır. Sonra özelliğin kullanıcılarla temasta hayatta kalıp kalmayacağını asıl belirleyen iş başlar - ve bunun modelle hiçbir ilgisi yoktur.
Entegrasyon, yapay zeka yeteneğinin artık kimliği, izinleri, işlemleri, hata yönetimi, denetim gereksinimleri ve gecikme beklentisi olan kullanıcıları bulunan bir sisteme katılması demektir. Uç nokta çağrısı bunun en küçük parçasıdır. Pahalı olan her şey; çevredeki sistem yük altındayken, bir bağımlılık yavaşken, kullanıcı yetkili değilken ve cevap yanlışken yeteneğin nasıl davrandığında yaşar.
Bu yazı, üretim entegrasyonunun ele alması gereken katmanları kapsıyor: kimlik ve izinler, veri yolu, yeteneğin nasıl çağrıldığı, hata davranışı ve sonrasında neyin gözlemlenebilir olması gerektiği.
Uç Nokta Arayüz Değildir
İlk mimari karar, sağlayıcıyı uygulama kodundan doğrudan çağırmayı bırakmaktır.
Kod tabanına dağılmış SDK çağrıları, hepsi sonradan yüzeye çıkan üç sorun yaratır. Sağlayıcı değiştirmek, her çağrı noktasında ara-değiştir işine dönüşür. Kesişen davranışlar - zaman aşımı, yeniden deneme, maliyet muhasebesi, prompt sürümleme, kayıt - tekrar tekrar yazılır ve uygulamalar arasında birbirinden ayrışır. Ve sistemin üçüncü tarafa ne gönderdiğini kimse yanıtlayamaz; çünkü cevap depo boyunca dağılmıştır.
Tek bir dahili arayüz üçünü de çözer. Uygulama kodu bir yetenek ister - "bu talebi özetle", "bu alanları çıkar" - ve arkasındaki katman hangi sağlayıcı, hangi model, hangi prompt sürümü ve hatanın nasıl ele alınacağına karar verir. Prompt orada, iş mantığının yanındaki bir metin sabiti olarak değil, sürümlenmiş bir yapı olarak yaşar.
Bu spekülatif bir soyutlama değildir. Sağlayıcı kullanımdan kaldırmaları, fiyat değişiklikleri ve bölgesel erişilebilirlik gereksinimleri kendi takvimlerinde gelir; bu sınır her birini bir göç işleminden bir yapılandırma değişikliğine dönüştürür.
Önce Kimlik ve İzinler
Yapay zeka entegrasyonlarındaki en yaygın ciddi kusur, modelin talebi yapan kullanıcının hakkı olmayan veriyi görmesidir.
Bu doğal olarak gerçekleşir. Retrieval katmanı, indeksleme kolay olsun diye her şeyi okuyabilen bir servis hesabıyla kurulur. İzin kontrolü sonra nihai cevaba veya hangi belgelerin kaynak gösterildiğine uygulanır - ki bu çok geçtir; çünkü model içeriği zaten okumuştur ve kaynak göstermeden başka sözcüklerle aktarabilir.
İzin filtrelemesi, son kullanıcıya göre değerlendirilmek üzere retrieval anına aittir. Kullanıcının kimliği tüm zincir boyunca yol almalıdır: istek, retrieval, araç çağrıları ve aşağı akıştaki her servis. Kullanıcı adına hareket eden bir servis hesabı, o kullanıcıdan fazla yetkiye sahip olmamalıdır.
Pratik gereksinim şudur: izin durumu indeksleme anında içerikle birlikte yakalanmalı ve sorgu anında yeniden değerlendirilmelidir; çünkü erişim indekslemeden sonra değişir. Bir kullanıcının erişimi varken indekslenmiş bir belge, erişim geri alındıktan sonra ona görünür kalmamalıdır.
Gözden kaçması kolay iki nokta daha. Erişim kayıtları yalnızca kullanıcının ne sorduğunu değil, modelin ne getirdiğini de kaydetmelidir; çünkü uyum açısından erişim olayı retrieval'ın kendisidir. Ve aynı indeks birden fazla müşteriye hizmet ediyorsa izolasyon, bir hatanın atlayabileceği bir filtre parametresiyle değil yapısal olarak sağlanmalıdır.
Her İki Yönde Veri Yolu
Entegrasyon, nitelikleri farklı iki akış içerir.
İçeri doğru, içeriğin yeteneğe nasıl ulaştığıdır. Bir külliyattan geliyorsa, senkronizasyon stratejisi olan bir ingestion hattı vardır: değişimde anlık, takvimli veya talep üzerine. Her birinin farklı bir bayatlama profili vardır ve seçim, en kolay olan ne ise o değil, bilinçli olmalıdır. Retrieval sistemindeki bayat içerik görünmezdir - sistem eski bir sürümden kendinden emin cevap verir.
İçerik araç çağrılarıyla canlı sistemlerden geliyorsa, dert edilecekler gecikme bütçesi, hız limitleri ve kaynak erişilemez olduğunda ne olacağıdır.
Dışarı doğru, sistemin çıktıyla ne yaptığıdır. Entegrasyonların genellikle yeterince yatırım yapmadığı yer burasıdır. Model metin döndürür; sizin sistemleriniz tipli, doğrulanmış, kısıtlı veri bekler. Aradaki boşluk kodla kapatılmalıdır: şema doğrulaması, iş kuralı kontrolleri ve doğrulamayı geçemeyen çıktı için tanımlı bir yol.
Model çıktısını doğrulamadan asla bir kayıt sistemine yazmayın. Sorun modelin saçmalık üretmesi değildir - tek alanı yanlış, makul ve düzgün biçimlendirilmiş çıktı üretmesidir; bu, üstünkörü incelemeyi geçer ve üç ay sonra bir mutabakatta keşfedilir.
Yetenek Nasıl Çağrılır
Gecikme, entegrasyon kalıbını belirler ve yanlış olanı seçmek geri döndürmesi zor bir karardır.
Senkron, kullanıcı beklerken ve işlem birkaç saniyede tamamlanırken çalışır - satır içi öneri, kısa cevap. Katı bir zaman aşımı ve tanımlı bir bozulma yolu gerektirir; çünkü yavaş bir sağlayıcı isteğinizin thread'ini tutmamalıdır.
Akış (streaming), algılanan gecikmenin toplam süreden önemli olduğu sohbet yüzeylerine uygundur. Hata yönetimini karmaşıklaştırır: akışın ortasındaki bir hata kullanıcıya cevabın bir kısmını zaten göstermiştir ve arayüzün bu durumu ele alması gerekir.
Asenkron, birkaç saniyeden uzun her şey için doğrudur - belge işleme, çok adımlı görevler, toplu sınıflandırma. İstek bir iş oluşturur, bir kimlik döndürür ve sonuç geri çağırma veya yoklama ile gelir. Bu bir iş deposu ve bir durum yüzeyi gerektirir; ekipler bunu genellikle gerçek belgelerde zaman aşımına uğrayan senkron bir sürümü yayınladıktan sonra keşfeder.
Toplu (batch), etkileşimli kullanıcısı olmayan hacimli işlere uyar ve uygulanabildiği yerde genellikle en ucuz seçenektir.
Adı konmayı hak eden hata şudur: prototip kısa girdilerde hızlı olduğu için senkron kurmak, sonra üretim belgeleriyle karşılaşmak. Sonradan asenkrona geçmek API sözleşmesine, arayüze ve hata modeline dokunur.
Hata Davranışı Bir Tasarım Kararıdır
Model sağlayıcılarında kesintiler, hız limitleri ve gecikme sıçramaları olur. Entegrasyonun bunlar sırasındaki davranışı bir ürün kararıdır, uygulama detayı değil.
Yetenek erişilemez olduğunda sistemin ne yapacağına karar verin. Seçenekler: isteği başarısız kılmak, anahtar kelime araması veya kural tabanlı bir cevap gibi yapay zeka dışı bir yola düşmek ya da işi sonraya kuyruklamak. Her biri savunulabilir; tanımsız bırakmak, cevabın HTTP istemcisinin varsayılanı olması demektir.
Yeniden denemeler dikkat ister. Bir üretimi yeniden denemek genellikle güvenlidir; bir eylemi yeniden denemek, idempotentlik anahtarı taşımıyorsa değildir. Bu ayrım gerçek olaylara sebep olur: aslında başarılı olmuş bir istekteki zaman aşımı, yeniden denendiğinde eylemi iki kez üretir.
Hız limitleri, kullanıcının isteğini başarısız kılarak değil geri çekilme ve kuyrukla ele alınmalıdır; limit ayrıca bir kapasite metriği olarak izlenmelidir ki doygunluğu müşterilerden önce siz öğrenin.
Maliyetin bir devre kesicisi olmalıdır. Token başına ücretlendirilen bir API'ye karşı kontrolsüz bir döngü finansal bir olaydır ve standart kontroller - istek başına token tavanı, kullanıcı başına kota ve uyarılı genel günlük tavan - gerekmeden önce eklenmesi ucuz, sonrasında zahmetlidir.
Neyin Gözlemlenebilir Olması Gerekir
Geleneksel izleme size uç noktanın 200 döndürdüğünü söyler. Bu, özelliğin çalıştığını söylemeye yetmez.
Tüm yolu tek bir korelasyon kimliğiyle izleyin ki tek bir tanımlayıcı kullanıcı isteğini, retrieval'ı, model çağrısını, doğrulama sonucunu ve aşağı akıştaki yazma işlemini birbirine bağlasın. Bu olmadan belirli bir şikâyeti ayıklamak, servisler arasında zaman damgalarını elle eşleştirmek demektir.
Her sonucu üreten sürümleri kaydedin: model, prompt, retrieval yapılandırması. Davranış değişiklikleri genellikle birer dağıtımdır ve sürüm damgası olmadan gizem gibi görünürler.
İstek ve özellik başına maliyeti izleyin. Model harcaması, bir finans ekibini çeyrek ortasında şaşırtabilecek şekilde kullanımla ölçeklenen az sayıdaki altyapı maliyetinden biridir.
Yalnızca erişilebilirliği değil kaliteyi ölçün. Kullanıcıya görünen sinyalleri yakalayın - yeniden üretme talepleri, üretilen çıktıya yapılan düzenlemeler, olumsuz oy, insana yükseltme. Bunlar bedavaya gelen gerçek referansa en yakın şeydir ve artan bir oran, yukarı akışta bir şeyin değiştiğinin erken uyarısıdır.
İşin Sıralaması
Yaygın yeniden çalışmayı önleyen bir kurulum sırası.
Tek bir sağlayıcıyı sarmalasa bile dahili arayüzle başlayın. Az miktarda koddur ve geri kalan her şeyin dayandığı sınırdır.
Sonra kimlik akışını kurun - retrieval katmanı inşa edilmeden önce; çünkü izin filtrelemesini onsuz kurulmuş bir indekse sonradan eklemek genellikle indeksi yeniden kurmak demektir.
Herhangi bir kayıt sistemine bağlanmadan önce dışarı doğru yolda doğrulamayı ekleyin ki doğrulanmamış çıktının üretim verisine giden bir yolu hiç olmasın.
Çağırma kalıbını demo girdisine göre değil, gerçekçi en kötü durum girdi boyutuna göre seçin ve şüphe varsa asenkron kurun.
Sonra ölçümleyin ve ancak ondan sonra optimize edin. Prompt ayarı ve model seçimi görünür iyileşmeler üretir ve önce yapmak caziptir, ama sonradan değiştirmesi en ucuz parçalar bunlardır - ve izleme olmadan bir değişikliğin fayda edip etmediğini anlayamazsınız.
Kullanıcının deneyimlediği şey model değil entegrasyondur. Kötü kurulmuş bir yolun arkasındaki yetenekli bir model; yavaş, arada bir yetkisiz ve ayıklanması imkânsız bir özellik üretir. İyi kurulmuş bir yolun arkasındaki mütevazı bir model ise insanların güvenebileceği bir şey üretir.

