Função ai_classify

Aplica-se a:marcado como sim Databricks SQL marcado como sim Databricks Runtime

Importante

Esta funcionalidade está em Pré-visualização Pública e em conformidade com a HIPAA.

Durante a antevisão:

A ai_classify() função classifica o conteúdo do texto de acordo com etiquetas personalizadas que fornece. Pode usar nomes simples de etiquetas para classificação básica, ou adicionar descrições e instruções de etiquetas para melhorar a precisão em casos de uso como encaminhamento de apoio ao cliente, categorização de documentos e análise de conteúdos.

A função aceita texto ou VARIANT saída de outras funções de IA, como ai_parse_document, permitindo fluxos de trabalho componíveis.

Para uma versão da interface para iterar em ai_classify, veja Classificação.

Requisitos

Licença Apache 2.0

Os modelos subjacentes que poderão ser usados atualmente estão licenciados sob a Licença Apache 2.0, Direitos de Autor © da Apache Software Foundation. Os clientes são responsáveis por garantir a conformidade com as licenças de modelo aplicáveis.

A Databricks recomenda a revisão dessas licenças para garantir a conformidade com quaisquer termos aplicáveis. Se surgirem modelos no futuro com melhor desempenho de acordo com os benchmarks internos da Databricks, a Databricks poderá alterar o modelo (e a lista de licenças aplicáveis fornecida nesta página).

O modelo que alimenta esta função está disponível através das APIs Model Serving Foundation Model Model. Consulte Termos de modelo Aplicável para informações sobre quais modelos estão disponíveis nos Databricks e as licenças e políticas que regem a utilização desses modelos.

Se surgirem no futuro modelos com melhor desempenho de acordo com os benchmarks internos da Databricks, a Databricks poderá alterar os modelos e atualizar a documentação.

  • Esta função está disponível apenas em algumas regiões, veja disponibilidade de funções de IA.
  • Esta função não está disponível no Azure Databricks SQL Classic.
  • Consulte a página de preços do Databricks SQL.
  • No Databricks Runtime 15.1 e superior, essa função é suportada em blocos de anotações Databricks, incluindo blocos de anotações que são executados como uma tarefa em um fluxo de trabalho Databricks.
  • As cargas de trabalho de inferência em lote exigem o Databricks Runtime 15.4 ML LTS para melhorar o desempenho.

Sintaxe

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

Versão 1

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

Argumentos

  • content: Uma expressão VARIANT ou STRING. Aceita um:

  • labels: Um STRING literal que define as etiquetas de classificação. As etiquetas podem ser:

    • Etiquetas simples: Um array JSON de nomes de etiquetas.
      ["urgent", "not_urgent"]
      
    • Rótulos com descrições: Um objeto JSON a mapear nomes de etiquetas para descrições. As descrições das etiquetas devem ter entre 0 e 1000 caracteres.
      {
        "billing_error": "Payment, invoice, or refund issues",
        "product_defect": "Any malfunction, bug, or breakage",
        "account_issue": "Login failures, password resets"
      }
      

    Cada rótulo deve ter de 1 a 100 caracteres. labels devem conter pelo menos 2 etiquetas, e não mais do que 500 etiquetas.

  • options: Um opcional MAP<STRING, STRING> contendo opções de configuração:

    • version: Mudança de versão para suportar migração ("1.0" para comportamento v1, "2.0" para comportamento v2). O padrão baseia-se nos tipos de entrada, mas voltará a "1.0"ser .
    • instructions: Descrição global da tarefa e do domínio para melhorar a qualidade da classificação. Deve ter menos de 20.000 caracteres.
    • multilabel: Defina para "true" devolver múltiplas etiquetas quando se aplicam várias categorias. O padrão é "false" (classificação de etiqueta única).

Versão 1

  • content: Uma STRING expressão contendo o texto a classificar.

  • labels: Um ARRAY<STRING> literal com as etiquetas de classificação de saída esperadas. Deve conter pelo menos 2 elementos, e não mais de 20 elementos. Cada etiqueta deve ter entre 1 a 50 caracteres.

  • options: Um opcional MAP<STRING, STRING> contendo opções de configuração:

    • version: Mudança de versão para suportar migração ("1.0" para comportamento v1, "2.0" para comportamento v2). O padrão baseia-se nos tipos de entrada, mas voltará a "1.0"ser .

Devoluções

Devolve um VARIANT que contém:

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

O response campo contém:

  • Modo de etiqueta única (por defeito): Um array com um elemento contendo a etiqueta de melhor correspondência
  • Modo multi-rótulo (multilabel: "true"): Um array com múltiplas etiquetas quando se aplicam várias categorias
  • Os nomes das etiquetas correspondem exatamente aos fornecidos no labels parâmetro

Devolve NULL se content for NULL ou se o conteúdo não puder ser classificado.

Versão 1

Devolve um STRINGficheiro . O valor corresponde a uma das cadeias de caracteres fornecidas no labels argumento.

Devolve NULL se content for NULL ou se o conteúdo não puder ser classificado.

Exemplos

Rótulos simples - apenas nomes de etiquetas

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

Rótulos com descrições

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

Utilização de instruções globais

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

Classificação multi-rótulo

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

Composabilidade com 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;

Classificação por lotes

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

Versão 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;

Limitações

Limitações da versão 2:

  • Esta função não está disponível no Azure Databricks SQL Classic.

  • Esta função não pode ser usada com as Vistas.

  • Os nomes das etiquetas devem ter entre 1 e 100 caracteres cada.

  • O labels parâmetro deve conter entre 2 e 500 rótulos únicos.

  • As descrições das etiquetas devem ter entre 0 e 1.000 caracteres cada.

  • O tamanho máximo total de contexto é de 128.000 tokens.

Versão 1

Limitações da versão 1:

  • Esta função não está disponível no Azure Databricks SQL Classic.

  • Esta função não pode ser usada com as Vistas.

  • Os nomes das etiquetas devem ter entre 1 e 50 caracteres cada.

  • O labels array deve conter entre 2 e 20 etiquetas.

  • A content entrada deve ser inferior a 128.000 tokens (cerca de 300.000 caracteres).