Otomasyon QAKıdemli Otomasyon QA Mühendisi

Büyük Dil Modelleri tarafından oluşturulan çıktılardan yapılandırılmış iddiaları çıkararak, bunları kesin bilgi grafiklerine karşı doğrulayan bir doğrulama mimarisi oluşturun.

Hintsage yapay zeka asistanı ile mülakatları geçin

Sorunun cevabı

Sorunun geçmişi

2023-2024 döneminde üretim sistemlerinde Büyük Dil Modellerinin yaygınlaşması, geleneksel test otomasyon paradigmalarında önemli boşluklar ortaya çıkardı. İlk kullanıcılar, LLM çıktıları üzerinde kesin dize eşleşmesi veya Selenium tabanlı doğrulamalar uygulamaya çalıştılar; bu, modellerin içsel değişkenliği ve yeniden ifade yetenekleri nedeniyle felaketle sonuçlandı. Bu durum, Kalite Güvencesi ekiplerinin anlamsal doğruluğun sözdizimsel eşdeğerlikten daha önemli olduğunu kabul etmeleriyle bir paradigma değişikliğine yol açtı. Bu soru, regüle endüstrilerdeki (sağlık , finans gibi) gerçek veri doğruluğunun yasal olarak zorunlu olduğu durumlarda, deterministik CI/CD boru hatları içinde, belirsiz üreteç sistemlerinin doğrulanması ihtiyacından doğdu.

Problem

Büyük Dil Modelleri, belirli istemlerle semantik olarak eşdeğer ancak metin olarak farklı çıktılar oluşturur; bu, olasılıksal çıktılar anlamına gelir. Bu belirsizlik, öngörülebilir çıktılar gerektiren geleneksel doğrulama tabanlı test çerçevelerini bozar. Dahası, halüsinasyonlar – gerçekte doğru olmayan ifadelerin gerçek olarak sunulması – genellikle sözdizimsel olarak tutarlı ve bağlamsal olarak makul göründükleri için tespit edilmesi zorluğunu ortaya çıkarır. Standart pixel-perfect veya kesin eşleşme doğrulama stratejileri, kabul edilebilir yeniden ifade ile tehlikeli yanlış uydurmalar arasında ayrım yapamaz. Bu nedenle otomasyon, anlamsal anlamı anlamalı, yapılandırılmamış metinden yapılandırılmış iddiaları çıkarabilmeli ve bunları yerel gerçek bilgi tabanlarıyla doğrularken, dağıtım kapıları için gereken idempotent, tekrarlanabilir yürütmeyi sağlamalıdır.

Çözüm

Sembolik çıkarımı ve sinirsel değerlendirmeyi birleştiren bir hiper doğrulama çerçevesi tasarlayın. İlk olarak, test çalışmaları arasında deterministik yürütmeyi sağlamak için temperature=0 uygulaması ve Redis kullanarak anlamsal önbellekleme gerçekleştirin. İkincisi, LLM çıktılarından gerçek üçlüleri çıkarmak için spaCy veya BERT modellerini kullanarak Adlandırılmış Varlık Tanıma (NER) uygulayın. Üçüncüsü, bu çıkarılan iddiaları gerçeği içeren yapılandırılmış bir bilgi grafiği (örneğin, Neo4j) ile doğrulamak için sayısal değerler için toleransa dayalı karşılaştırma ve kategorik veriler için kesin eşleşme kullanın. Dördüncü olarak, öznel kalite değerlendirmeleri için JSON şema kısıtlamaları ile bir LLM-yargıç yedeği uygulayın. Son olarak, modeli kayma ile kod regresyonları arasında izole etmek için yeniden deneme mantığı ve ayrıntılı telemetri ile pytest ögeleri içinde bu boru hattını sarın.

import pytest import spacy from knowledge_graph import verify_claim # varsayımsal KG istemcisi nlp = spacy.load("en_core_web_sm") def extract_claims(text): doc = nlp(text) claims = [] for ent in doc.ents: if ent.label_ in ["MONEY", "PERCENT"]: claims.append({"type": ent.label_, "value": ent.text, "context": ent.sent.text}) return claims def test_llm_hallucination(): prompt = "Premium Tasarruf için APY nedir?" response = llm_client.generate(prompt, temperature=0.0) claims = extract_claims(response) for claim in claims: if claim["type"] == "PERCENT": is_valid = verify_claim( product="Premium Tasarruf", attribute="APY", value=claim["value"], tolerance=0.1 ) assert is_valid, f"Halüsinasyon tespit edildi: {claim['value']}"

