Freigeben über


Nicht deterministische KI in Power Apps testen (Vorschauversion)

Anmerkung

Funktionen in der Vorschauversion sind nicht für den Produktionseinsatz gedacht und können eine eingeschränkte Funktionalität aufweisen. Diese Funktionen stehen vor dem offiziellen Release zur Verfügung, damit Kunden früher Zugriff darauf erhalten und Feedback geben können.

Das Testen von KI-gestützten Anwendungen bringt besondere Herausforderungen mit sich, da die KI-Ausgaben zwischen den Ausführungen variieren können, selbst bei identischen Eingaben. Dieses nichtdeterministische Verhalten erfordert spezielle Testansätze. In diesem Leitfaden wird erläutert, wie Sie KI-Komponenten in Ihren Power Platform-Anwendungen effektiv validieren.

Grundlegendes zu nichtdeterministischen Ausgaben

Herkömmliche Tests beruhen auf deterministischen Eingaben, die konsistente Ergebnisse liefern. KI-Systeme liefern jedoch oft jedes Mal leicht unterschiedliche Ergebnisse, und zwar aus folgenden Gründen:

  • Modelltemperatureinstellungen und Samplingmethoden
  • Auswahl verschiedener Modellversionen
  • Geringfügige Abweichungen bei der Verarbeitung natürlicher Sprache
  • Konfidenzwerte, die innerhalb normaler Bereiche schwanken
  • Kontextabhängiges Denken, das unterschiedliche Wege einschlagen kann

Strategien zum Testen nichtdeterministischer KI

Power Apps Test Engine bietet mehrere Strategien zum effektiven Testen von KI-gestützten Komponenten:

Verwendung der Funktion Preview.AIExecutePrompt

Die Funktion Preview.AIExecutePrompt ermöglicht die kontrollierte Ausführung von KI-Eingabeaufforderungen innerhalb Ihrer Tests. Das folgende Beispiel veranschaulicht die Vorgehensweise:

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

Dieser Ansatz ermöglicht Ihnen Folgendes:

  • Eingabeaufforderungen mit kontrollierten Eingaben ausführen
  • Strukturierte Antworten analysieren und validieren
  • die tatsächlichen Ergebnisse mit den erwarteten Werten zu vergleichen

Implementieren einer toleranzbasierten Validierung

Anstatt genaue Übereinstimmungen zu erwarten, sollten Sie überprüfen, ob die Ausgaben die Kriterien innerhalb akzeptabler Schwellenwerte erfüllen. Im Folgenden sehen Sie einen Beispielcode:

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

Testen der Kernfunktionalität anstelle exakter Ausgaben

Konzentrieren Sie sich bei den Tests darauf, zu überprüfen, ob die KI-Komponente ihren wesentlichen Zweck erfüllt, wie im folgenden Beispiel gezeigt:

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

Strukturelle Validierung für komplexe Ausgaben verwenden

Validieren Sie bei komplexen KI-Antworten die Antwortstruktur und nicht den spezifischen Inhalt, wie im folgenden Beispiel gezeigt:

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

Verwenden von Preview.AIExecutePrompt

Test Engine bietet die Funktion Preview.AIExecutePrompt speziell zum Testen von KI-Interaktionen an.

Signatur der Funktion

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

Parameter

  • PromptName: Der Name der zu verwendenden Eingabeaufforderungsvorlage
  • PromptContext: Kontextdaten für die Eingabeaufforderung, die in der Regel Folgendes enthalten:
    • Kontext oder Systemnachricht
    • Fragen oder Benutzereingaben
    • Alle anderen Parameter für das Modell

Zurückgegebener Wert

Ein Datensatz, der Folgendes enthält:

  • Text: Der unformatierte Antworttext
  • Andere Eigenschaften je nach Eingabeaufforderungsvorlage und Modell

Aktivieren der Funktion

Um diese Funktion zu verwenden, aktivieren Sie das KI-Funktionsmodul in Ihren Testeinstellungen:

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

Beispiel: Testen einer Stimmungsanalysekomponente

Das folgende Beispiel veranschaulicht das Testen einer KI-gestützten Stimmungsanalysefunktion:

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

Beispiel: Auswertung mit KI bewerten

Das folgende Beispiel veranschaulicht die Verwendung von Preview.AIExecutePrompt zum Testen eines KI-gestützten Bewertungssystems:

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

Eine vollständige Implementierung können Sie sich im Eingabeaufforderungsbeispiel anschauen.

Bewährte Methoden für das Testen von KI-Komponenten

So erstellen Sie effektive Tests für KI-gestützte Komponenten:

  • Definieren Sie akzeptable Bereiche anstelle von exakten Werten für numerische Ausgaben.
  • Erstellen Sie Leitplanken, um zu überprüfen, ob die Ausgaben den strukturellen Anforderungen entsprechen.
  • Testen Sie mit verschiedenen Eingaben, einschließlich Grenzfällen und Grenzbedingungen.
  • Schließen Sie negative Testfälle ein, um sicherzustellen, dass die KI ungültige Eingaben angemessen verarbeitet
  • Segmentieren Sie Ihre Tests nach Funktionalität und nicht nach bestimmten Inhalten.
  • Verwenden Sie geeignete Toleranzen, die auf der Kritikalität der Komponente basieren.

Gängige Muster für KI-Tests

Die folgenden Beispiele veranschaulichen gängige Ansätze zum Testen von KI-gestützten Funktionen in Power Platform-Anwendungen. Anhand dieser Muster können Sie die Inhaltsklassifizierung, Grenzbedingungen und andere Szenarien validieren, in denen die KI-Ausgaben variieren können.

Testen der Inhaltsklassifizierung

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

Grenzwertprüfung

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

Weitere Informationen zu Power Fx-Funktionen
KI-gestützte Testerstellung entdecken
Das Modellkontextprotokoll verstehen
Den Test Engine-Beispielkatalog durchsuchen