ai_decide Función

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Importante

Esta característica se encuentra en su versión beta.

La ai_decide() función evalúa una o más preguntas en función de datos textuales o estructurados. Para cada pregunta, devuelve una probabilidad, una elección entre criterios nombrados o una puntuación en una escala ordenada. Úsalo para enrutar tickets de soporte, evaluar si un evento necesita atención o priorizar el trabajo usando una rúbrica que tú definas.

Todas las preguntas en una llamada usan la misma entrada, llamada state. Puedes combinar diferentes tipos de preguntas en una sola llamada y usar las respuestas retornadas en consultas SQL posteriores.

Seguridad de datos

Los datos del documento se procesan dentro del perímetro de seguridad de Databricks. Databricks no almacena los parámetros que se pasan a las llamadas a funciones de IA, pero sí conserva los detalles de la ejecución de metadatos, como la versión de ejecución de Databricks utilizada.

Requisitos

Licencia de Apache 2.0

Los modelos subyacentes que se pueden usar en este momento tienen licencia bajo la licencia de Apache 2.0, Copyright © The Apache Software Foundation. Los clientes son responsables de garantizar el cumplimiento de las licencias de modelo aplicables.

Databricks recomienda revisar estas licencias para garantizar el cumplimiento de los términos aplicables. Si los modelos surgen en el futuro que funcionan mejor según las pruebas comparativas internas de Databricks, Databricks podría cambiar el modelo (y la lista de licencias aplicables proporcionadas en esta página).

El modelo que alimenta esta función está disponible mediante las API de modelo de Model Serving Foundation. Consulte Términos de modelo aplicables para obtener información sobre qué modelos están disponibles en Databricks y las licencias y directivas que rigen el uso de esos modelos.

Si los modelos surgen que funcionan mejor según las pruebas comparativas internas de Azure Databricks, Databricks podría cambiar los modelos y actualizar la documentación.

Syntax

ai_decide(state, questions [, options])

Arguments

  • state: A VARIANT o STRING expresión que contiene el contenido, contexto y ejemplos necesarios para responder a las preguntas. El valor puede variar según la fila. Acepta cualquiera de:

    • A que STRING contenga texto plano o un objeto o array codificado en JSON. Los objetos y arrays JSON se interpretan como datos estructurados. Otras cadenas se tratan como texto.
    • Objeto VARIANT generado por otra función de IA (por ejemplo ai_parse_document , o ai_extract)
  • questions: Una expresión constante STRING que contiene un objeto JSON no vacío. Cada clave es un ID de pregunta no vacío, y cada valor es una definición de pregunta. Las mismas definiciones se aplican a cada fila. Ver Definiciones de preguntas.

  • options: Una expresión constante MAP<STRING, STRING> opcional. La opción soportada es version, con el valor '1.0'. La versión 1.0 es la predeterminada. Para especificarlo explícitamente, usa map('version', '1.0').

Definiciones de preguntas

Cada definición de pregunta requiere type y instructions, más criteria cuando lo requiera el tipo de pregunta. Los campos requeridos no pueden ser null. No se soportan otros campos.

  • type: uno de noul, choiceo score.
  • instructions: Instrucciones para evaluar el estado, expresadas como una cadena, objeto JSON o matriz JSON.
  • criteria: Las descripciones que definen cómo responder. La forma requerida depende de type.

Noul pregunta

Úsalo noul para estimar la probabilidad de que una pregunta sea cierta. El resultado es un número del 0 al 1.

El objeto opcional criteria puede contener true y false claves para describir esos resultados. Cada descripción puede ser una cadena, un objeto JSON o un array JSON. Omite criteria cuando no necesites estas descripciones. Si se suministra, criteria debe ser un objeto y no puede ser null.

{
  "needs_escalation": {
    "type": "noul",
    "instructions": "Does this ticket need immediate escalation?",
    "criteria": {
      "true": "An active service outage blocks the customer from working.",
      "false": "The customer can continue working or has a workaround."
    }
  }
}

Preguntas de elección

Úsalo choice para seleccionar una etiqueta de un conjunto de criterios nombrados.

El objeto requerido criteria asigna de 1 a 255 etiquetas no vacías a descripciones. Cada descripción puede ser una cadena, objeto JSON, array JSON o null. Úsalo null cuando la etiqueta por sí sola describe la elección.

{
  "team": {
    "type": "choice",
    "instructions": "Which team should handle this ticket?",
    "criteria": {
      "shipping": "Delivery or shipment issues",
      "billing": "Payment or invoice issues",
      "technical_support": "Product technical problems"
    }
  }
}

Preguntas sobre la puntuación

Úsalo score para evaluar el estado en comparación con una escala ordenada.

El array requerido criteria contiene de 2 a 10 descripciones, ordenadas de menor a mayor. Cada descripción puede ser una cadena, un objeto JSON o un array JSON. El primer criterio tiene índice 0, el siguiente tiene índice 1, y así sucesivamente.

