다음을 통해 공유


비결정적 AI 테스트(미리 보기) Power Apps

참고

프리뷰 기능은 생산용으로 만들어진 것이 아니므로 기능이 제한될 수 있습니다. 이런 기능은 공식 릴리스 전에 사용할 수 있으므로 고객이 조기에 액세스하고 피드백을 제공할 수 있습니다.

AI 기반 애플리케이션을 테스트하면 동일한 입력을 사용하더라도 실행마다 AI 출력이 달라질 수 있기 때문에 고유한 과제가 발생합니다. 이러한 비결정적 동작에는 특별한 테스트 접근 방식이 필요합니다. 이 가이드에서는 애플리케이션에서 AI 구성 요소를 효과적으로 검증하는 방법을 설명합니다. Power Platform

비결정적 출력 이해

기존 테스트는 일관된 출력을 생성하는 결정론적 입력에 의존합니다. 그러나 AI 시스템은 다음과 같은 이유로 매번 약간씩 다른 결과를 생성하는 경우가 많습니다.

  • 모델 온도 설정 및 샘플링 방법
  • 다양한 버전의 모델 선택
  • 자연어 처리의 사소한 변화
  • 정상 범위 내에서 변동하는 신뢰 점수
  • 다양한 경로를 취할 수 있는 상황에 따른 추론

비결정적 AI 테스트를 위한 전략

Power Apps Test Engine은 AI 기반 구성 요소를 효과적으로 테스트하기 위한 여러 가지 전략을 제공합니다.

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

정확한 출력보다는 핵심 기능을 테스트하세요

다음 예에서 보듯이 AI 구성 요소가 본질적인 목적을 충족하는지 확인하는 데 초점을 맞춘 테스트입니다.

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

복잡한 출력에 대해 구조적 검증을 사용하세요

복잡한 AI 응답의 경우 다음 예와 같이 구체적인 내용이 아닌 응답 구조를 검증하세요.

// 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 사용

테스트 엔진은 AI 상호작용을 테스트하기 위해 특별히 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가 잘못된 입력을 적절하게 처리하는지 확인하기 위해 부정적인 테스트 사례를 포함합니다.
  • 특정 콘텐츠가 아닌 기능별로 테스트를 세분화하세요.
  • 구성 요소의 중요도에 따라 적절한 허용 오차를 사용하십시오.

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 지원 테스트 작성 살펴보기
모델 컨텍스트 프로토콜 이해
테스트 엔진 샘플 카탈로그를 탐색하세요