Categorias:

Funções de cadeia de caracteres e binários (Large Language Model)

CLASSIFY_TEXT (SNOWFLAKE.CORTEX)

Classifica o texto de forma livre em categorias fornecidas pelo usuário.

Sintaxe

SNOWFLAKE.CORTEX.CLASSIFY_TEXT( <input> , <list_of_categories>, [ <options> ] )
Copy

Argumentos

Obrigatório:

input

Cadeia de caracteres a ser classificada. A cadeia de caracteres de entrada diferencia maiúsculas de minúsculas. É possível obter resultados diferentes para a mesma cadeia de caracteres que usa capitalização diferente.

list_of_categories

Matriz que representa as categorias. Deve conter no mínimo duas e no máximo 100 categorias exclusivas. As categorias diferenciam maiúsculas de minúsculas. Se esses requisitos não forem atendidos, a função retornará um erro. Para uma lista completa de erros, consulte Condições de erro.

As categorias podem ser cadeias de caracteres simples ou objetos SQL; todas as categorias devem ser do mesmo tipo. Usando objetos, é possível fornecer uma descrição e exemplos de cada categoria, fornecendo um contexto que pode ajudar a melhorar a precisão da classificação. Não é obrigatório fornecer descrições ou exemplos para cada categoria; você tem a liberdade de fornecer uma descrição, exemplos, ambos ou nenhum para cada categoria.

  • label: o nome da categoria. Essa chave é necessária.

  • description: uma descrição da categoria. As descrições não devem ter mais de 25 palavras (1 a 2 frases). Essa chave é opcional.

  • examples: uma matriz de exemplos que sejam representativos da categoria. Normalmente, não são necessários mais de cinco exemplos, mas há um limite de 20 exemplos por categoria. O número de exemplos não precisa ser o mesmo para cada categoria. Essa chave é opcional.

Nota

As descrições e os exemplos contam como tokens de entrada, o que aumenta o custo da operação de classificação. Leia mais em Considerações sobre custo.

Opcional:

options

Um objeto com configuração opcional (como pares chave-valor) para a operação de classificação. Atualmente, a única chave disponível é:

  • task_description: uma cadeia de caracteres com uma breve explicação da tarefa de classificação de texto. As descrições de tarefas não devem conter mais do que 50 palavras (3 a 4 frases).

Retornos

Retorna uma cadeia de caracteres com um objeto JSON. O objeto JSON contém a categoria na qual o prompt de entrada foi classificado. Se argumentos inválidos forem fornecidos, um erro será retornado. Para detalhes sobre os erros, consulte Condições de erro.

Requisitos de controle de acesso

Os usuários devem usar uma função que tenha a função do banco de dados SNOWFLAKE.CORTEX_USER. Consulte Privilégios obrigatórios para obter mais informações sobre esse privilégio.

Notas de uso

Para um desempenho ideal, siga estas diretrizes:

  • Use texto em inglês simples para entradas e categorias.

  • Limite a quantidade de texto que não seja em inglês simples no texto de entrada. Por exemplo, tente limitar conteúdo como trechos de código ou logs na entrada de texto.

  • O texto não deve conter código ou formatos que não sejam de código aberto (linguagens específicas da empresa, formatos proprietários etc.). A função não retornará um erro, mas os resultados podem não ser os esperados.

  • Não use abreviações, caracteres especiais ou jargões nos rótulos das categorias.

  • As categorias devem ser descritivas. Por exemplo, usar uma categoria como Xa4s3 ou category 1 não produzirá bons resultados.

  • As categorias devem ser mutuamente exclusivas.

  • A inclusão de uma descrição clara da tarefa pode melhorar a precisão quando a relação entre o texto de entrada e as categorias for ambígua ou diferenciada.

  • A adição de descrições de rótulos pode melhorar a precisão nos casos em que as descrições são ambíguas ou quando uma lógica específica deve ser seguida ao selecionar um determinado rótulo. Ao escrever descrições, concentre-se nos principais aspectos que distinguem um determinado rótulo dos demais.

  • Exemplos podem ajudar a melhorar a precisão.

Exemplos

Como usar argumentos necessários

Esses exemplos ilustram como usar a função CLASSIFY_TEXT apenas com os argumentos necessários.

O exemplo a seguir classifica o prompt em uma das duas categorias, travel ou cooking:

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT('One day I will see the world', ['travel', 'cooking']);
Copy
{
  "label": "travel"
}

O exemplo a seguir cria uma tabela, text_classification_table, que contém uma coluna para texto e uma coluna para possíveis categorias para esse texto. A função CLASSIFY_TEXT é 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,
       SNOWFLAKE.CORTEX.CLASSIFY_TEXT(input, classes)['label'] as classification
FROM text_classification_table;
Copy

Como usar argumentos opcionais

Esses exemplos ilustram como usar a função CLASSIFY_TEXT com descrições e exemplos de categorias e/ou uma descrição de tarefa.

O exemplo a seguir classifica o prompt em uma das três categorias (viagem, culinária ou condicionamento físico), fornecendo apenas uma descrição da tarefa:

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
  'When I am not at work, I love creating recipes using every day ingredients',
  ['travel', 'cooking', 'fitness'],
  {
    'task_description': 'Return a classification of the Hobby identified in the text'
  }
);
Copy
{
  "label": "cooking"
}

O exemplo a seguir classifica o prompt em uma das categorias viagem, culinária ou condicionamento físico, usando todas as opções.

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
  'I love running every morning before the world wakes up',
  [{
    'label': 'travel',
    'description': 'Hobbies related to going from one place to another',
    'examples': ['I like flying to Europe', 'Every summer we go to Italy' , 'I love traveling to learn new cultures']
  },{
    'label': 'cooking',
    'description': 'Hobbies related to preparing food',
    'examples': ['I like learning about new ingredients', 'You must bring your soul to the recipe' , 'Baking is my therapy']
    },{
    'label': 'fitness',
    'description': 'Hobbies related to being active and healthy',
    'examples': ['I cannot live without my Strava app', 'Running is life' , 'I go to the Gym every day']
    }],
  {'task_description': 'Return a classification of the Hobby identified in the text'})
Copy
{
  "label": "fitness"
}

O exemplo a seguir classifica o prompt em uma das três categorias (viagem, culinária ou condicionamento físico) usando todas as opções. No entanto, a descrição ou os exemplos são omitidos para algumas categorias, e o número de exemplos varia.

SELECT SNOWFLAKE.CORTEX.CLASSIFY_TEXT(
  'I love running every morning before the world wakes up',
  [{
    'label': 'travel',
    'description': 'Hobbies related to going from one place to another',
    'examples': ['I like flying to Europe']
  },{
    'label': 'cooking',
    'examples': ['I like learning about new ingredients', 'You must bring your soul to the recipe' , 'Baking is my therapy']
    },{
    'label': 'fitness',
    'description': 'Hobbies related to being active and healthy'
    }],
  {'task_description': 'Return a classification of the Hobby identified in the text'})
Copy
{
  "label": "fitness"
}