Condividi tramite


Test dell'intelligenza artificiale non deterministica in Power Apps (anteprima)

Nota

Le funzionalità di anteprima non sono destinate ad essere utilizzate per la produzione e sono soggette a restrizioni. Vengono rese disponibili prima di una versione ufficiale in modo che i clienti possano accedervi con anticipo e fornire i loro commenti.

Testare le applicazioni basate sull'intelligenza artificiale presenta delle sfide particolari, poiché gli output dell'intelligenza artificiale possono variare da un'esecuzione all'altra, anche con input identici. Questo comportamento non deterministico richiede approcci di test speciali. Questa guida spiega come convalidare in modo efficace i componenti di intelligenza artificiale nelle tue applicazioni. Power Platform

Comprensione degli output non deterministici

I test tradizionali si basano su input deterministici che producono output coerenti. Tuttavia, i sistemi di intelligenza artificiale spesso producono ogni volta risultati leggermente diversi a causa di:

  • Impostazioni della temperatura del modello e metodi di campionamento
  • Selezione di diverse versioni di modelli
  • Piccole variazioni nell'elaborazione del linguaggio naturale
  • Punteggi di confidenza che oscillano entro i limiti normali
  • Ragionamento dipendente dal contesto che potrebbe prendere percorsi diversi

Strategie per testare l'intelligenza artificiale non deterministica

Power Apps Test Engine offre diverse strategie per testare efficacemente i componenti basati sull'intelligenza artificiale:

Utilizzare la funzione Preview.AIExecutePrompt

La funzione Preview.AIExecutePrompt consente l'esecuzione controllata di prompt di intelligenza artificiale all'interno dei test. L'esempio seguente mostra come utilizzarlo:

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

Questo approccio consente di:

  • Eseguire prompt con input controllati
  • Analizzare e convalidare le risposte strutturate
  • Confronta i risultati con i valori attesi

Implementare la convalida basata sulla tolleranza

Invece di aspettarti corrispondenze esatte, verifica che gli output soddisfino i criteri entro soglie accettabili. Il seguente codice è un esempio:

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

Testare le funzionalità principali piuttosto che gli output esatti

I test mirano a verificare che il componente AI svolga il suo scopo essenziale, come mostrato nel seguente esempio:

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

Utilizzare la convalida strutturale per output complessi

Per risposte AI complesse, convalidare la struttura della risposta anziché il contenuto specifico, come mostrato nel seguente esempio:

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

Utilizzo di Preview.AIExecutePrompt

Test Engine fornisce la funzione Preview.AIExecutePrompt specificatamente per testare le interazioni dell'IA. ...

Firma della funzione

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

Parametri

  • PromptName: Nome del modello di prompt da utilizzare
  • PromptContext: dati di contesto per il prompt, in genere contenenti:
    • Contesto o messaggio di sistema
    • Domande o input degli utenti
    • Eventuali altri parametri per il modello

Valore restituito

Un record contenente:

  • Testo: Il testo di risposta non elaborato
  • Altre proprietà a seconda del modello e del modello di richiesta

Abilitazione della funzione

Per utilizzare questa funzione, abilita il modulo Funzioni AI nelle impostazioni del test:

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

Esempio: test di un componente di analisi del sentiment

L'esempio seguente illustra il test di una funzionalità di analisi del sentiment basata sull'intelligenza artificiale:

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

Esempio: Valutazione AI

L'esempio seguente illustra l'utilizzo di Preview.AIExecutePrompt per testare un sistema di valutazione basato sull'intelligenza artificiale:

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

È possibile esplorare un'implementazione completa nell' esempio di prompt AI.

Migliori pratiche per i test dei componenti AI

Per creare test efficaci per i componenti basati sull'intelligenza artificiale:

  • Definire intervalli accettabili invece di valori esatti per gli output numerici
  • Creare dei guardrail per verificare che le uscite soddisfino i requisiti strutturali
  • Test con input diversi inclusi casi limite e condizioni al contorno
  • Includere casi di test negativi per garantire che l'IA gestisca in modo appropriato gli input non validi
  • Segmenta i tuoi test in base alla funzionalità piuttosto che al contenuto specifico
  • Utilizzare tolleranze appropriate in base alla criticità del componente

Modelli comuni per i test di intelligenza artificiale

Gli esempi seguenti illustrano approcci comuni per testare le funzionalità basate sull'intelligenza artificiale nelle applicazioni. Power Platform Questi modelli aiutano a convalidare la classificazione dei contenuti, le condizioni al contorno e altri scenari in cui gli output dell'IA potrebbero variare.

Test di classificazione dei contenuti

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

Test di confine

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

Scopri di più sulle Power Fx funzioni di test
Esplora la creazione di test assistita dall'intelligenza artificiale
Comprendere il protocollo del contesto del modello
Sfoglia il catalogo dei campioni di Test Engine