ai_classifyFunción

Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime

Importante

Esta funcionalidad está en versión preliminar pública y compatible con HIPAA.

Durante la versión preliminar:

La ai_classify() función clasifica el contenido de texto según las etiquetas personalizadas que proporcione. Puede usar nombres de etiqueta simples para la clasificación básica o agregar descripciones de etiquetas e instrucciones para mejorar la precisión de los casos de uso, como el enrutamiento de soporte técnico al cliente, la categorización de documentos y el análisis de contenido.

La función acepta texto o VARIANT salida de otras funciones de IA como ai_parse_document, lo que permite flujos de trabajo que se pueden componer.

Para que una versión de la interfaz de usuario itera en ai_classify, consulte Clasificación.

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.

  • Esta función solo está disponible en algunas regiones, consulte Disponibilidad de funciones de IA.
  • Esta función no está disponible en Azure Databricks SQL Clásico.
  • Consulte la página de precios de Databricks SQL.
  • En Databricks Runtime 15.1 y versiones posteriores, la función ai_classify se admite en Azure Databricks cuadernos, incluidos los cuadernos que se ejecutan como una tarea en un flujo de trabajo de Azure Databricks.
  • Las cargas de trabajo de inferencia por lotes requieren Databricks Runtime 15.4 ML LTS para mejorar el rendimiento.

Sintaxis

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

Versión 1

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

Argumentos

  • content: una expresión VARIANT o STRING. Acepta cualquiera de:

  • labels STRING: expresión que define las etiquetas de clasificación. Puede ser un literal de cadena o cualquier expresión SQL que se evalúe como , STRINGincluida una columna de tabla Delta. Las etiquetas pueden ser:

    • Etiquetas simples: una matriz JSON de nombres de etiqueta.
      ["urgent", "not_urgent"]
      
    • Etiquetas con descripciones: un nombre de etiqueta de asignación de objetos JSON a descripciones. Las descripciones de etiquetas deben tener entre 0 y 1000 caracteres.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Cada etiqueta debe tener entre 1 y 100 caracteres. labels debe contener al menos 2 etiquetas y no más de 500 etiquetas. Para las taxonomías mayores de 500 etiquetas, consulte clasificación con más de 500 etiquetas.

  • options: una opción que MAP<STRING, STRING> contiene las opciones de configuración:

    • version: cambio de versión para admitir la migración ("1.0" para el comportamiento de la versión 1, "2.0" para el comportamiento de la versión 2). El valor predeterminado se basa en los tipos de entrada, pero vuelve a "1.0".
    • instructions: descripción global de la tarea y el dominio para mejorar la calidad de la clasificación. Debe tener menos de 20 000 caracteres.
    • multilabel: se establece en "true" para devolver varias etiquetas cuando se aplican varias categorías. El valor predeterminado es "false" (clasificación de etiqueta única).

Versión 1

  • content STRING: expresión que contiene el texto que se va a clasificar.

  • labels ARRAY<STRING>: literal con las etiquetas de clasificación de salida esperadas. Debe contener al menos 2 y no más de 20 elementos. Cada etiqueta debe tener entre 1 y 50 caracteres.

  • options: una opción que MAP<STRING, STRING> contiene las opciones de configuración:

    • version: cambio de versión para admitir la migración ("1.0" para el comportamiento de la versión 1, "2.0" para el comportamiento de la versión 2). El valor predeterminado se basa en los tipos de entrada, pero vuelve a "1.0".

Devoluciones

Devuelve un VARIANT objeto que contiene:

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

El response campo contiene:

  • Modo de etiqueta única (valor predeterminado): matriz con un elemento que contiene la mejor etiqueta coincidente
  • Modo de varias etiquetas (multilabel: "true"): matriz con varias etiquetas cuando se aplican varias categorías
  • Los nombres de etiqueta coinciden exactamente con los proporcionados en el labels parámetro

Devuelve NULL si content es NULL o si el contenido no se puede clasificar.

Versión 1

Devuelve un STRINGobjeto . El valor coincide con una de las cadenas proporcionadas en el argumento labels.

Devuelve NULL si content es NULL o si el contenido no se puede clasificar.

Ejemplos

Etiquetas simples: solo nombres de etiqueta

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

Etiquetas con descripciones

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

Etiquetas de la tabla Delta

Pase etiquetas de una tabla Delta mediante la conversión en una cadena JSON. Por ejemplo, dada una tabla de etiquetas con el esquema news_topics(topic STRING, description STRING), puede pasar las etiquetas a como se indica a ai_classify continuación:

SELECT
  ai_classify(
    "Leicester City Wins Premier League Title at 5000-1 Odds",
    l.labels,
    map('version', '2.0')
  ) AS classification
FROM (
  SELECT to_json(map_from_entries(collect_list(struct(topic, description)))) AS labels
  FROM news_topics
) l;

Uso de instrucciones 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
 }

Clasificación de varias etiquetas

> 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('version', '2.0','multilabel', 'true')
  );
 {
   "response": ["billing_issue", "product_defect"],
   "error": null
 }

Capacidad de redacción con 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;

Clasificación por lotes

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

Clasificación con más de 500 etiquetas

Para clasificar con más de 500 etiquetas, se recomienda insertar los documentos y etiquetas, recuperar las etiquetas k principales por documento y, a continuación, ejecutar ai_classify en el subconjunto más pequeño.

Consulte Tutorial: Clasificación de documentos con más de 500 etiquetas para ver un tutorial paso a paso.

Versión 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;

Limitaciones

Limitaciones de la versión 2:

  • Esta función no está disponible en Azure Databricks SQL Clásico.

  • Esta función no se puede usar con Views.

  • Los nombres de etiqueta deben tener entre 1 y 100 caracteres cada uno.

  • El labels parámetro debe contener entre 2 y 500 etiquetas únicas.

  • Las descripciones de etiquetas deben tener entre 0 y 1000 caracteres cada una.

  • El tamaño de contexto total máximo es de 128 000 tokens.

Versión 1

Limitaciones de la versión 1:

  • Esta función no está disponible en Azure Databricks SQL Clásico.

  • Esta función no se puede usar con Views.

  • Los nombres de etiqueta deben tener entre 1 y 50 caracteres.

  • La labels matriz debe contener entre 2 y 20 etiquetas.

  • La content entrada debe tener menos de 128 000 tokens (unos 300 000 caracteres).