- Categorias:
Funções de cadeia de caracteres e binários (Large Language Model)
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.
Se você especificar valores inválidos para os argumentos, a função retornará um erro. Para obter uma lista de possíveis erros, consulte Condições de erro.
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
input
elist_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.
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']),
'{
"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'}),
'{
"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'
}
]
}),
'{
"labels": ["travel", "cooking"]
}';
'{
"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