Share via


LUIS DevOps için test etme

Önemli

LUIS 1 Ekim 2025'te kullanımdan kaldırılacak ve 1 Nisan 2023'den itibaren yeni LUIS kaynakları oluşturamayacaksınız. Devam eden ürün desteği ve çok dilli özelliklerden yararlanmak için LUIS uygulamalarınızıkonuşma dili anlayışına geçirmenizi öneririz.

Language Understanding (LUIS) uygulaması geliştiren yazılım mühendisleri, bu yönergeleri izleyerek kaynak denetimi, otomatik derlemeler, test ve sürüm yönetimi konusunda DevOps uygulamaları uygulayabilir.

Çevik yazılım geliştirme metodolojilerinde test, kaliteli yazılımların oluşturulmasında ayrılmaz bir rol oynar. Bir LUIS uygulamasında yapılan her önemli değişiklik, geliştiricinin uygulamada oluşturduğu yeni işlevselliği test etmek için tasarlanmış testlere eşlik etmelidir. Bu testler, LUIS uygulamanızın kaynağıyla .lu birlikte kaynak kod deponuzda denetleniyor. Uygulama testleri karşıladığında değişikliğin uygulanması tamamlanır.

Testler CI/CD iş akışlarının kritik bir parçasıdır. Bir LUIS uygulamasında yapılan değişiklikler çekme isteğinde (PR) önerildiğinde veya değişiklikler ana dalınızla birleştirildikten sonra CI iş akışları, güncelleştirmelerin herhangi bir regresyona neden olmadığını doğrulamak için testleri çalıştırmalıdır.

Birim testi ve Batch testi yapma

Bir LUIS uygulaması için sürekli tümleştirme iş akışlarında gerçekleştirmeniz gereken iki farklı test türü vardır:

  • Birim testleri - LUIS uygulamanızın temel işlevselliğini doğrulayan nispeten basit testler. Birim testi, belirli bir test ifadesi için beklenen amaç ve beklenen varlıklar döndürüldüğünde geçer. Test çalıştırmasının başarıyla tamamlanması için tüm birim testlerinin geçmesi gerekir.
    Bu tür testler, LUIS portalında yapabileceğiniz Etkileşimli testlere benzer.

  • Toplu testler - Toplu test, geçerli eğitilmiş modelinizin performansını ölçmeye yönelik kapsamlı bir testtir. Birim testlerinin aksine toplu test başarılı|başarısız test değildir. Toplu test beklentisi, her testin beklenen amacı ve beklenen varlıkları döndürmemesidir. Bunun yerine toplu test, uygulamanızdaki her amacın ve varlığın doğruluğunu görüntülemenize yardımcı olur ve geliştirmeler yaparken zaman içinde karşılaştırma yapmanıza yardımcı olur.
    Bu tür testler, LUIS portalında etkileşimli olarak gerçekleştirebileceğiniz Batch testiyle aynıdır.

Projenizin başından itibaren birim testi kullanabilirsiniz. Toplu test, yalnızca LUIS uygulamanızın şemasını geliştirdikten ve doğruluğunu geliştirmeye çalıştıktan sonra değerlidir.

Hem birim testleri hem de toplu testlerde, test konuşmalarınızın eğitim konuşmalarınızdan ayrı tutulduğundan emin olun. Eğittiğiniz verilerin aynısını test ederseniz, uygulamanızın test verilerine fazla uygun olduğunda iyi performans sergilediğini yanlış bir izlenimle karşılarsınız. Genelleştirmenin ne kadar iyi olduğunu test etmek için testlerin model tarafından görünmemiş olması gerekir.

Test yazma

Bir test kümesi yazarken, her test için şunları tanımlamanız gerekir:

  • Konuşmayı test et
  • Beklenen amaç
  • Beklenen varlıklar.

JSON biçimli bir dosyada bir grup test tanımlamak için LUIS toplu iş dosyası söz dizimini kullanın. Örneğin:

[
  {
    "text": "example utterance goes here",
    "intent": "intent name goes here",
    "entities":
    [
        {
            "entity": "entity name 1 goes here",
            "startPos": 14,
            "endPos": 23
        },
        {
            "entity": "entity name 2 goes here",
            "startPos": 14,
            "endPos": 23
        }
    ]
  }
]

