Dalintis per


Nedeterministinio DI testavimas ( Power Apps peržiūra)

Pastaba.

Peržiūros funkcijos nėra skirtos naudoti gamybai ir gali būti apribotas jų funkcionalumas. Šias funkcijas galima naudoti prieš oficialų išleidimą, kad klientai galėtų gauti ankstyvą prieigą ir pateikti atsiliepimų.

Dirbtiniu intelektu pagrįstų programų testavimas kelia unikalių iššūkių, nes AI išvestys gali skirtis priklausomai nuo paleidimo, net ir naudojant identiškas įvestis. Šis nedeterministinis elgesys reikalauja specialių testavimo metodų. Šiame vadove paaiškinama, kaip efektyviai patikrinti DI komponentus savo Power Platform programose.

Nedeterministinių rezultatų supratimas

Tradicinis testavimas remiasi deterministiniais ištekliais, duodančiais nuoseklius rezultatus. Tačiau DI sistemos kiekvieną kartą duoda šiek tiek skirtingus rezultatus dėl:

  • Modelio temperatūros nustatymai ir ėminių ėmimo metodai
  • Skirtingų modelių versijų pasirinkimas
  • Nedideli natūralios kalbos apdorojimo skirtumai
  • Patikimumo balai, kurie svyruoja normos ribose
  • Nuo konteksto priklausantys samprotavimai, kurie gali eiti skirtingais keliais

Nedeterministinio dirbtinio intelekto testavimo strategijos

Power Apps "Test Engine" pateikia keletą strategijų, kaip efektyviai išbandyti dirbtiniu intelektu pagrįstus komponentus:

Naudokite funkciją Preview.AIExecutePrompt

Funkcija Preview.AIExecutePrompt leidžia kontroliuoti AI raginimų vykdymą atliekant testus. Toliau pateiktame pavyzdyje parodyta, kaip jį naudoti:

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

Šis metodas leidžia:

  • Vykdykite raginimus naudodami kontroliuojamas įvestis
  • Struktūrinių atsakymų analizavimas ir tikrinimas
  • Palyginkite rezultatus su numatomomis reikšmėmis

Tolerancija pagrįsto tikrinimo įgyvendinimas

Užuot tikėjęsi tikslių atitikčių, patikrinkite, ar rezultatai atitinka kriterijus per priimtinas ribas. Šis kodas yra pavyzdys:

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

Išbandykite pagrindines funkcijas, o ne tikslias išvestis

Sutelkite testus į patvirtinimą, kad DI komponentas atitinka savo pagrindinę paskirtį, kaip parodyta šiame pavyzdyje:

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

Struktūrinių patvirtinimų naudojimas sudėtingiems rezultatams

Sudėtingų DI atsakymų atveju patikrinkite atsako struktūrą, o ne konkretų turinį, kaip parodyta šiame pavyzdyje:

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

Naudojant Preview.AIExecutePrompt

"Test Engine" teikia funkciją Preview.AIExecutePrompt , specialiai skirtą AI sąveikoms išbandyti.

Funkcijos parašas

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

Parametrai

  • PromptName: naudotino raginimo šablono pavadinimas
  • PromptContext: raginimo kontekstiniai duomenys, kuriuose paprastai yra:
    • Kontekstas arba sistemos pranešimas
    • Klausimai arba vartotojo įvestis
    • Visi kiti modelio parametrai

Pateikiama reikšmė

Įrašas, kuriame yra:

  • Tekstas: neapdorotas atsakymo tekstas
  • Kitos ypatybės, atsižvelgiant į raginimo šabloną ir modelį

Funkcijos įjungimas

Norėdami naudoti šią funkciją, bandymo nustatymuose įjunkite AI funkcijų modulį:

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

Pavyzdys: nuotaikų analizės komponento testavimas

Toliau pateiktame pavyzdyje parodytas dirbtiniu intelektu pagrįstos nuotaikų analizės funkcijos testavimas.

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

Pavyzdys: vertinimo AI

Toliau pateiktame pavyzdyje parodyta, kaip galima Preview.AIExecutePrompt išbandyti dirbtiniu intelektu pagrįstą vertinimo sistemą:

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

Galite ištirti visą diegimą AI Prompt pavyzdyje.

Geriausia DI komponentų testavimo praktika

Norėdami sukurti efektyvius dirbtiniu intelektu pagrįstų komponentų bandymus:

  • Apibrėžkite priimtinus diapazonus , o ne tikslias skaitinių išėjimų reikšmes
  • Sukurkite apsauginius bėgius, kad patikrintumėte, ar išvestys atitinka konstrukcijos reikalavimus
  • Bandymas naudojant įvairius įėjimus, įskaitant kraštinius atvejus ir ribines sąlygas
  • Įtraukite neigiamus bandomuosius atvejus , kad užtikrintumėte, jog DI tinkamai tvarko netinkamas įvestis
  • Segmentuokite bandymus pagal funkcijas, o ne konkretų turinį
  • Naudokite tinkamas leidžiamąsias nuokrypas , atsižvelgdami į komponento svarbą

Bendri DI testavimo modeliai

Toliau pateikti pavyzdžiai iliustruoja įprastus dirbtiniu intelektu pagrįstų funkcijų testavimo taikomosiose Power Platform programose metodus. Šie šablonai padeda patikrinti turinio klasifikaciją, ribines sąlygas ir kitus scenarijus, kai DI išvestys gali skirtis.

Turinio klasifikavimo testavimas

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

Ribinis bandymas

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

Sužinokite apie Power Fx testavimo funkcijas
Susipažinkite su dirbtiniu intelektu paremtų testų kūrimu
Modelio konteksto protokolo supratimas
Bandomojo variklio pavyzdžių katalogo naršymas