Тестване на недетерминиран AI в Power Apps (остарял)

Бележка

Test Engine е остарял и ще бъде премахнат в бъдещо издание. Използвайте Power Platform Playwright samples за възможности за автоматизация на тестове в Power Platform и Dynamics 365 услуги.

Тестването на приложения, задвижвани от AI, създава уникални предизвикателства, тъй като изходите на AI могат да варират между изпълненията, дори и с идентични входове. Това недетерминистично поведение изисква специални подходи за тестване. Това ръководство обяснява как ефективно да валидирате AI компоненти във вашите Power Platform приложения.

Разбиране на недетерминираните резултати

Традиционното тестване разчита на детерминистични входове, произвеждащи последователни резултати. Системите с изкуствен интелект обаче често дават малко по-различни резултати всеки път поради:

  • Настройки на температурата на модела и методи за вземане на проби
  • Избор на различни версии на моделите
  • Незначителни промени в обработката на естествен език
  • Оценки на доверието, които варират в нормални граници
  • Контекстно-зависими разсъждения, които могат да поемат по различни пътища

Стратегии за тестване на недетерминистичен AI

Power Apps Test Engine предлага няколко стратегии за ефективно тестване на компоненти, задвижвани от изкуствен интелект:

Използвайте функцията Preview.AIExecutePrompt

Функцията Preview.AIExecutePrompt позволява контролирано изпълнение на AI подкани в рамките на вашите тестове. Следният пример показва как да го използвате:

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

Този подход ви позволява да:

  • Изпълнявайте подкани с контролирани входове
  • Анализирайте и валидирайте структурирани отговори
  • Сравняване на резултатите с очакваните стойности

Прилагане на валидиране въз основа на толеранс

Вместо да очаквате точни съвпадения, проверете дали резултатите отговарят на критериите в рамките на приемливите прагове. Следният код е пример:

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

Тествайте функционалността на ядрото, а не точните резултати

Тестовете за фокусиране върху валидирането дали компонентът на ИИ изпълнява основната си цел, както е показано в следния пример:

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

Използване на структурно валидиране за сложни изходи

За сложни отговори на ИИ проверете структурата на отговора, а не конкретното съдържание, както е показано в следния пример:

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

Използване на Preview.AIExecutePrompt

Test Engine предоставя функцията Preview.AIExecutePrompt специално за тестване на взаимодействия с изкуствен интелект.

Функционален подпис

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

Параметри

  • PromptName: Името на шаблона за подкана, който да се използва
  • PromptContext: Контекстни данни за подканата, обикновено съдържащи:
    • Контекст или системно съобщение
    • Въпроси или потребителски данни
    • Всякакви други параметри за модела

Стойност на връщане

Запис, съдържащ:

  • Текст: Необработеният текст на отговора
  • Други свойства в зависимост от шаблона и модела на подканата

Активиране на функцията

За да използвате тази функция, активирайте модула AI функции в настройките на теста:

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

Пример: Тестване на компонент за анализ на настроенията

Следният пример демонстрира тестване на функция за анализ на настроенията, задвижвана от AI:

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

Пример: AI за оценка на рейтинга

Следният пример показва използването Preview.AIExecutePrompt за тестване на система за оценяване, задвижвана от AI:

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

Можете да разгледате пълна реализация в примера за AI Prompt.

Най-добри практики за тестване на компоненти с изкуствен интелект

За да създадете ефективни тестове за компоненти, задвижвани от AI:

  • Дефиниране на приемливи диапазони вместо точни стойности за числови изходи
  • Създайте предпазни релси, за да проверите дали изходите отговарят на структурните изисквания
  • Тествайте с различни входни данни, включително крайни случаи и гранични условия
  • Включване на отрицателни тестови случаи , за да се гарантира, че ИИ обработва невалидните входни данни по подходящ начин
  • Сегментирайте тестовете си по функционалност, а не по конкретно съдържание
  • Използвайте подходящи допуски въз основа на критичността на компонента

Често срещани модели за тестване на AI

Следните примери илюстрират общи подходи за тестване на функции, задвижвани от AI в Power Platform приложения. Тези модели ви помагат да проверите класификацията на съдържанието, граничните условия и други сценарии, при които изходите на AI може да варират.

Тестване на класификацията на съдържанието

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

Научете повече за Power Fx тестовите функции
Разгледайте създаването на тестове с помощта на AI
Разбиране на протокола за контекст на модела
Разгледайте каталога с примери на Test Engine