Menguji AI nondeterministik di Power Apps (tidak digunakan lagi)

Note

Mesin Uji tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Gunakan sampel Power Platform Playwright untuk kemampuan otomatisasi pengujian di Power Platform dan layanan Dynamics 365.

Menguji aplikasi bertenaga AI memperkenalkan tantangan unik karena output AI dapat bervariasi antar eksekusi, bahkan dengan input yang identik. Perilaku nondeterministik ini membutuhkan pendekatan pengujian khusus. Panduan ini menjelaskan cara memvalidasi komponen AI dalam aplikasi Anda Power Platform secara efektif.

Memahami keluaran yang tidak deterministik

Pengujian tradisional bergantung pada input deterministik yang menghasilkan output yang konsisten. Namun, sistem AI sering menghasilkan hasil yang sedikit berbeda setiap kali karena:

  • Pengaturan suhu model dan metode pengambilan sampel
  • Memilih versi model yang berbeda
  • Variasi kecil dalam pemrosesan bahasa alami
  • Skor kepercayaan yang berfluktuasi dalam kisaran normal
  • Penalaran tergantung konteks yang mungkin mengambil jalur yang berbeda

Strategi untuk menguji AI nondeterministik

Power Apps Test Engine menyediakan beberapa strategi untuk menguji komponen bertenaga AI secara efektif:

Menggunakan fungsi Preview.AIExecutePrompt

Fungsi Preview.AIExecutePrompt memungkinkan eksekusi perintah AI yang terkontrol dalam pengujian Anda. Contoh berikut menunjukkan cara menggunakannya:

Response: ParseJSON(
  Preview.AIExecutePrompt("CustomPrompt",
  {
    Context: "You are a helpful assistant.",
    Question: "What is the capital of France?"
  }).Text)

Pendekatan ini memungkinkan Anda untuk:

  • Jalankan perintah dengan input terkontrol
  • Mengurai dan memvalidasi respons terstruktur
  • Membandingkan hasil dengan nilai yang diharapkan

Menerapkan validasi berbasis toleransi

Alih-alih mengharapkan kecocokan persis, verifikasi bahwa output memenuhi kriteria dalam ambang batas yang dapat diterima. Kode berikut adalah contohnya:

// Validate that the sentiment score is within appropriate range
Assert(Response.SentimentScore >= 0.7, "Sentiment score should be positive")

Uji fungsionalitas utama daripada output yang persis

Uji fokus untuk memvalidasi bahwa komponen AI memenuhi tujuan pentingnya seperti yang ditunjukkan dalam contoh berikut:

// Check that the classification happens (not the exact classification)
Assert(
  Response.Category = "Positive" || 
  Response.Category = "Neutral" || 
  Response.Category = "Negative", 
  "Response should include a valid sentiment category"
)

Gunakan validasi struktural untuk output yang kompleks

Untuk respons AI yang kompleks, validasi struktur respons daripada konten tertentu seperti yang ditunjukkan dalam contoh berikut:

// Verify all expected fields exist in the response
Assert(!IsBlank(Response.Rating), "Rating should be present")
Assert(!IsBlank(Response.Explanation), "Explanation should be present")
Assert(!IsBlank(Response.NextSteps), "Next steps should be present")

Menggunakan Preview.AIExecutePrompt

Test Engine menyediakan fungsi Preview.AIExecutePrompt khusus untuk menguji interaksi AI.

Tanda tangan fungsi

Preview.AIExecutePrompt(
  PromptName: Text, 
  PromptContext: Record
): Record

Parameters

  • PromptName: Nama templat prompt yang akan digunakan
  • PromptContext: Data konteks untuk perintah, biasanya berisi:
    • Konteks atau pesan sistem
    • Pertanyaan atau masukan pengguna
    • Parameter lain yang mungkin untuk model

Nilai yang dihasilkan

Catatan yang berisi:

  • Teks: Teks respons mentah
  • Properti lain bergantung pada templat dan model perintah

Mengaktifkan fungsi

Untuk menggunakan fungsi ini, aktifkan modul fungsi AI di pengaturan pengujian Anda:

testSettings:
  extensionModules:
    enable: true
    parameters:
      enableAIFunctions: true

Contoh: Menguji komponen analisis sentimen

Contoh berikut menunjukkan pengujian fitur analisis sentimen yang didukung AI:

EvaluateSentimentPrompt(Input: Text): TestResult =
  With({
    Response: ParseJSON(
      Preview.AIExecutePrompt("SentimentAnalyzer",
      {
        Text: Input
      }).Text)
  },
  {
    Result: Response.Sentiment,
    Score: Response.ConfidenceScore,
    IsPositive: Response.Sentiment = "Positive" && Response.ConfidenceScore > 0.7,
    IsValid: !IsBlank(Response.Sentiment) && !IsBlank(Response.ConfidenceScore)
  })

Contoh: Penilaian Kecerdasan Buatan

Contoh berikut menunjukkan penggunaan Preview.AIExecutePrompt untuk menguji sistem peringkat bertenaga AI:

EvaluateTestQuestionPrompt(Prompt: TestQuestion): TestResult =
  With({
    Response: ParseJSON(
      Preview.AIExecutePrompt("PromptEvaluator",
      {
        Context: "You are a helpful agent asking about external customer service questions.",
        Question: Prompt.Question
      }).Text)
  },If(
    IsError(AssertNotError(Prompt.ExpectedRating=Response.Rating, Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating)),
    {PassFail: 1, Summary: Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating}, 
    {PassFail: 0, Summary: "Pass " & Prompt.Question}
  ))

Anda dapat menjelajahi implementasi lengkap dalam sampel AI Prompt.

Praktik terbaik untuk pengujian komponen AI

Untuk membuat pengujian yang efektif untuk komponen yang didukung AI:

  • Tentukan rentang yang dapat diterima alih-alih nilai yang tepat untuk output numerik
  • Buat pembatas pengaman untuk memverifikasi output memenuhi persyaratan struktural
  • Uji dengan berbagai input, termasuk kasus tepi dan kondisi batas
  • Sertakan kasus pengujian negatif untuk memastikan AI menangani input yang tidak valid dengan tepat
  • Segmentasikan pengujian Anda berdasarkan fungsionalitas, bukan konten tertentu
  • Gunakan toleransi yang sesuai berdasarkan kekritisan komponen

Pola umum untuk pengujian AI

Contoh berikut mengilustrasikan pendekatan umum untuk menguji fitur bertenaga AI dalam Power Platform aplikasi. Pola ini membantu Anda memvalidasi klasifikasi konten, kondisi batas, dan skenario lain di mana output AI mungkin bervariasi.

Pengujian klasifikasi konten

// Test that a content classifier produces valid categories
ClassifyContent(Text: Text): Record = 
  With({
    Result: ParseJSON(Preview.AIExecutePrompt("Classifier", { Content: Text }).Text)
  },
  Assert(
    Result.Category In ["News", "Opinion", "Advertisement"], 
    "Content should be classified into valid category"
  ))

Pengujian batas

// Test AI Builder form processing with edge cases
TestFormProcessing(FormType: Text): TestResult =
  With({
    Result: ParseJSON(Preview.AIExecutePrompt("FormProcessor", { FormType: FormType }).Text)
  },
  Assert(
    !IsBlank(Result.Fields),
    "Form processing should extract fields even with poor quality input"
  ))

Pelajari fungsi pengujian Power Fx
Jelajahi penulisan pengujian berbantuan AI
Memahami Model Context Protocol
Jelajahi katalog sampel Test Engine