Udostępnij przez


Testowanie niedeterministycznej sztucznej inteligencji w Power Apps (wersja zapoznawcza)

Notatka

Funkcje w wersji zapoznawczej nie są przeznaczone do użytku w środowiskach produkcyjnych i mogą mieć ograniczoną funkcjonalność. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu klienci mogą szybciej uzyskać do nich dostęp i przekazać opinie na ich temat.

Testowanie aplikacji opartych na sztucznej inteligencji wiąże się z wyjątkowymi wyzwaniami, ponieważ dane wyjściowe sztucznej inteligencji mogą się różnić między przebiegami, nawet przy identycznych danych wejściowych. To niedeterministyczne zachowanie wymaga specjalnych podejść do testowania. W tym przewodniku wyjaśniono, jak skutecznie weryfikować składniki sztucznej inteligencji w Power Platform aplikacjach.

Zrozumienie niedeterministycznych danych wyjściowych

Tradycyjne testowanie opiera się na deterministycznych danych wejściowych dających spójne wyniki. Jednak systemy sztucznej inteligencji często dają za każdym razem nieco inne wyniki ze względu na:

  • Modelowanie ustawień temperatury i metod próbkowania
  • Wybór różnych wersji modeli
  • Drobne różnice w przetwarzaniu języka naturalnego
  • Wyniki ufności, które wahają się w normalnych zakresach
  • Rozumowanie zależne od kontekstu, które może obierać różne ścieżki

Strategie testowania niedeterministycznej sztucznej inteligencji

Power Apps Test Engine zapewnia kilka strategii skutecznego testowania komponentów opartych na sztucznej inteligencji:

Korzystanie z funkcji Preview.AIExecutePrompt

Funkcja Preview.AIExecutePrompt umożliwia kontrolowane wykonywanie monitów sztucznej inteligencji w testach. W poniższym przykładzie pokazano, jak z niego korzystać:

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

Takie podejście pozwala na:

  • Wykonywanie monitów z kontrolowanymi danymi wejściowymi
  • Analizowanie i weryfikowanie ustrukturyzowanych odpowiedzi
  • Porównywanie wyników z wartościami oczekiwanymi

Implementowanie walidacji opartej na tolerancji

Zamiast oczekiwać dokładnych dopasowań, sprawdź, czy dane wyjściowe spełniają kryteria w akceptowalnych progach. Poniższy kod jest przykładem:

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

Testuj podstawowe funkcje, a nie dokładne dane wyjściowe

Skoncentruj testy na sprawdzaniu, czy komponent sztucznej inteligencji spełnia swój podstawowy cel, jak pokazano w poniższym przykładzie:

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

Stosowanie walidacji strukturalnej dla złożonych wyników

W przypadku złożonych odpowiedzi sztucznej inteligencji zweryfikuj strukturę odpowiedzi, a nie określoną zawartość, jak pokazano w poniższym przykładzie:

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

Korzystanie z Preview.AIExecutePrompt

Aparat testowy udostępnia funkcję Preview.AIExecutePrompt przeznaczoną specjalnie do testowania interakcji sztucznej inteligencji.

Podpis funkcji

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

Parametry

  • PromptName: nazwa szablonu monitu, który ma być używany
  • PromptContext: dane kontekstowe dla monitu, zazwyczaj zawierające:
    • Kontekst lub komunikat systemowy
    • Pytania lub dane wejściowe użytkownika
    • Wszelkie inne parametry dla modelu

Wartość zwracana

Rekord zawierający:

  • Tekst: nieprzetworzony tekst odpowiedzi
  • Inne właściwości w zależności od szablonu monitu i modelu

Włączanie funkcji

Aby skorzystać z tej funkcji, włącz moduł funkcji AI w ustawieniach testu:

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

Przykład: Testowanie składnika analizy tonacji

W poniższym przykładzie przedstawiono testowanie funkcji analizy tonacji opartej na sztucznej inteligencji:

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

Przykład: Sztuczna inteligencja oceniająca

W poniższym przykładzie pokazano, przy użyciu Preview.AIExecutePrompt do testowania systemu oceniania opartego na sztucznej inteligencji:

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

Pełną implementację można zapoznać się z przykładem AI Prompt.

Najlepsze praktyki dotyczące testowania komponentów AI

Aby utworzyć skuteczne testy dla komponentów opartych na sztucznej inteligencji:

  • Definiowanie dopuszczalnych zakresów zamiast dokładnych wartości dla danych wyjściowych liczbowych
  • Utwórz barierki ochronne, aby sprawdzić, czy dane wyjściowe spełniają wymagania konstrukcyjne
  • Testowanie z różnymi danymi wejściowymi, w tym przypadkami brzegowymi i warunkami brzegowymi
  • Uwzględnij negatywne przypadki testowe, aby upewnić się, że sztuczna inteligencja prawidłowo obsługuje nieprawidłowe dane wejściowe
  • Segmentuj testy według funkcjonalności, a nie konkretnej zawartości
  • Stosować odpowiednie tolerancje w oparciu o krytyczność komponentu

Typowe wzorce testowania sztucznej inteligencji

Poniższe przykłady ilustrują typowe podejścia do testowania funkcji opartych na sztucznej inteligencji w Power Platform aplikacjach. Te wzorce ułatwiają weryfikowanie klasyfikacji zawartości, warunków brzegowych i innych scenariuszy, w których dane wyjściowe sztucznej inteligencji mogą się różnić.

Testowanie klasyfikacji treści

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

Testowanie graniczne

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

Dowiedz się więcej o Power Fx funkcjach testowych
Dowiedz się więcej o tworzeniu testów wspomaganych sztuczną inteligencją
Omówienie protokołu kontekstu modelu
Przeglądaj katalog przykładów aparatu testowego