Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime
Importante
Esta funcionalidad está en versión preliminar pública y compatible con HIPAA.
Durante la versión preliminar:
- El modelo de lenguaje subyacente puede controlar varios idiomas, pero esta función de IA está optimizada para inglés.
- Consulte Características con disponibilidad regional limitada para la disponibilidad regional de AI Functions.
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_classifyse 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
Versión 2 (recomendado)
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
Versión 2 (recomendado)
content: una expresiónVARIANToSTRING. Acepta cualquiera de:- Texto sin formato como
STRING - Objeto
VARIANTgenerado por otra función de IA (por ejemploai_parse_document, oai_extract)
- Texto sin formato como
labelsSTRING: 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.
labelsdebe 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.- Etiquetas simples: una matriz JSON de nombres de etiqueta.
options: una opción queMAP<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
contentSTRING: expresión que contiene el texto que se va a clasificar.labelsARRAY<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 queMAP<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
Versión 2 (recomendado)
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
labelspará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
Versión 2 (recomendado)
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
Versión 2 (recomendado)
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
labelspará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
labelsmatriz debe contener entre 2 y 20 etiquetas.La
contententrada debe tener menos de 128 000 tokens (unos 300 000 caracteres).