ai_decide Fonction

S’applique à :case cochée oui Databricks SQL case cochée oui Databricks Runtime

Important

Cette fonctionnalité est en version bêta.

La ai_decide() fonction évalue une ou plusieurs questions par rapport au texte ou aux données structurées. Pour chaque question, elle retourne soit une probabilité, un choix parmi des critères nommés, ou un score sur une échelle ordonnée. Utilisez-le pour acheminer les tickets de support, évaluer si un événement nécessite de l’attention, ou prioriser le travail en utilisant une grille que vous définissez.

Toutes les questions d’un appel utilisent la même entrée, appelée state. Vous pouvez combiner différents types de questions dans un seul appel et utiliser les réponses retournées dans les requêtes SQL en aval.

Sécurité des données

Vos données de document sont traitées dans le périmètre de sécurité Databricks. Databricks ne stocke pas les paramètres qui sont passés dans les appels de fonctions IA, mais conserve les détails de la gestion des métadonnées, comme la version d’exécution de Databricks utilisée.

Exigences

Licence Apache 2.0

Les modèles sous-jacents qui peuvent être utilisés pour l’instant sont sous licence sous licence Apache 2.0, copyright © The Apache Software Foundation. Les clients sont tenus de veiller à la conformité aux licences de modèle applicables.

Databricks recommande de passer en revue ces licences pour vérifier leur conformité avec les conditions applicables. Si les modèles émergent à l’avenir qui fonctionnent mieux en fonction des benchmarks internes de Databricks, Databricks peut modifier le modèle (et la liste des licences applicables fournies sur cette page).

Le modèle qui alimente cette fonction est rendu disponible à l’aide des API Model Service Foundation. Consultez les conditions de modèle applicables pour plus d’informations sur les modèles disponibles sur Databricks et les licences et stratégies qui régissent l’utilisation de ces modèles.

Si des modèles apparaissent mieux selon les benchmarks internes de Azure Databricks, Databricks peut modifier les modèles et mettre à jour la documentation.

Syntax

ai_decide(state, questions [, options])

Arguments

  • state: A VARIANT ou STRING expression contenant le contenu, le contexte et les exemples nécessaires pour répondre aux questions. La valeur peut varier selon la ligne. Accepte soit :

    • Un STRING contenant du texte clair ou un objet ou tableau encodé en JSON. Les objets et tableaux JSON sont interprétés comme des données structurées. D’autres chaînes sont traitées comme du texte.
    • Produit VARIANT par une autre fonction IA (par exemple ai_parse_document , ou ai_extract)
  • questions: Une expression constante STRING contenant un objet JSON non vide. Chaque clé est un identifiant de question non vide, et chaque valeur est une définition de la question. Les mêmes définitions s’appliquent à chaque ligne. Voir définitions de la question.

  • options: Une expression constante MAP<STRING, STRING> optionnelle. L’option prise en charge est version, avec la valeur '1.0'. La version 1.0 est la norme par défaut. Pour le spécifier explicitement, utilisez map('version', '1.0').

Définitions des questions

Chaque définition de question nécessite type et instructions, plus criteria lorsque requis par le type de question. Les champs requis ne peuvent pas être null. D’autres domaines ne sont pas pris en charge.

  • type: Un des noul, choiceou score.
  • instructions: Instructions pour évaluer l’état, exprimées sous forme de chaîne, objet JSON ou tableau JSON.
  • criteria: Les descriptions qui définissent comment répondre. La forme requise dépend de type.

Noul demande

À utiliser noul pour estimer la probabilité qu’une question soit vraie. Le résultat est un nombre de 0 à 1.

L’objet optionnel criteria peut contenir true des false clés pour décrire ces résultats. Chaque description peut être une chaîne, un objet JSON ou un tableau JSON. Omettez criteria quand vous n’avez pas besoin de ces descriptions. Si elle est fournie, criteria doit être un objet et ne peut pas être 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."
    }
  }
}

Questions de choix

Utilisez choice pour sélectionner une étiquette parmi un ensemble de critères nommés.

L’objet requis criteria correspond de 1 à 255 étiquettes non vides à des descriptions. Chaque description peut être une chaîne de caractères, un objet JSON, un tableau JSON ou null. À utiliser null lorsque l’étiquette seule décrit le choix.

{
  "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"
    }
  }
}

Questions sur les scores

À utiliser score pour évaluer l’état par rapport à une échelle ordonnée.

Le tableau requis criteria contient de 2 à 10 descriptions, classées du plus bas au plus haut. Chaque description peut être une chaîne, un objet JSON ou un tableau JSON. Le premier critère a un indice 0, le suivant a un indice 1, et ainsi de suite.

Le résultat est la moyenne pondérée par probabilité de ces indices. Elle peut être fractionnaire et varie de 0 jusqu’au nombre de critères moins un. Par exemple, les probabilités de 0.1, , et 0.6 sur trois critères produisent un score de 1.50.3.

{
  "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"
    ]
  }
}

Returns

Retourne a VARIANT avec les champs response, metadata, et error_message. Le response champ contient un answers objet avec une entrée par question. Les identifiants de questions correspondent exactement à ceux fournis dans le questions paramètre. Chaque réponse inclut un type champ correspondant au type de question : noul, choice, ou score. Les exemples suivants montrent le response champ pour chaque type de question :

  • Questions de Noul : A probability de 0 à 1 estimant la probabilité que la question soit vraie.

    {
      "answers": {
        "needs_escalation": {
          "type": "noul",
          "probability": 0.1
        }
      }
    }
    
  • Questions de choix : A contenant choice l’étiquette ayant la plus grande probabilité et un probabilities objet associant chaque étiquette à sa probabilité. confidence est un chiffre de 0 à 1 indiquant dans quelle mesure l’État soutient l’évaluation. Les probabilities valeurs totalisent 1. Les noms des étiquettes correspondent exactement à ceux fournis dans criteria.

    {
      "answers": {
        "team": {
          "type": "choice",
          "choice": "shipping",
          "probabilities": {
            "shipping": 0.8,
            "billing": 0.1,
            "technical_support": 0.1
          },
          "confidence": 0.9
        }
      }
    }
    
  • Questions de score : A contenant score la moyenne pondérée par probabilité des indices de critère, une legend correspondance des indices de chaînes (comme ) "0"aux descriptions originales des critères, et un probabilities objet associant ces indices aux probabilités. confidence est un chiffre de 0 à 1 indiquant dans quelle mesure l’État soutient l’évaluation. Les probabilities valeurs totalisent 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 cas de succès, metadata.version identifie la version de fonction utilisée et error_message est null.

Sur l’échec, response est null et error_message décrit l’échec. Des types d’arguments invalides ou des définitions de questions non constantes peuvent également provoquer des erreurs de requête.

Exemples

L’exemple suivant montre comment évaluer plusieurs questions en un seul appel. Les réponses générées peuvent varier d’un appel à l’autre.

Évaluez plusieurs types de questions

Cet exemple évalue une liste de produits selon sa catégorie, l’utilisation de matériaux recyclés et l’adéquation de la randonnée par temps pluvieux :

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;

Exemple de réponse :

{
  "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
}