- Categorias:
- Funções de cadeia de caracteres e binários (funções de AI) 
AI_CLASSIFY¶
Nota
AI_CLASSIFY é a versão atualizada do CLASSIFY_TEXT (SNOWFLAKE.CORTEX). Para obter a funcionalidade mais recente, use AI_CLASSIFY.
Classifica texto ou imagens em categorias especificadas por você.
Disponibilidade de região¶
A tabela a seguir mostra as regiões em que você pode usar a função AI_CLASSIFY para texto e imagens:
| Tipo de dados | AWS US West 2 (Oregon) | AWS US East 1 (N. Virginia) | AWS Europe Central 1 (Frankfurt) | AWS Europe West 1 (Ireland) | AWS AP Southeast 2 (Sidney) | AWS AP Northeast 1 (Tokyo) | Azure East US 2 (Virginia) | Azure West Europe (Países Baixos) | AWS (Entre regiões) | 
|---|---|---|---|---|---|---|---|---|---|
| TEXT | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 
| IMAGE | ✔ | ✔ | ✔ | ✔ | 
Sintaxe¶
AI_CLASSIFY( <input> , <list_of_categories> [, <config_object>] )
Argumentos¶
Obrigatório:
- input
- A cadeia de caracteres, imagem ou objeto de prompt que você está classificando. - Para a classificação de texto, a cadeia de caracteres de entrada diferencia maiúsculas de minúsculas. Os resultados podem variar de acordo com a capitalização. 
- list_of_categories
- Uma matriz de categorias com no mínimo um e no máximo 500 valores exclusivos. As categorias diferenciam maiúsculas de minúsculas. - As categorias podem ser cadeias de caracteres simples ou objetos SQL do mesmo tipo. Se estiver usando objetos, você pode fornecer uma descrição para uma ou mais categorias para melhorar a precisão da classificação. - Para cada categoria, especifique o seguinte: - label(obrigatório): o nome da categoria.
- description(opcional): descreve a categoria em no máximo 25 palavras.
 - Nota - As descrições contam como tokens de entrada, o que aumenta o custo da operação de classificação. Para obter mais informações, consulte Considerações sobre custo. 
Opcional:
- config_object
- Definições de configuração especificadas como pares de chave/valor. Chaves compatíveis: - task_description: uma explicação da tarefa de classificação com 50 palavras ou menos. Isso pode ajudar o modelo a entender o contexto da tarefa de classificação e melhorar a precisão.
- output_mode: defina como- 'multi'para classificação com vários rótulos. O padrão é- 'single'para classificação de rótulo único.
- examples: uma lista de objetos de exemplo para aprendizado de poucos disparos. Cada exemplo deve incluir:- input: exemplo de texto para classificar.
- labels: lista de categorias corretas para a entrada.
- explanation: explicação do motivo pelo qual a entrada é mapeada para essas categorias.
 
 
Retornos¶
Um objeto serializado. O campo labels do objeto é uma matriz que especifica a lista de categorias às quais a entrada pertence.
Para a classificação de rótulo único, a matriz labels tem exatamente um elemento. Para a classificação de vários rótulos, o campo labels pode ter vários elementos.
Requisitos de controle de acesso¶
Os usuários devem usar uma função que tenha a função de banco de dados SNOWFLAKE.CORTEX_USER. Para obter mais informações sobre esse privilégio, consulte Privilégios obrigatórios.
Notas de uso¶
Para obter os melhores resultados, siga estas diretrizes:
- Use texto simples em inglês para - inpute- list_of_categories.
- Evite incluir trechos de código, logs ou textos que não estejam em inglês. 
- Evite usar código ou formatação que não seja de código aberto (como linguagens ou formatos proprietários) no texto. O modelo de linguagem subjacente não é treinado em formatos proprietários. 
- Não use abreviações, caracteres especiais ou jargões nos rótulos das categorias. 
- Use categorias descritivas. Evite usar nomes de categorias como «Xa4s3» ou «categoria 1». 
- Use categorias mutuamente exclusivas. 
- Fornecer uma descrição clara da tarefa pode melhorar a precisão quando a relação entre a entrada e as categorias não é clara ou é complexa. 
- A inclusão de descrições de rótulos pode aumentar a precisão, especialmente quando os rótulos são ambíguos ou exigem critérios de seleção específicos. Escreva descrições que destaquem claramente o que distingue cada rótulo dos demais. 
- Cada rótulo, descrição e exemplo aumenta o número de tokens de entrada para cada chamada a AI_CLASSIFY, o que afeta o custo. 
- Exemplos podem ajudar a melhorar a precisão. 
Nota
AI_CLASSIFY adiciona um prompt à sua entrada para gerar sua resposta. Isso aumenta a contagem de tokens além do texto que você forneceu.
Exemplos¶
Os exemplos a seguir usam a função AI_CLASSIFY apenas com os argumentos necessários.
AI_CLASSIFY: texto¶
O exemplo a seguir classifica o prompt em uma de duas categorias, viagem ou culinária:
SELECT AI_CLASSIFY('One day I will see the world', ['travel', 'cooking']);
A seguir está a saída do comando anterior.
'{
  "labels": ["travel"]
 }';