El resultado es el promedio ponderado por probabilidad de estos índices. Puede ser fraccionaria y varía desde 0 hasta el número de criterios menos uno. Por ejemplo, las probabilidades de 0.1, 0.3, y 0.6 en tres criterios producen una puntuación de 1.5.

{
  "urgency": {
    "type": "score",
    "instructions": "How urgent is this ticket?",
    "criteria": [
      "Routine request with no time pressure",
      "Time-sensitive issue with a workaround",
      "Critical issue that blocks the customer"
    ]
  }
}

Devoluciones

Devuelve a VARIANT con los campos response, metadata, y error_message. El response campo contiene un answers objeto con una entrada por pregunta. Los identificadores de las preguntas coinciden exactamente con los proporcionados en el questions parámetro. Cada respuesta incluye un type campo que coincide con el tipo de pregunta: noul, choice, o score. Los siguientes ejemplos muestran el response campo para cada tipo de pregunta:

  • Preguntas de Noul: A probability de 0 a 1 estimando la probabilidad de que la pregunta sea cierta.

    {
      "answers": {
        "needs_escalation": {
          "type": "noul",
          "probability": 0.1
        }
      }
    }
    
  • Preguntas de elección: A que choice contiene la etiqueta con mayor probabilidad y un probabilities objeto que asigna cada etiqueta a su probabilidad. confidence es un número del 0 al 1 que indica qué tan bien respalda el estado la evaluación. Los probabilities valores suman 1. Los nombres de etiquetas coinciden exactamente con los proporcionados en criteria.

    {
      "answers": {
        "team": {
          "type": "choice",
          "choice": "shipping",
          "probabilities": {
            "shipping": 0.8,
            "billing": 0.1,
            "technical_support": 0.1
          },
          "confidence": 0.9
        }
      }
    }
    
  • Preguntas de puntuación: A que score contiene el promedio ponderado por probabilidad de los índices criterio, una legend cadena de indexación (como "0") a las descripciones originales del criterio, y un probabilities objeto que mapea esos índices a probabilidades. confidence es un número del 0 al 1 que indica qué tan bien respalda el estado la evaluación. Los probabilities valores suman 1.

    {
      "answers": {
        "urgency": {
          "type": "score",
          "score": 1.5,
          "legend": {
            "0": "Routine request with no time pressure",
            "1": "Time-sensitive issue with a workaround",
            "2": "Critical issue that blocks the customer"
          },
          "probabilities": {
            "0": 0.1,
            "1": 0.3,
            "2": 0.6
          },
          "confidence": 0.8
        }
      }
    }
    

En caso de éxito, metadata.version identifica la versión de función utilizada y error_message es null.

En el caso de fallo, response es null y error_message describe el fallo. Los tipos de argumentos inválidos o las definiciones de preguntas no constantes también pueden causar errores de consulta.

Examples

El siguiente ejemplo muestra cómo evaluar varias preguntas en una sola llamada. Las respuestas generadas pueden variar entre llamadas.

Evalúa varios tipos de preguntas

Este ejemplo evalúa un listado de productos según su categoría, uso de materiales reciclados y idoneidad para senderismo en condiciones de lluvia:

SELECT ai_decide(
  '{"name": "TrailShell jacket", "description": "Lightweight waterproof hiking jacket made from recycled polyester. Packs into its own pocket."}',
  '{
    "category": {
      "type": "choice",
      "instructions": "Which product category best fits this item?",
      "criteria": {
        "outerwear": "Jackets, coats, and other protective outer layers",
        "footwear": "Shoes, boots, and sandals",
        "accessories": "Bags, hats, and other accessories"
      }
    },
    "recycled_materials": {
      "type": "noul",
      "instructions": "Does the listing state that the product uses recycled materials?"
    },
    "hiking_suitability": {
      "type": "score",
      "instructions": "How suitable is this product for hiking in rainy weather?",
      "criteria": [
        "Not suitable for outdoor use in rain",
        "Offers some protection from rain",
        "Designed for hiking with waterproof protection"
      ]
    }
  }',
  map('version', '1.0')
) AS decision;

Respuesta de ejemplo:

{
  "response": {
    "answers": {
      "category": {
        "type": "choice",
        "choice": "outerwear",
        "probabilities": { "outerwear": 0.95, "footwear": 0.01, "accessories": 0.04 },
        "confidence": 0.95
      },
      "recycled_materials": { "type": "noul", "probability": 0.98 },
      "hiking_suitability": {
        "type": "score",
        "score": 1.8,
        "legend": {
          "0": "Not suitable for outdoor use in rain",
          "1": "Offers some protection from rain",
          "2": "Designed for hiking with waterproof protection"
        },
        "probabilities": { "0": 0.05, "1": 0.1, "2": 0.85 },
        "confidence": 0.9
      }
    }
  },
  "metadata": { "version": "1.0" },
  "error_message": null
}