Hayattan bir durum

Orta ölçekli bir fintech şirketi, kredi ürünleri ve faiz oranları hakkında soruları yanıtlamak için RAG tabanlı bir müşteri destek chatbotu geliştirdi. Beta testleri sırasında, LLM "Altın Kredinin APR'si nedir?" sorusuna bir örnekte "%5.5" diyerek doğru bir yanıt verdi, ancak diğer bir örnekte, bilgi tabanının 700+ kredi notu gereksinimini açık bir şekilde belirttiği halde "kreditsiz %4.9" uydurdu. Geleneksel API sözleşme testleri, uç nokta kullanılabilirliğini doğruladı, ancak üretilen finansal tavsiyelerin anlamsal doğruluğunu doğrulama mekanizması yoktu. Ekip, modelin resmi ürün veri tabanında bulunmayan faiz oranları veya şartlar oluşturması durumunda dağıtımı engelleyen otomatik bir kapıya ihtiyaç duyuyordu.

Çözüm 1: Anahtar kelime tabanlı doğrulama ile regex

Ekip, başlangıçta dolar miktarlarını ve yüzdeleri çıkarmak için Python regex desenleri uyguladı ve ardından bu değerlerin ürün kataloğunda herhangi bir yerde bulunup bulunmadığını kontrol etti.

Artılar: re modülünü kullanarak uygulanabilirliği basit, 100ms altında hızlı yürütme ve deterministik davranış.

Eksiler: Yaklaşım yüksek yanlış pozitif oranlarından muzdaripti - geçerli yanıtları flama olarak işaretliyordu, çünkü belirli bir dizgi standart oran tablosunda yer almıyordu. Ayrıca, onaylı rakamlarla yanlış bağlamlarda (örneğin, bir kredi kartı ürünü için ipotekteki oranı belirtmek) halüsinasyonları yakalayamadı.

Çözüm 2: Onaylı belgelerle gömme benzerliği

OpenAI gömme kullanarak LLM yanıtı ile resmi ürün belgelerinin vektörleştirilmiş sürümleri arasında kosinüs benzerliği hesapladılar. Benzerlik 0.85'i aştığında testler geçti.

Artılar: Yeniden ifade ve eşanlamlı kullanım için sağlam, düşük bakım yükü ve dizgi eşleşmesinden daha iyi anlamsal nüansı yakaladı.

Eksiler: Sayısal halüsinasyonlar tespit edilemedi çünkü "%5.5 APR" ve "%4.9 APR" maddi olarak farklı finansal terimleri temsil etmesine rağmen neredeyse özdeş gömme değerlerine sahipti. Gömme hesaplamalarının belirsiz doğası da CI/CD'de hatalı testler getirdi.

Çözüm 3: Bilgi grafiği doğrulaması ile yapılandırılmış iddia çıkarımı (Seçilen)

Ekip, varlıkların ve ilişkilerin çıkarıldığı bir spaCy boru hattı uyguladı ve ardından her bir iddiayı yerel gerçekliğe karşı doğrulamak için Neo4j bilgi grafiğini sorguladı. Sayısal iddialar için tolerans aralıkları (±0.01%), kategorik veriler kesin eşleşmeler gerektiriyordu.

Artılar: Alan düzeyinde gerçek hata tespitinde hassasiyet, dilsel varyasyona bağışıklık ve dağıtım kapıları için uygun deterministik yürütme. Sistem, "%2.5 APY" (doğru) ile "%2.4 APY" (halüsinasyon) arasında ayrım yapabildi ve gömme benzerliği bunu yapamadı.

Eksiler: NER modelinin ve bilgi grafiği şemasının bakımını gerektiren yüksek başlangıç maliyeti ile doğru veri tabanının sürekli olarak düzenlenmesi gerekti.

Ekip, finansal düzenlemelerin reklam edilen oranlarda mutlak hassasiyet gerektirmesi nedeniyle Çözüm 3'ü seçti. Seçilen mimari, belirsizlikleri ortadan kaldırmak için temperature=0 ve Redis önbellekleme kullandı, ayrıca LLM-yargıç sadece belirsiz niteliksel değerlendirmeler için kullanıldı.

