Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Предварительные версии функций не предназначены для использования в производственной среде, а их функциональность может быть ограничена. Они доступны перед официальным выпуском, чтобы клиенты могли досрочно получить доступ и предоставить отзывы.
Тестирование приложений на базе ИИ сопряжено с особыми трудностями, поскольку выходные данные ИИ могут различаться от запуска к запуску даже при идентичных входных данных. Такое недетерминированное поведение требует специальных подходов к тестированию. В этом руководстве объясняется, как эффективно проверять компоненты ИИ в ваших Power Platform приложениях.
Понимание недетерминированных выходных данных
Традиционное тестирование основано на детерминированных входных данных, дающих последовательные результаты. Однако системы ИИ часто каждый раз выдают немного разные результаты по следующим причинам:
- Настройки температуры модели и методы отбора проб
- Выбор различных версий моделей
- Незначительные изменения в обработке естественного языка
- Показатели уверенности колеблются в пределах нормы
- Контекстно-зависимые рассуждения, которые могут развиваться по-разному
Стратегии тестирования недетерминированного ИИ
Power Apps Test Engine предоставляет несколько стратегий для эффективного тестирования компонентов на базе ИИ:
Используйте функцию Preview.AIExecutePrompt
Функция Preview.AIExecutePrompt обеспечивает контролируемое выполнение подсказок ИИ в ваших тестах. Следующий пример демонстрирует, как его использовать:
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: Контекстные данные для приглашения, обычно содержащие:
- Контекстное или системное сообщение
- Вопросы или комментарии пользователей
- Любые другие параметры модели
Возвращаемое значение
Запись, содержащая:
- Текст: необработанный текст ответа
- Другие свойства в зависимости от шаблона и модели подсказки
Включение функции
Чтобы использовать эту функцию, включите модуль функций ИИ в настройках теста:
testSettings:
extensionModules:
enable: true
parameters:
enableAIFunctions: true
Пример: Тестирование компонента анализа настроений
В следующем примере демонстрируется тестирование функции анализа настроений на основе искусственного интеллекта:
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)
})
Пример: Оценка рейтинга ИИ
В следующем примере показано использование Preview.AIExecutePrompt для тестирования рейтинговой системы на базе искусственного интеллекта:
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.
Лучшие практики тестирования компонентов ИИ
Чтобы создать эффективные тесты для компонентов на базе ИИ:
- Определите приемлемые диапазоны вместо точных значений для числовых выходных данных
- Создайте ограждения для проверки соответствия выходных данных структурным требованиям
- Тестирование с различными входными данными , включая крайние случаи и граничные условия
- Включите отрицательные тестовые случаи , чтобы убедиться, что ИИ правильно обрабатывает недопустимые входные данные.
- Сегментируйте свои тесты по функциональности, а не по конкретному содержанию
- Используйте соответствующие допуски в зависимости от критичности компонента
Распространенные шаблоны тестирования ИИ
Следующие примеры иллюстрируют общие подходы к тестированию функций на базе ИИ в Power Platform приложениях. Эти шаблоны помогают вам проверять классификацию контента, граничные условия и другие сценарии, в которых выходные данные ИИ могут различаться.
Тестирование классификации контента
// 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 тестовых функциях
Изучите создание тестов с помощью ИИ
Понимание протокола контекста модели
Просмотрите каталог образцов Test Engine