NLU gibi bazı test araçları. DevOps ayrıca LUDown biçimli test dosyalarını da destekler.

Birim testleri tasarlama

Birim testleri, LUIS uygulamanızın temel işlevlerini test etmek için tasarlanmalıdır. Uygulama geliştirmenizin her yinelemesinde veya sprint'te, bu yinelemede uyguladığınız temel işlevselliğin düzgün çalıştığını doğrulamak için yeterli sayıda test yazmanız gerekir.

Her birim testinde, belirli bir test konuşmasında şunları yapabilirsiniz:

  • Doğru amacın döndürüldüğünü test edin
  • Çözümünüz için kritik olan 'anahtar' varlıklarının döndürüldüğünü test edin.
  • Amaç ve varlıklar için tahmin puanının tanımladığınız eşiği aştığını test edin. Örneğin, yalnızca amaç ve anahtar varlıklarınız için tahmin puanı 0,75'i aşarsa testin geçtiğini düşünebilirsiniz.

Birim testlerinde, anahtar varlıklarınızın tahmin yanıtında döndürüldüğünü test etmek, ancak hatalı pozitif sonuçları yoksaymak iyi bir fikirdir. Hatalı pozitifler , tahmin yanıtında bulunan ancak testiniz için beklenen sonuçlarda tanımlanmayan varlıklardır. Hatalı pozitif sonuçları yoksayarak birim testleri yazmayı daha az kolaylaştırırken, çözümünüz için önemli olan verilerin bir tahmin yanıtında döndürüldüğünü test etmeye odaklanmanıza da olanak tanır.

İpucu

NLU. DevOps aracı tüm LUIS test ihtiyaçlarınızı destekler. compare Birim testi modunda kullanıldığında komutu tüm testlerin geçtiğini onaylar ve beklenen sonuçlarda etiketlenmemiş varlıklar için hatalı pozitif sonuçları yoksayar.

Batch testleri tasarlama

Toplu test kümeleri, LUIS uygulamanızdaki tüm amaçlar ve tüm varlıklar arasında test etmek için tasarlanmış çok sayıda test çalışması içermelidir. Toplu test kümesi tanımlama hakkında bilgi için bkz . LUIS portalında Batch testi.

Testleri çalıştırma

LUIS portalı, etkileşimli testlere yardımcı olacak özellikler sunar:

  • Etkileşimli test , örnek bir konuşma göndermenize ve LUIS tarafından tanınan amaçlarla varlıkların yanıtını almanıza olanak tanır. Görsel inceleme ile testin başarısını doğrularsınız.

  • Toplu test , tahmin doğruluğunu ölçmek üzere etkin eğitilmiş sürümünüzü doğrulamak için giriş olarak bir toplu test dosyası kullanır. Toplu test, etkin sürümünüzdeki her amacın ve varlığın doğruluğunu görüntülemenize ve sonuçları bir grafikle görüntülemenize yardımcı olur.

Testleri otomatik derleme iş akışında çalıştırma

LUIS portalındaki etkileşimli test özellikleri kullanışlıdır, ancak DevOps için CI/CD iş akışında gerçekleştirilen otomatikleştirilmiş test belirli gereksinimleri getirir:

  • Test araçlarının derleme sunucusundaki bir iş akışı adımında çalıştırılması gerekir. Bu, araçların komut satırında çalıştırılabilmesi gerektiği anlamına gelir.
  • Test araçlarının bir uç noktada bir grup test yürütebilmesi ve beklenen sonuçları gerçek sonuçlara göre otomatik olarak doğrulayabilmesi gerekir.
  • Testler başarısız olursa, test araçlarının iş akışını durdurmak ve "derlemeyi başarısız yapmak" için bir durum kodu döndürmesi gerekir.

LUIS, bu özellikleri sunan bir komut satırı aracı veya üst düzey BIR API sunmaz. NLU kullanmanızı öneririz. Hem komut satırında hem de CI/CD iş akışında otomatik test sırasında testleri çalıştırmak ve sonuçları doğrulamak için DevOps aracı.

