Partilhar via


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 Aplicáveis para desenvolvedores de modelos para obter 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).