Kongsi melalui


Menguji AI bukan deterministik dalam Power Apps (pratonton)

Nota

Ciri pratonton bukan untuk kegunaan pengeluaran dan kefungsian mungkin terbatas. Ciri ini tersedia sebelum keluaran rasmi agar pelanggan boleh mendapat akses awal dan memberikan maklum balas.

Menguji aplikasi berkuasa AI memperkenalkan cabaran unik kerana output AI boleh berbeza-beza antara larian, walaupun dengan input yang sama. Tingkah laku bukan deterministik ini memerlukan pendekatan ujian khas. Panduan ini menerangkan cara mengesahkan komponen AI dalam aplikasi anda Power Platform dengan berkesan.

Memahami output bukan deterministik

Ujian tradisional bergantung pada input deterministik yang menghasilkan output yang konsisten. Walau bagaimanapun, sistem AI selalunya menghasilkan hasil yang sedikit berbeza setiap kali kerana:

  • Tetapan suhu model dan kaedah pensampelan
  • Memilih versi model yang berbeza
  • Variasi kecil dalam pemprosesan bahasa semula jadi
  • Skor keyakinan yang berubah-ubah dalam julat normal
  • Penaakulan bergantung kepada konteks yang mungkin mengambil jalan yang berbeza

Strategi untuk menguji AI bukan deterministik

Power Apps Test Engine menyediakan beberapa strategi untuk menguji komponen berkuasa AI dengan berkesan:

Gunakan fungsi Preview.AIExecutePrompt

Fungsi Preview.AIExecutePrompt membolehkan pelaksanaan terkawal gesaan AI dalam ujian 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 membolehkan anda untuk:

  • Laksanakan gesaan dengan input terkawal
  • Menghuraikan dan mengesahkan respons berstruktur
  • Bandingkan hasil dengan nilai jangkaan

Laksanakan pengesahan berasaskan toleransi

Daripada menjangkakan padanan tepat, sahkan bahawa output memenuhi kriteria dalam ambang yang boleh diterima. Kod berikut ialah contoh:

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

Uji fungsi teras dan bukannya output tepat

Fokus ujian untuk mengesahkan bahawa 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 pengesahan struktur untuk output yang kompleks

Untuk respons AI yang kompleks, sahkan struktur respons dan bukannya kandungan 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.

Tandatangan fungsi

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

Parameter

  • PromptName: Nama templat gesaan untuk digunakan
  • PromptContext: Data konteks untuk gesaan, biasanya mengandungi:
    • Konteks atau mesej sistem
    • Soalan atau input pengguna
    • Sebarang parameter lain untuk model

Nilai pulangan

Rekod yang mengandungi:

  • Teks: Teks respons mentah
  • Sifat lain bergantung pada templat dan model gesaan

Mendayakan fungsi

Untuk menggunakan fungsi ini, dayakan modul fungsi AI dalam tetapan ujian anda:

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

Contoh: Menguji komponen analisis sentimen

Contoh berikut menunjukkan menguji ciri analisis sentimen berkuasa 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 penilaian AI

Contoh berikut menunjukkan penggunaan Preview.AIExecutePrompt untuk menguji sistem penarafan berkuasa 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 boleh meneroka pelaksanaan lengkap dalam sampel AI Prompt.

Amalan terbaik untuk ujian komponen AI

Untuk mencipta ujian yang berkesan untuk komponen berkuasa AI:

  • Tentukan julat yang boleh diterima dan bukannya nilai tepat untuk output berangka
  • Buat pagar pengawal untuk mengesahkan output memenuhi keperluan struktur
  • Uji dengan input yang pelbagai termasuk kes tepi dan keadaan sempadan
  • Sertakan kes ujian negatif untuk memastikan AI mengendalikan input tidak sah dengan sewajarnya
  • Bahagikan ujian anda mengikut fungsi dan bukannya kandungan tertentu
  • Gunakan toleransi yang sesuai berdasarkan kritikal komponen

Corak biasa untuk ujian AI

Contoh berikut menggambarkan pendekatan biasa untuk menguji ciri berkuasa AI dalam Power Platform aplikasi. Corak ini membantu anda mengesahkan klasifikasi kandungan, syarat sempadan dan senario lain yang output AI mungkin berbeza-beza.

Ujian klasifikasi kandungan

// 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"
  ))

Ujian sempadan

// 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"
  ))

Ketahui tentang Power Fx fungsi ujian
Terokai pengarangan ujian berbantukan AI
Fahami Protokol Konteks Model
Semak imbas katalog sampel Enjin Ujian