LUIS portalında kullanılabilen test özellikleri, yayımlanmış bir uç nokta gerektirmez ve LUIS yazma özelliklerinin bir parçasıdır. Testi otomatik derleme iş akışında uygularken, test edilecek LUIS uygulama sürümünü NLU gibi test araçlarının bir uç noktada yayımlamanız gerekir. DevOps, test kapsamında tahmin istekleri gönderebilir.

İpucu

  • Kendi test çözümünüzü uyguluyor ve uç noktaya test konuşmaları göndermek için kod yazıyorsanız, LUIS yazma anahtarını kullanıyorsanız izin verilen işlem hızının 5TPS ile sınırlı olduğunu unutmayın. Bunun yerine, gönderme hızını kısıtlar veya bir tahmin anahtarı kullanırsınız.
  • Bir uç noktaya test sorguları gönderirken tahmin isteğinizin sorgu dizesinde kullanmayı log=false unutmayın. Bu, test konuşmalarınızın LUIS tarafından günlüğe kaydedilmemesini ve LUIS etkin öğrenme özelliği tarafından sunulan uç nokta konuşmaları gözden geçirme listesine eklenmesini ve sonuç olarak yanlışlıkla uygulamanızın eğitim konuşmalarına eklenmesini sağlar.

Birim testlerini komut satırında ve CI/CD iş akışlarında çalıştırma

NLU kullanabilirsiniz . Komut satırında testleri çalıştırmak için DevOps paketi:

  • NLU kullanın. Bir test dosyasından uç noktaya test göndermek ve gerçek tahmin sonuçlarını bir dosyada yakalamak için DevOps test komutu .
  • NLU kullanın. Gerçek sonuçları giriş test dosyasında tanımlanan beklenen sonuçlarla karşılaştırmak için DevOps compare komutu . komutu compare NUnit test çıkışı oluşturur ve bayrağı kullanılarak birim test modunda kullanıldığında tüm testlerin --unit-test geçtiğini onaylar.

Komut satırında ve CI/CD iş akışlarında Batch testleri çalıştırma

NLU'ları da kullanabilirsiniz. Komut satırında toplu iş testleri çalıştırmak için DevOps paketi.

  • NLU kullanın. Test dosyasından uç noktaya test göndermek ve birim testlerinde olduğu gibi gerçek tahmin sonuçlarını bir dosyada yakalamak için DevOps test komutu .
  • NLU kullanın. DevOps, uygulamanızın performansını ölçmek için Performans testi modunda komutunu karşılaştırır Uygulamanızın performansını temel performans karşılaştırması ile karşılaştırabilirsiniz; örneğin, en son işlemeden ana sürüme veya geçerli sürüme kadar olan sonuçlar. Performans testi modunda komut, compare JSON biçiminde NUnit test çıkışı ve toplu test sonuçları oluşturur.

LUIS belirlenimci olmayan eğitim ve test üzerindeki etkisi

LUIS, amaç gibi bir modeli eğitirken hem pozitif verilere ( modelin uygulamasını eğitmek için sağladığınız etiketli eğitim konuşmalarına hem de negatif verilere) ve bu modelin kullanımına ilişkin geçerli bir örnek olmayan verilere ihtiyaç duyar. Luis, eğitim sırasında diğer modeller için sağladığınız tüm pozitif verilerden bir modelin negatif verilerini oluşturur, ancak bazı durumlarda veri dengesizliği oluşturabilir. Luis, bu dengesizliği önlemek için negatif verilerin bir alt kümesini belirlenimci olmayan bir şekilde örnekleyip daha iyi dengeli bir eğitim kümesi, geliştirilmiş model performansı ve daha hızlı eğitim süresi için iyileştirmeler yaptı.

Bu belirlenimci olmayan eğitimin sonucu, genellikle tahmin puanının yüksek olmadığı amaçlar ve/veya varlıklar için farklı eğitim oturumları arasında biraz farklı bir tahmin yanıtı almanızdır.

Test amacıyla oluşturduğunuz LUIS uygulaması sürümleri için belirlenimci olmayan eğitimi devre dışı bırakmak istiyorsanız, sürüm ayarları API'sini UseAllTrainingData ayarı olarak ayarlanmış şekilde truekullanın.

Sonraki adımlar