Fonction ai_classify

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

Important

Cette fonctionnalité est en préversion publique et conforme HIPAA.

Pendant l'aperçu :

La ai_classify() fonction classifie le contenu du texte en fonction des étiquettes personnalisées que vous fournissez. Vous pouvez utiliser des noms d’étiquettes simples pour la classification de base ou ajouter des descriptions d’étiquettes et des instructions pour améliorer la précision des cas d’usage tels que le routage du support client, la catégorisation des documents et l’analyse du contenu.

La fonction accepte du texte ou VARIANT de la sortie d’autres fonctions IA telles que ai_parse_document, ce qui active les flux de travail composables.

Pour qu’une version de l’interface utilisateur itérera ai_classify, consultez Classification.

Spécifications

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 les modèles émergent à l’avenir qui fonctionnent mieux en fonction des benchmarks internes de Databricks, Databricks peut modifier les modèles et mettre à jour la documentation.

  • Cette fonction est disponible uniquement dans certaines régions, consultez la disponibilité des fonctions IA.
  • Cette fonction n’est pas disponible sur Azure Databricks SQL Classic.
  • Consultez la page de tarification de Databricks SQL.
  • Dans Databricks Runtime 15.1 et versions ultérieures, cette fonction est prise en charge dans les notebooks Databricks, notamment ceux exécutés en tant que tâche dans un workflow Databricks.
  • Les charges de travail d’inférence par lots nécessitent Databricks Runtime 15.4 ML LTS pour améliorer les performances.

Syntaxe

ai_classify(
    content VARIANT | STRING,
    labels STRING,
    [options MAP<STRING, STRING>]
) RETURNS VARIANT

Édition 1

ai_classify(
    content STRING,
    labels ARRAY<STRING>,
    [options MAP<STRING, STRING>]
) RETURNS STRING

Les arguments

  • content : Une expression VARIANT ou STRING. Accepte soit :

  • labels: littéral STRING définissant les étiquettes de classification. Les étiquettes peuvent être les suivantes :

    • Étiquettes simples : tableau JSON de noms d’étiquettes.
      ["urgent", "not_urgent"]
      
    • Étiquettes avec descriptions : noms d’étiquettes de mappage d’objets JSON à des descriptions. Les descriptions d’étiquette doivent comporter 0 à 1 000 caractères.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Chaque étiquette doit comporter 1 à 100 caractères. labels doit contenir au moins 2 étiquettes et pas plus de 500 étiquettes.

  • options: option facultative MAP<STRING, STRING> contenant les options de configuration :

    • version: commutateur de version pour prendre en charge la migration ( pour le"1.0" comportement v1, "2.0" pour le comportement v2). La valeur par défaut est basée sur les types d’entrée, mais revient à "1.0".
    • instructions: description globale de la tâche et du domaine pour améliorer la qualité de la classification. Doit être inférieur à 20 000 caractères.
    • multilabel: définissez la valeur pour "true" retourner plusieurs étiquettes lorsque plusieurs catégories s’appliquent. La valeur par défaut est "false" (classification à étiquette unique).

Édition 1

  • content STRING: expression contenant le texte à classer.

  • labels: littéral ARRAY<STRING> avec les étiquettes de classification de sortie attendues. Doit contenir au moins 2 éléments, et pas plus de 20 éléments. Chaque étiquette doit comporter 1 à 50 caractères.

  • options: option facultative MAP<STRING, STRING> contenant les options de configuration :

    • version: commutateur de version pour prendre en charge la migration ( pour le"1.0" comportement v1, "2.0" pour le comportement v2). La valeur par défaut est basée sur les types d’entrée, mais revient à "1.0".

Retours

Retourne un VARIANT conteneur :

{
  "response": ["label_name"], // Array with single label (or multiple if multilabel=true)
  "error_message": null // null on success, or error message on failure
}

