İstem sürümleme ve değerlendirme takımı kurmak
İstem sürümleme, istem metnini uygulama kodundan ayırıp değişken şeması ve model ayarlarıyla birlikte tek bir sürümlenebilir dosyaya taşımakla başlar. Her sürüm, üretimden toplanmış sabit bir regresyon kümesinde eski sürümle aynı koşuda çalıştırılır; rapor toplamı değil vaka bazında farkı gösterir ve tek bir gerileme bile birleştirmeyi durdurur. Üretimdeki her yanıt hangi istem sürümüyle üretildiğini iz kaydında taşımalı; böylece geri alma yeni bir dağıtım değil, çalışma zamanında okunan tek bir kimliğin değiştirilmesi olur.
ÖNKOŞULLAR
- Üretimde çalışan en az bir istem ve o istemin ürettiği yanıtlara erişim
- Hangi cevabın doğru sayıldığını yazabilecek bir alan uzmanı
- Kişisel veriden arındırılabilen, gerçek kullanıcı girdilerinden oluşan bir kayıt havuzu
- Değişiklik açıldığında otomatik koşu başlatabilen bir iş hattı ve sürüm kontrol deposu
GEREKEN ARAÇLAR
- Sürüm kontrol sistemi ve değişiklik gözden geçirme akışı
- Yapılandırılmış istem dosyası biçimi (YAML veya JSON) ve bir şablon motoru
- Deterministik denetleyici yazabileceğiniz bir test çatısı
- Koşu sonuçlarını saklayan ve iki koşuyu karşılaştırabilen bir rapor katmanı
- İstek başına istem sürümünü taşıyan bir iz kaydı altyapısı
- Çalışma zamanında okunan bir yapılandırma veya özellik bayrağı deposu
- 01
İstemi koddan çıkar
İstem metnini, değişken şemasını ve model ayarlarını tek bir sürümlenebilir dosyada toplayın; koda gömülü metin ne ayrı gözden geçirilebilir ne de tek başına geri alınabilir.
Kod içine gömülü bir istem üç şeyi imkânsız kılar: değişikliği tek başına gözden geçirmek, hangi sürümün üretimde olduğunu bilmek ve dağıtım yapmadan geri almak. İstem bir yapılandırma nesnesidir; metin, değişken şeması ve model ayarları birlikte durmalı çünkü davranışı üçü birlikte belirler.
yaml kimlik: destek-yanit surum: 7 model: rol: sohbet # somut model adı ortam yapılandırmasından gelir sicaklik: 0 en_fazla_cikti_token: "butce.cikti_payi" degiskenler: musteri_adi: { tip: metin, zorunlu: true } kayit_ozeti: { tip: metin, zorunlu: true } politika_parcalari: { tip: liste, zorunlu: false } cikti_semasi: sema/destek-yanit.json sablon: sablon/destek-yanit.md araclar: [kayit_ara, kuyruga_yonlendir]Bu ayrım gözden geçirmeyi de değiştirir: istem değişikliği artık kod değişikliğinin içinde kaybolmaz, tek başına okunabilir bir fark olarak görünür. Bir cümlenin çıkarılmasıyla bir kuralın eklenmesini ayrı ayrı tartışabilir, ikisini ayrı ayrı geri alabilirsiniz.
- 02
Sürüm kimliğini yanıta iliştir
Her istem sürümüne değişmez bir kimlik verin ve üretimdeki her yanıtın iz kaydı bu kimliği taşısın; şikâyet geldiğinde hangi metnin çalıştığı yalnızca böyle bulunur.
Sürüm kimliği bir sayı değil, davranışı belirleyen her şeyin özetidir. Aynı şablon farklı bir sıcaklıkla ya da farklı bir çıktı şemasıyla çalıştığında ortaya çıkan şey aynı istem değildir; kimlik bunları kapsamazsa iz kaydınız doğru görünen ama yanlış olan bir cevap verir.
- Şablon metninin kendisi
- Model ailesi ve örnekleme ayarları: sıcaklık, çekirdek örnekleme, durdurma dizileri
- Çıktı şeması ve biçim zorlaması
- Modele verilen araç listesi ve araç şemaları
- Varsa örneklerin kümesi ve sırası — sıra da davranışı değiştirir
- 03
Regresyon kümesini üretimden kur
Gerçek kullanıcı girdilerinden sabit bir vaka kümesi toplayın; kolay, sınırda ve daha önce üretimde hata vermiş vakaları birlikte içersin ve kümenin kendisi sürümlensin.
Regresyon kümesi bir kalite ölçeği değil, bir kapıdır: sorduğu soru "bu istem ne kadar iyi" değil, "dün çalışan bir şey bugün bozuldu mu". Bu yüzden küçük, sabit ve gerçek olmalı. Uydurulmuş girdiler kolay vakaları fazla temsil eder ve kapı hiçbir zaman kırmızıya dönmez.
- Gerçek: üretim kaydından alınmış ve kişisel veriden arındırılmış girdiler.
- Kapsayıcı: kolay, sınırda ve daha önce hata vermiş vakalar birlikte bulunsun.
- Sabit: küme sürümlenir; değiştiğinde bu ayrı bir değişiklik olarak gözden geçirilir.
- Ayırt edici: iki istem sürümünün farklı sonuç üretme ihtimali olan vakalar seçilir — hepsinin geçtiği bir küme hiçbir şey ölçmez.
- Dengeli: tek bir müşteri ya da tek bir senaryo kümeyi domine etmemeli.
- 04
Kabul ölçütünü denetleyiciye çevir
Her vaka için makine tarafından kontrol edilebilir bir beklenti yazın; şema doğrulaması, zorunlu alan ve yasak ifade gibi deterministik denetleyiciler önce gelir.
Bir vakanın "geçti" sayılması insan okumasını gerektiriyorsa kapı otomatik çalışamaz, çalışsa bile gözden geçirme ritmine yetişemez. Kabul ölçütü mümkün olduğunca deterministik denetleyicilere çevrilir; model yargıcı en sona, yalnızca deterministik olarak yakalanamayan boyutlar için bırakılır.
Denetleyici Ne yakalar Not Şema doğrulaması Bozuk veya eksik alanlı yapılandırılmış çıktı En ucuz ve en kararlı denetleyici Zorunlu ve yasak ifade Eksik uyarı metni, kaçınılması gereken ifadeler Liste sürümlenir, koda gömülmez Alan eşleşmesi Kategori, kuyruk, karar gibi sonlu değerler Beklenen değer vaka dosyasında yazılı Kaynak gösterme İddianın verilen parçalara dayanması Parça kimliği çıktıda talep edilir Model yargıcı Üslup, kapsam, gerekçenin tutarlılığı Kalibre edilmeden kapıya bağlanmaz - 05
İki sürümü aynı koşuda karşılaştır
Eski ve yeni istemi aynı vakalarla, aynı model ayarlarıyla ve mümkünse aynı rastgelelik tohumuyla koşturup farkı toplam olarak değil vaka bazında raporlayın.
Yeni sürümü tek başına koşturup sonucu hatırladığınız eski sayıyla kıyaslamak karşılaştırma değil temennidir: küme, model ayarları veya sağlayıcı tarafında bu arada değişen bir şey farkı tek başına açıklayabilir. İki sürüm aynı koşuda, aynı koşullarda çalıştırılır.
Eski sürüm Yeni sürüm Anlamı ve yapılacak Geçti Geçti Değişiklik yok; incelemeye gerek yok Kaldı Geçti Kazanç; değişikliğin gerekçesi bu satırlardır Geçti Kaldı Gerileme; kapı kırmızıya döner ve yayın durur Kaldı Kaldı Bilinen sınır; kapsam dışı olarak işaretlenir Farkın gürültüden mi geldiğini bilmek için önce gürültüyü ölçün: aynı istemi aynı vakalarla iki kez koşturun ve sonucu değişen vakaları sayın. Bu sayı sizin taban gürültünüz; yeni sürümün ürettiği fark bunun altındaysa karar vermek için yeterli değildir, küme büyütülmeli ya da denetleyiciler sıkılaştırılmalıdır.
- 06
Değişikliği birleştirme kapısına bağla
İstem dosyası her değiştiğinde regresyon koşusunu otomatik tetikleyin ve gerileme varsa birleştirmeyi engelleyin; kapı gözden geçirenin dikkatine bırakılmaz.
Kapının otomatik olması, insanın rolünü ortadan kaldırmaz; değiştirir. İnsan gerilemeyi fark etmeye çalışmaz — o işi koşu yapar. İnsanın işi, gerilemenin kabul edilebilir olup olmadığına karar vermek ve kararı gerekçesiyle yazmaktır.
- 1Değişiklik açılır
İstem dosyası, şablon veya denetleyici değiştiğinde iş hattı tetiklenir; kod değişmemiş olsa bile.
- 2İki sürüm koşar
Ana daldaki sürüm ile öneri, aynı vaka kümesinde ve aynı ayarlarla çalıştırılır.
- 3Fark raporu düşer
Vaka bazında kazanç ve gerileme listesi, değişikliğin altına yorum olarak eklenir.
- 4Kapı karar verir
Gerileme varsa birleştirme engellenir; istisna ancak gerekçesi yazılarak açıkça verilir.
- 5Kimlik yayımlanır
Birleşen sürüm yeni ve değişmez bir kimlik alır; artık dağıtımdan bağımsız olarak açılabilir.
- Koşu deterministik denetleyicilerde kararlı olmalı: kararsız bir kapı iki hafta içinde görmezden gelinmeye başlar.
- Koşu süresi gözden geçirme ritmine sığmalı; saatler süren bir kapı atlatılır.
- Sağlayıcı arızasında kapı "kırmızı" değil "çalıştırılamadı" demeli — ikisi farklı kararlar gerektirir.
- 07
Yayına kademeli çık
Kapıdan geçen sürümü önce trafiğin küçük bir dilimine verin, aynı ölçütleri canlıda izleyin ve dilimi ancak gerileme görülmezse büyütün.
Çevrimdışı küme üretimin dağılımını hiçbir zaman tam kapsamaz: gerçek kullanıcılar sizin toplamadığınız biçimlerde yazar, yeni senaryolar gelir, girdi uzunluğu dağılımı kayar. Bu yüzden kapıdan geçen bir sürüm doğrudan tüm trafiğe verilmez. Dilimi yeni bir dağıtımla değil, isteğe göre okunan bir sürüm göstergesiyle verin: istek bir anahtara (kullanıcı ya da oturum kimliği) göre eski veya yeni kimliğe yönlendirilir, böylece aynı kullanıcı tur boyunca aynı sürümde kalır. Bir sonraki adım bu göstergeyi geri almanın da anahtarı yapıyor.
- Şema doğrulama hatası oranı — biçim bozulması canlıda en hızlı görünen sinyaldir.
- Kaçış oranı: modelin cevap veremediğini söylediği vakaların payı; ani artış da ani düşüş de incelenir.
- Araç çağrısı hata oranı — istem değişikliği araç kullanımını sessizce bozabilir.
- İnsana devir oranı ve kullanıcı geri bildirimi: gecikmeli ama en güvenilir sinyaller.
- 08
Geri almayı tek anahtara indir
Aktif istem sürümünü çalışma zamanında okunan bir yapılandırma değeri yapın; geri alma yeni bir dağıtım değil, bu değerin eski kimliğe çevrilmesi olsun.
Geri alma bir dağıtım işine dönüşürse, en çok ihtiyaç duyulduğu anda en yavaş yol olur. Aktif sürüm çalışma zamanında okunan bir değer olmalı; böylece dönüş saniyeler sürer ve karar, derleme hattının hızına bağlı kalmaz.
json { "destek-yanit": { "aktif": "7", "dilim": { "8": 0.1 } }, "belge-ozet": { "aktif": "3" } }- Eski sürümler silinmez; geri alınacak hedef her zaman erişilebilir olmalı.
- Geri alma denetim kaydına yazılır: kim, ne zaman, hangi kimliğe döndü.
- Geri almayı düzenli bir tatbikat olarak deneyin; denenmemiş yol gerektiğinde çalışmaz.
- Yanıt önbelleği kullanıyorsanız önbellek anahtarı istem sürüm kimliğini içermeli — içermiyorsa geri aldıktan sonra da eski istemin cevapları servis edilmeye devam eder.
SIK DÜŞÜLEN TUZAKLAR
İstemi üretimde elle düzeltmek
Sıcak düzeltme hiçbir yere kaydedilmez. İki hafta sonra üretimde hangi metnin çalıştığını kimse bilmez ve regresyon kümesi deponuzdaki sürümü ölçerken canlıda başka bir metin çalışır.
Regresyon kümesini istemle birlikte güncellemek
Aynı değişiklikte hem istemi hem kümeyi değiştirmek karşılaştırmayı anlamsız kılar: neyin iyileştiğini değil, ölçüyü nasıl kolaylaştırdığınızı görürsünüz. Küme değişikliği ayrı bir gözden geçirmedir.
Tek bir ortalama puana bakmak
Ortalama yükselirken belirli bir vaka sınıfında gerileme gizlenebilir. Vaka bazında fark raporu olmadan kapı, kaybettiğiniz yerleri size hiç göstermez.
Model ve istemi aynı anda değiştirmek
İki değişken birlikte oynatıldığında farkın hangisinden geldiği ayırt edilemez. Model yükseltmesi ile istem düzenlemesi ayrı sürümler ve ayrı koşularla ilerler.
Sürüm kimliğini yalnızca şablon metnine indirgemek
Sıcaklık, çıktı şeması ve araç listesi de davranışı değiştirir. Kimlik bunları kapsamazsa aynı kimlik iki farklı davranışa işaret eder ve iz kaydı yanlış yere bakmanıza yol açar.
KONTROL LİSTESİ
- İstem metni, değişken şeması ve model ayarları tek dosyada ve sürüm kontrolünde
- Üretimdeki her yanıt iz kaydında istem sürüm kimliğini taşıyor
- Regresyon kümesi gerçek girdilerden kurulmuş ve kendisi sürümlenmiş
- Vakaların çoğunluğu deterministik denetleyiciyle kontrol ediliyor
- Eski ve yeni sürüm aynı koşuda, vaka bazında karşılaştırılıyor
- Taban gürültü ölçüldü ve fark bu tabanla birlikte yorumlanıyor
- Gerileme varsa birleştirme otomatik olarak engelleniyor
- Aktif sürüm çalışma zamanından okunuyor ve geri alma en az bir kez denendi
Maddelerin tamamı işaretlenmeden kurulum üretime alınmamalı.
Sık sorulan sorular
İstemler kod deposunda mı tutulmalı, veritabanında mı?
Karar ölçütü kimin değiştirdiği ve ne hızla değiştiğidir. Kod deposu gözden geçirme, fark okuma ve geri alma verir; veritabanı ya da yönetim arayüzü, teknik olmayan ekiplere hız verir. Yaygın ve çalışan düzen ikisini birleştirir: kaynak dosya depoda ve sürümlenmiş, hangi sürümün aktif olduğu ise çalışma zamanında okunan bir yapılandırma değerinde. Böylece değişiklik denetimden geçer ama açılıp kapanması dağıtım gerektirmez.
İstem değişikliğini kaç örnekle test etmek yeterli?
Sayıdan önce kapsam belirleyicidir: her bilinen başarısızlık sınıfından en az birkaç vaka bulunmalı, aksi hâlde büyük bir küme bile gerilemeyi kaçırır. Kümenin yeterli olup olmadığını ölçmenin pratik yolu taban gürültüyü bulmaktır — aynı istemi iki kez koşturun ve sonucu değişen vaka sayısına bakın. Yeni sürümün ürettiği fark bu gürültünün altında kalıyorsa küme kararı taşıyamıyor demektir; vaka eklemek ya da denetleyicileri deterministik hâle getirmek gerekir.
İstem değerlendirmesi için model yargıcı şart mı?
Hayır, ve başlangıç için önerilmez. Vakaların büyük bölümü şema doğrulaması, zorunlu alan kontrolü, sonlu değer eşleşmesi ve yasak ifade taramasıyla deterministik biçimde denetlenebilir; bunlar hem ucuz hem kararlıdır. Model yargıcı yalnızca üslup, kapsam ve gerekçe tutarlılığı gibi deterministik olarak yakalanamayan boyutlar için gerekir ve kapıya bağlanmadan önce insan etiketleriyle kalibre edilmelidir.
Yeni istem çevrimdışı testte iyi, canlıda kötü çıkarsa ne yapmalı?
Önce geri alın, sonra anlamaya çalışın: canlıda hata üretirken teşhis yapmak hem yavaş hem pahalıdır. Ardından canlıda başarısız olan gerçek girdileri toplayıp regresyon kümesine ekleyin — bu vakalar kümenizin kapsamadığı dağılımın haritasıdır. Fark genellikle girdi dağılımından gelir: gerçek kullanıcılar daha uzun, daha dağınık ya da beklenmedik dilde yazar. Kümeyi bu vakalarla güncelledikten sonra aynı değişikliği yeniden deneyin.
Kaynaklar
- 01Model sağlayıcılarının istem tasarımı ve değerlendirme dokümantasyonları — Model sağlayıcıları · Dokümantasyon
- 02Sürüm kontrolü ve sürekli tümleştirme araçlarının dokümantasyonları — Açık kaynak araç projeleri · Dokümantasyon
- 03Sinaptik Research — istem sürümleme ve regresyon kapısı uygulama notları — Sinaptik Lab · Teknik rapor
BUILD
Bu rehberi kurumunuzda uygulayalım mı?
Aynı mimariyi kendi verinizle kurmak için discovery oturumundan üretime kadar birlikte ilerliyoruz.