Sonuç olarak, üretime geçme oranında %94'lük bir azalma ve gerçek hata üreten dağıtımları otomatik olarak engelleyebilen bir CI/CD boru hattı elde edildi. Yanlış pozitif oranı %35'ten (anahtar kelime eşleşmesi ile) %2'ye düştü, test yürütme süresi ise bilgi grafiği sorgularının agresif önbelleklemesi ile her bir konuşma dönüşü için 3 saniye altında kaldı.

Adayların genellikle kaçırdığı noktalar

Temperature sıfırda ayarlandığında LLM çıktılarındaki belirsizlikleri nasıl ele alıyorsunuz, ancak farklı GPU mimarileri arasındaki donanım düzeyi kayan nokta varyasyonları hala token olasılık dağılımlarının farklılaşmasına neden oluyor?

Temperature=0'da bile, CUDA optimizasyonları ve GPU sürücü farklılıkları, nadir olasılık karar sınırlarında bilgilendirme nedeniyle yumuşak maksimum hesaplamalarında sonsuz değişikliklere neden olabilir. Deterministik CI/CD yürütmesini sağlamak için, önbellekli yanıtları SHA-256 özetleriyle anahtarlamak için Redis kullanarak anlamsal önbellekleme uygulayın. İlk yürütme modeli çağırır ve yanıtı önbelleğe alır; ardışık benzer istemler, önbellekteki değeri döndürür. Alternatif olarak, karşılaştırmadan önce çıktıları lemmatize ederek ve varlıkları kanonik kimliklerle değiştirerek yanıt kanonizasyonu kullanın. Yüksek riskli testler için, öz tutarlılık oylaması uygulayın: istemi beş kez yürütün, yanıtları anlamsal benzerliğe göre kümeleyin ve bu test oturumu için kanonik gerçek olarak çoğunluk kümesini kabul edin.

Birincil LLM'nin çıktısını değerlendirmek için ikincil bir LLM kullanmak (LLM-yargıç), otomatik testlerde neden sorun yaratar ve değerlendirici tutarsızlık risklerini nasıl azaltırsınız?

Bir LLM'yi değerlendirici olarak kullanmak, ürün hataları yerine değerlendiricinin halüsinasyonlarından kaynaklanan meta-flakiness yaratır. Değerlendirici, testler arasında kriterleri tutarsız bir şekilde uygulayabilir veya değerlendirme rubriklerini halüsinasyona uğratabilir, bu da her iki sistemin birlikte halüsinasyona girmesiyle döngüsel bir bağımlılık yaratır. Bunu azaltmak için, değerlendiriciyi JSON şemaları veya işlev çağrıları kullanarak yapılandırılmış çıktı ile sınırlayın, böylece açık uçlu düşünme yerine boolean veya kategorik yanıtlar zorlayın. Açıkça tanımlanmış, versiyon kontrolü yapılmış rubriklere dayalı değerlendirmeleri temellendirin. Değerlendirici modelini, sağlayıcılar ağırlıklarını güncellediğinde kayma olmasını önlemek için sürüm kilitleyin ve sürekli olarak değerlendirici doğruluğunu izlemek için insan tarafından doğrulanan değerlendirmelerin bir "altın veri seti"ni saklayın.

Halüsinasyon (LLM'nin gerçekleri icat etmesi) ile eski bağlam (RAG sisteminin tarihi belgeleri geri getirmesi) arasındaki ayrımı nasıl yaparsınız ve bu ayrım test otomasyonu açısından neden önemlidir?

Adaylar genellikle üretim doğrulaması ile geri alma doğrulamasını karıştırır. Eğer RAG boru hattı, "APR %5" diyen 2022 tarihli bir belge geri getirirken, 2024 gerçekliği "%6" ise, LLM'nin "%5" demesi halüsinasyon değil, kötü veriyi doğru bir biçimde kullanmasıdır. Otomasyon, ilk olarak geri alınan belgeleri gerçek doğruluk kaynağına karşı doğrulamak, ardından LLM'nin sağlanan bağlama uyumunu doğrulamak için boru hattı sınırını test etmelidir. Her iddia için LLM'yi kaynak belge kimliklerini belirtmeye teşvik ederek attribution testing uygulayın, ardından bu kimliklerin geri alma setinde mevcut olduğunu ve iddia edilen gerçeği içerdiğini doğrulayın. Bu, hataların geri alma bozulmasından mı yoksa üretim halüsinasyonundan mı kaynaklandığını izole eder ve kesin düzeltme sağlar.