Le response champ contient :

  • Mode à étiquette unique (valeur par défaut) : tableau avec un élément contenant la meilleure étiquette correspondante
  • Mode multi-étiquette (multilabel: "true") : tableau avec plusieurs étiquettes lorsque plusieurs catégories s’appliquent
  • Les noms d’étiquette correspondent exactement à ceux fournis dans le labels paramètre

Retourne NULL si content c’est NULL le cas ou si le contenu ne peut pas être classé.

Édition 1

Retourne un STRING. La valeur correspond à l’une des chaînes fournies dans l’argument labels.

Retourne NULL si content c’est NULL le cas ou si le contenu ne peut pas être classé.

Exemples

Étiquettes simples : noms d’étiquettes uniquement

> SELECT ai_classify(
    'My password is leaked.',
    '["urgent", "not_urgent"]'
  );
 {
   "response": ["urgent"],
   "error": null
 }

Étiquettes avec descriptions

> SELECT ai_classify(
    'Customer cannot complete checkout due to payment processing error.',
    '{
      "billing_error": "Payment, invoice, or refund issues",
      "product_defect": "Any malfunction, bug, or breakage",
      "account_issue": "Login failures, password resets",
      "feature_request": "Customer suggestions for improvements"
    }'
  );
 {
   "response": ["billing_error"],
   "error": null
 }

Utilisation d’instructions globales

> SELECT ai_classify(
    'User reports app crashes on startup after update.',
    '["critical", "high", "medium", "low"]',
    MAP('instructions', 'Classify bug severity based on user impact and frequency.')
  );
 {
   "response": ["critical"],
   "error": null
 }

Classification multi-étiquettes

> SELECT ai_classify(
    'Customer wants refund and reports product arrived broken.',
    '{
      "billing_issue": "Payment or refund requests",
      "product_defect": "Damaged or malfunctioning items",
      "shipping_issue": "Delivery problems"
    }',
    MAP('multilabel', 'true')
  );
 {
   "response": ["billing_issue", "product_defect"],
   "error": null
 }

Composabilité avec ai_parse_document

> WITH parsed_docs AS (
    SELECT
      path,
      ai_parse_document(
        content,
        MAP('version', '2.0')
      ) AS parsed_content
    FROM READ_FILES('/Volumes/support/tickets/', format => 'binaryFile')
  )
  SELECT
    path,
    ai_classify(
      parsed_content,
      '["billing_error", "product_defect", "account_issue", "feature_request"]',
      MAP('instructions', 'Customer support ticket classification.')
    ) AS ticket_category
  FROM parsed_docs;

Classification par lots

> SELECT
    description,
    ai_classify(
      description,
      '["clothing", "shoes", "accessories", "furniture", "electronics"]'
    ) AS category
  FROM products
  LIMIT 10;

Édition 1

> SELECT ai_classify("My password is leaked.", ARRAY("urgent", "not urgent"));
  urgent

> SELECT
    description,
    ai_classify(description, ARRAY('clothing', 'shoes', 'accessories', 'furniture')) AS category
  FROM
    products
  LIMIT 10;

Limites

Limitations de la version 2 :

  • Cette fonction n’est pas disponible sur Azure Databricks SQL Classic.

  • Cette fonction ne peut pas être utilisée avec views.

  • Les noms d’étiquette doivent être de 1 à 100 caractères chacun.

  • Le labels paramètre doit contenir entre 2 et 500 étiquettes uniques.

  • Les descriptions d’étiquette doivent être de 0 à 1 000 caractères chacune.

  • La taille totale maximale du contexte est de 128 000 jetons.

Édition 1

Limitations de la version 1 :

  • Cette fonction n’est pas disponible sur Azure Databricks SQL Classic.

  • Cette fonction ne peut pas être utilisée avec views.

  • Les noms d’étiquette doivent être de 1 à 50 caractères chacun.

  • Le labels tableau doit contenir entre 2 et 20 étiquettes.

  • L’entrée content doit être inférieure à 128 000 jetons (environ 300 000 caractères).