Del via


Testing av ikke-deterministisk kunstig intelligens i Power Apps (forhåndsversjon)

Notat

Forhåndsversjonsfunksjonene er ikke ment for produksjonsbruk og kan ha begrenset funksjonalitet. Disse funksjonene er tilgjengelige før en offisiell utgivelse, slik at kunder kan få tidlig tilgang og gi tilbakemeldinger.

Testing av AI-drevne applikasjoner introduserer unike utfordringer fordi AI-utganger kan variere mellom kjøringer, selv med identiske innganger. Denne ikke-deterministiske oppførselen krever spesielle testtilnærminger. Denne veiledningen forklarer hvordan du validerer AI-komponenter i programmene dine Power Platform effektivt.

Forstå ikke-deterministiske utganger

Tradisjonell testing er avhengig av deterministiske inndata som gir konsistente resultater. Imidlertid produserer AI-systemer ofte litt forskjellige resultater hver gang på grunn av:

  • Modelltemperaturinnstillinger og prøvetakingsmetoder
  • Velge forskjellige versjoner av modeller
  • Mindre variasjoner i naturlig språkbehandling
  • Konfidensscore som svinger innenfor normale områder
  • Kontekstavhengig resonnement som kan ta forskjellige veier

Strategier for testing av ikke-deterministisk AI

Power Apps Test Engine gir flere strategier for effektiv testing av AI-drevne komponenter:

Bruke Preview.AIExecutePrompt-funksjonen

Preview.AIExecutePrompt-funksjonen muliggjør kontrollert kjøring av AI-forespørsler i testene dine. Følgende eksempel viser hvordan du bruker det:

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

Denne tilnærmingen lar deg:

  • Utfør ledetekster med kontrollerte innganger
  • Analysere og validere strukturerte svar
  • Sammenlign resultater med forventede verdier

Implementere toleransebasert validering

I stedet for å forvente eksakte treff, må du kontrollere at utdataene oppfyller kriteriene innenfor akseptable terskler. Følgende kode er et eksempel:

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

Test kjernefunksjonalitet i stedet for eksakte utganger

Fokustester på å validere at AI-komponenten oppfyller sitt essensielle formål som vist i eksemplet nedenfor:

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

Bruke strukturell validering for komplekse utdata

For komplekse AI-svar validerer du svarstrukturen i stedet for spesifikt innhold som vist i eksemplet nedenfor:

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

Bruke Preview.AIExecutePrompt

Test Engine tilbyr Preview.AIExecutePrompt-funksjonen spesielt for testing av AI-interaksjoner.

Funksjon signatur

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

Parametere

  • PromptName: Navnet på ledetekstmalen som skal brukes
  • PromptContext: Kontekstdata for ledeteksten, som vanligvis inneholder:
    • Kontekst eller systemmelding
    • Spørsmål eller brukerinnspill
    • Eventuelle andre parametere for modellen

Returverdi

En post som inneholder:

  • Tekst: Den rå svarteksten
  • Andre egenskaper avhengig av spørsmålsmal og modell

Aktivere funksjonen

Hvis du vil bruke denne funksjonen, aktiverer du AI-funksjonsmodulen i testinnstillingene:

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

Eksempel: Teste en sentimentanalysekomponent

Eksemplet nedenfor viser testing av en AI-drevet sentimentanalysefunksjon:

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

Eksempel: AI for vurderingsevaluering

Følgende eksempel demonstrerer bruk Preview.AIExecutePrompt for å teste et AI-drevet klassifiseringssystem:

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

Du kan utforske en fullstendig implementering i eksemplet AI Prompt.

Anbefalte fremgangsmåter for testing av AI-komponenter

Slik lager du effektive tester for AI-drevne komponenter:

  • Definere akseptable områder i stedet for eksakte verdier for numeriske utdata
  • Lag rekkverk for å verifisere at utgangene oppfyller strukturelle krav
  • Test med forskjellige innganger , inkludert kanttilfeller og grensebetingelser
  • Inkluder negative testtilfeller for å sikre at AI håndterer ugyldige inndata på riktig måte
  • Segmenter testene dine etter funksjonalitet i stedet for spesifikt innhold
  • Bruk passende toleranser basert på komponentens kritikalitet

Vanlige mønstre for testing av kunstig intelligens

Eksemplene nedenfor illustrerer vanlige tilnærminger for testing av AI-drevne funksjoner i Power Platform programmer. Disse mønstrene hjelper deg med å validere innholdsklassifisering, grensebetingelser og andre scenarioer der AI-utdata kan variere.

Testing av innholdsklassifisering

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

Grense testing

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

Finn ut mer om Power Fx testfunksjoner
Utforsk AI-assistert testredigering
Forstå modellkontekstprotokollen
Bla gjennom katalogen over prøvemotoreksempler