O exemplo a seguir usa a classificação de vários rótulos:
SELECT AI_CLASSIFY(
  'One day I will see the world and learn to cook my favorite dishes',
  ['travel', 'cooking', 'reading', 'driving'],
  {'output_mode': 'multi'}
);
A seguir está a saída do comando anterior.
'{
  "labels": ["travel", "cooking"]
 }';
O exemplo a seguir passa uma descrição da tarefa, descrições de rótulos e alguns exemplos:
SELECT AI_CLASSIFY(
  'One day I will see the world and learn to cook my favorite dishes',
  [
    {'label': 'travel', 'description': 'content related to traveling'},
    {'label': 'cooking'},
    {'label': 'reading'},
    {'label': 'driving'}
  ],
  {
    'task_description': 'Determine topics related to the given text',
    'output_mode': 'multi',
    'examples': [
      {
        'input': 'i love traveling with a good book',
        'labels': ['travel', 'reading'],
        'explanation': 'the text mentions traveling and a good book which relates to reading'
      }
    ]
  });
A seguir está a saída do comando anterior.
'{
  "labels": ["travel", "cooking"]
}';
O exemplo a seguir cria um text_classification_table que contém uma coluna para texto e uma coluna para possíveis categorias para esse texto. A função AI_CLASSIFY é chamada em cada linha da tabela para classificar a cadeia de caracteres na coluna de texto.
CREATE OR REPLACE TEMPORARY TABLE text_classification_table AS
SELECT 'France' AS input, ['North America', 'Europe', 'Asia'] AS classes
UNION ALL
SELECT 'Singapore', ['North America', 'Europe', 'Asia']
UNION ALL
SELECT 'one day I will see the world', ['travel', 'cooking', 'dancing']
UNION ALL
SELECT 'my lobster bisque is second to none', ['travel', 'cooking', 'dancing'];
SELECT input,
    classes,
    AI_CLASSIFY(input, classes):labels AS classification
FROM text_classification_table;
AI_CLASSIFY: imagens¶
Usando entrada de arquivo único:
WITH food_pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
*,
AI_CLASSIFY(img, ['dessert', 'drink', 'main dish', 'side dish']):labels AS classification
FROM food_pictures;
Usando um objeto de prompt construído por PROMPT():
  WITH food_pictures AS (
  SELECT
      TO_FILE(file_url) AS img
  FROM DIRECTORY(@file_stage)
)
SELECT
*,
AI_CLASSIFY(PROMPT('Please help me classify the food within this image {0}', img),
  ['dessert', 'drink', 'main dish', 'side dish']):labels AS classification
FROM food_pictures;
Limitações¶
- As funções do Snowflake AI não são compatíveis com a atualização incremental dinâmica da tabela. 
- As funções do Snowflake AI não funcionam em objetos FILE criados a partir de arquivos nos seguintes tipos de estágios: - Estágios internos com modo de criptografia - TYPE = 'SNOWFLAKE_FULL'
- Estágios externos com qualquer modo criptografado no lado do cliente: - TYPE = 'AWS_CSE'
- TYPE = 'AZURE_CSE'
 
- Estágio do usuário 
- Estágio da tabela 
- Estágio com nomes entre aspas duplas