Compartir a través de


Prueba de IA no determinista en Power Apps (vista previa)

Nota

Las características en vista previa no se han diseñado para un uso de producción y pueden tener una funcionalidad restringida. Estas características están disponibles antes del lanzamiento oficial, para que los clientes puedan obtener acceso anticipado y proporcionar comentarios.

Probar aplicaciones impulsadas por IA presenta desafíos únicos porque los resultados de IA pueden variar entre ejecuciones, incluso con entradas idénticas. Este comportamiento no determinista requiere enfoques de prueba especiales. Esta guía explica cómo validar componentes de IA en sus aplicaciones de manera efectiva. Power Platform

Comprensión de los resultados no deterministas

Las pruebas tradicionales se basan en entradas deterministas que producen resultados consistentes. Sin embargo, los sistemas de IA a menudo producen resultados ligeramente diferentes cada vez debido a:

  • Configuración de temperatura del modelo y métodos de muestreo
  • Seleccionar diferentes versiones de modelos
  • Pequeñas variaciones en el procesamiento del lenguaje natural
  • Puntuaciones de confianza que fluctúan dentro de rangos normales
  • Razonamiento dependiente del contexto que puede tomar diferentes caminos

Estrategias para probar la IA no determinista

Power Apps Test Engine ofrece varias estrategias para probar eficazmente componentes impulsados por IA:

Utilice la función Preview.AIExecutePrompt

La función Preview.AIExecutePrompt permite la ejecución controlada de indicaciones de IA dentro de sus pruebas. El siguiente ejemplo demuestra cómo utilizarlo:

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

Este enfoque le permite:

  • Ejecutar indicaciones con entradas controladas
  • Analizar y validar respuestas estructuradas
  • Comparar los resultados con los valores esperados

Implementar la validación basada en tolerancias

En lugar de esperar coincidencias exactas, verifique que los resultados cumplan los criterios dentro de umbrales aceptables. El siguiente código es un ejemplo:

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

Pruebe la funcionalidad principal en lugar de los resultados exactos

Las pruebas se centran en validar que el componente de IA cumple su propósito esencial como se muestra en el siguiente ejemplo:

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

Utilice la validación estructural para resultados complejos

Para respuestas de IA complejas, valide la estructura de la respuesta en lugar del contenido específico, como se muestra en el siguiente ejemplo:

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

Uso de Preview.AIExecutePrompt

Test Engine proporciona la función Preview.AIExecutePrompt específicamente para probar interacciones de IA.

Firma de función

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

Parámetros

  • PromptName: El nombre de la plantilla de mensaje a utilizar
  • PromptContext: Datos de contexto para el mensaje, que generalmente contienen:
    • Mensaje de contexto o del sistema
    • Preguntas o aportaciones de los usuarios
    • ¿Algún otro parámetro para el modelo?

Valor de retorno

Un registro que contiene:

  • Texto: El texto de respuesta sin procesar
  • Otras propiedades según la plantilla y el modelo del mensaje

Habilitación de la función

Para utilizar esta función, habilite el módulo de funciones de IA en su configuración de prueba:

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

Ejemplo: Prueba de un componente de análisis de sentimientos

El siguiente ejemplo demuestra cómo probar una función de análisis de sentimientos impulsada por IA:

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

Ejemplo: IA de evaluación de calificación

El siguiente ejemplo demuestra el uso de Preview.AIExecutePrompt para probar un sistema de calificación impulsado por IA:

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

Puede explorar una implementación completa en el ejemplo de AI Prompt.

Mejores prácticas para las pruebas de componentes de IA

Para crear pruebas efectivas para componentes impulsados por IA:

  • Defina rangos aceptables en lugar de valores exactos para las salidas numéricas
  • Crear barandillas de protección para verificar que las salidas cumplan con los requisitos estructurales
  • Prueba con diversas entradas, incluidos casos extremos y condiciones de contorno
  • Incluya casos de prueba negativos para garantizar que la IA gestione las entradas no válidas de forma adecuada
  • Segmente sus pruebas por funcionalidad en lugar de por contenido específico
  • Utilice tolerancias adecuadas según la criticidad del componente.

Patrones comunes para las pruebas de IA

Los siguientes ejemplos ilustran enfoques comunes para probar funciones impulsadas por IA en aplicaciones. Power Platform Estos patrones le ayudan a validar la clasificación de contenido, las condiciones límite y otros escenarios donde los resultados de la IA pueden variar.

Pruebas de clasificación de contenido

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

Pruebas de límites

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

Aprenda sobre las funciones de prueba Power Fx
Explora la creación de pruebas asistida por IA
Comprender el protocolo de contexto del modelo
Explorar el catálogo de muestras de Test Engine