Testiranje nedeterministične umetne inteligence v Power Apps (zastarelo)

opomba,

Test Engine je zastarel in bo odstranjen v prihodnji izdaji. Uporabite Power Platform Playwright vzorce za zmogljivosti avtomatizacije testiranja v Power Platform in Dynamics 365 storitvah.

Testiranje aplikacij, ki jih poganja umetna inteligenca, prinaša edinstvene izzive, saj se lahko rezultati umetne inteligence med zagoni razlikujejo, tudi če so vhodni podatki enaki. To nedeterministično vedenje zahteva posebne pristope testiranja. Ta priročnik pojasnjuje, kako učinkovito preveriti komponente umetne inteligence v vaših aplikacijah. Power Platform

Razumevanje nedeterminističnih izhodov

Tradicionalno testiranje se zanaša na deterministične vhodne podatke, ki dajejo dosledne rezultate. Vendar pa sistemi umetne inteligence pogosto vsakič ustvarijo nekoliko drugačne rezultate zaradi:

  • Nastavitve temperature modela in metode vzorčenja
  • Izbira različnih različic modelov
  • Manjše razlike v obdelavi naravnega jezika
  • Ocene zaupanja, ki nihajo znotraj normalnih razponov
  • Kontekstualno odvisno sklepanje, ki lahko ubere različne poti

Strategije za testiranje nedeterministične umetne inteligence

Power Apps Test Engine ponuja več strategij za učinkovito testiranje komponent, ki jih poganja umetna inteligenca:

Uporabite funkcijo Preview.AIExecutePrompt

Funkcija Preview.AIExecutePrompt omogoča nadzorovano izvajanje pozivov umetne inteligence znotraj vaših testov. ... Naslednji primer prikazuje, kako ga uporabiti:

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

Ta pristop vam omogoča:

  • Izvajanje pozivov z nadzorovanimi vnosi
  • Razčlenitev in potrditev strukturiranih odgovorov
  • Primerjajte rezultate s pričakovanimi vrednostmi

Izvedite validacijo na podlagi tolerance

Namesto pričanja natančnih ujemanj preverite, ali rezultati izpolnjujejo merila znotraj sprejemljivih pragov. Naslednja koda je primer:

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

Testirajte osnovno funkcionalnost namesto natančnih rezultatov

Osredotočite teste na potrditev, da komponenta umetne inteligence izpolnjuje svoj bistveni namen, kot je prikazano v naslednjem primeru:

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

Za kompleksne izhode uporabite strukturno validacijo

Pri kompleksnih odgovorih umetne inteligence preverite strukturo odgovora in ne specifične vsebine, kot je prikazano v naslednjem primeru:

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

Uporaba Preview.AIExecutePrompt

Test Engine ponuja funkcijo Preview.AIExecutePrompt posebej za testiranje interakcij umetne inteligence. ...

Podpis funkcije

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

Parametri

  • PromptName: Ime predloge poziva, ki ga želite uporabiti
  • PromptContext: Kontekstni podatki za poziv, ki običajno vsebujejo:
    • Kontekstno ali sistemsko sporočilo
    • Vprašanja ali uporabniški vnosi
    • Vsi drugi parametri za model

Vrnjena vrednost

Zapis, ki vsebuje:

  • Besedilo: Neobdelano besedilo odgovora
  • Druge lastnosti, odvisno od predloge in modela poziva

Omogočanje funkcije

Za uporabo te funkcije omogočite modul funkcij umetne inteligence v nastavitvah testa:

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

Primer: Testiranje komponente za analizo čustev

Naslednji primer prikazuje testiranje funkcije analize mnenj, ki jo poganja umetna inteligenca:

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)
  })

Primer: Ocenjevanje ocen z umetno inteligenco

Naslednji primer prikazuje uporabo Preview.AIExecutePrompt za testiranje sistema ocenjevanja, ki ga poganja umetna inteligenca:

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}
  ))

Celotno implementacijo si lahko ogledate v vzorcu poziva umetne inteligence.

Najboljše prakse za testiranje komponent umetne inteligence

Za ustvarjanje učinkovitih testov za komponente, ki jih poganja umetna inteligenca:

  • Za numerične izhode namesto natančnih vrednosti določite sprejemljive obsege
  • Izdelava zaščitnih ograj za preverjanje, ali izhodi izpolnjujejo strukturne zahteve
  • Testiranje z različnimi vhodnimi podatki, vključno z robnimi primeri in robnimi pogoji
  • Vključite negativne testne primere , da zagotovite, da umetna inteligenca ustrezno obravnava neveljavne vnose
  • Segmentirajte svoje teste po funkcionalnosti in ne po specifični vsebini
  • Uporabite ustrezne tolerance glede na kritičnost komponente

Pogosti vzorci za testiranje umetne inteligence

Naslednji primeri ponazarjajo pogoste pristope za testiranje funkcij, ki jih poganja umetna inteligenca, v aplikacijah. Power Platform Ti vzorci vam pomagajo pri preverjanju klasifikacije vsebine, robnih pogojev in drugih scenarijev, kjer se lahko rezultati umetne inteligence razlikujejo.

Testiranje klasifikacije vsebine

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

Mejno testiranje

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

Več o testnih funkcijah Power Fx
Raziščite ustvarjanje testov s pomočjo umetne inteligence
Razumevanje protokola konteksta modela
Brskajte po katalogu vzorcev testnega mehanizma