- Catégories :
Fonctions de chaîne et fonctions binaires (Large Language Model)
AI_CLASSIFY¶
Note
AI_CLASSIFY est la version actualisée de CLASSIFY_TEXT (SNOWFLAKE.CORTEX). Pour obtenir les dernières fonctionnalités, utilisez AI_CLASSIFY.
Classe le texte ou les images dans des catégories que vous spécifiez.
Disponibilité de la région¶
La table suivante indique les régions où vous pouvez utiliser la fonction AI_CLASSIFY pour le texte et les images :
Type de données
|
AWS US West 2
(Oregon)
|
AWS US East 1
(Virginie du Nord)
|
AWS Europe Central 1
(Francfort)
|
AWS Europe Ouest 1
(Irlande)
|
AWS AP Sud-Est 2
(Sydney)
|
AWS AP Nord-Est 1
(Tokyo)
|
Azure Est US 2
(Virginie)
|
Azure Europe de l’Ouest
(Pays-Bas)
|
AWS
(inter-régionale)
|
---|---|---|---|---|---|---|---|---|---|
TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
IMAGE
|
✔ |
✔ |
✔ |
✔ |
Syntaxe¶
AI_CLASSIFY( <input> , <list_of_categories> [, <config_object>] )
Arguments¶
Obligatoire :
input
L’objet de la chaîne, de l’image ou du prompt que vous classez.
Pour la classification de texte, la chaîne d’entrée est sensible à la casse. Les résultats peuvent varier en fonction des majuscules.
list_of_categories
Un tableau de catégories avec au moins une valeur unique et jusqu’à 500 maximum. Les catégories sont sensibles à la casse.
Les catégories peuvent être de simples chaînes ou des objets SQL de même type. Si vous utilisez des objets, vous pouvez fournir une description pour une ou plusieurs catégories afin d’améliorer la précision de la classification.
Pour chaque catégorie, précisez les éléments suivants :
label
(Obligatoire) : nom de la catégorie.description
(Facultatif) : décrit la catégorie en 25 mots maximum.
Note
Les descriptions comptent comme des jetons d’entrée, ce qui augmente le coût de l’opération de classification. Pour plus d’informations, voir Considérations relatives aux clients.
Facultatif :
config_object
Paramètres de configuration spécifiés sous forme de paires clés/valeurs. Clés prises en charge :
task_description
: explication de la tâche de classification en 50 mots ou moins. Cela peut aider le modèle à comprendre le contexte de la tâche de classification et à améliorer sa précision.output_mode
: défini sur'multi'
pour la classification à plusieurs étiquettes. La valeur par défaut est'single'
pour la classification à étiquette unique.examples
: liste d’exemples d’objets pour l’apprentissage en quelques clics. Chaque exemple doit comprendre :input
: exemple de texte à classer.labels
: liste des catégories correctes pour l’entrée.explanation
: explication de la raison pour laquelle l’entrée est mappée dans ces catégories.
Renvoie¶
Un objet sérialisé. Le champ labels
de l’objet est un tableau qui spécifie la liste des catégories auxquelles l’entrée appartient.
Pour la classification à étiquette unique, le tableau labels
comporte exactement un élément. Pour la classification à plusieurs étiquettes, le champ labels
peut comporter plusieurs éléments.
Si vous spécifiez des valeurs non valides pour les arguments, la fonction renvoie une erreur. Pour une liste des erreurs possibles, voir Conditions d’erreur.
Exigences en matière de contrôle d’accès¶
Les utilisateurs doivent utiliser un rôle qui possède le rôle de base de données SNOWFLAKE.CORTEX_USER. Pour plus d’informations sur ce privilège, voir Privilèges requis.
Notes sur l’utilisation¶
Pour obtenir les meilleurs résultats, suivez les lignes directrices suivantes :
Utilisez du texte clair en français pour
input
etlist_of_categories
.Évitez d’inclure des extraits de code, des connecteurs ou du texte non français.
Évitez d’utiliser dans le texte des codes ou des formats qui ne sont pas libres (tels que des langues ou des formats propriétaires). Le modèle de langage sous-jacent n’est pas formé sur des formats propriétaires.
N’utilisez pas d’abréviations, de caractères spéciaux ou de jargon dans les étiquettes de catégorie.
Utilisez des catégories descriptives. Évitez d’utiliser des noms de catégories tels que « Xa4s3 » ou « catégorie 1 ».
Utilisez des catégories qui s’excluent mutuellement.
Fournir une description claire de la tâche peut améliorer la précision lorsque la relation entre l’entrée et les catégories n’est pas claire ou complexe.
L’ajout de descriptions d’étiquettes peut améliorer la précision, en particulier lorsque les étiquettes sont ambiguës ou nécessitent des critères de sélection spécifiques. Rédigez des descriptions qui mettent clairement en évidence ce qui distingue chaque étiquette des autres.
Chaque étiquette, description et exemple augmente le nombre de jetons d’entrée pour chaque appel à AI_CLASSIFY, ce qui a une incidence sur le coût.
Des exemples peuvent aider à améliorer la précision.
Exemples¶
Les exemples suivants utilisent la fonction AI_CLASSIFY avec les seuls arguments requis.
AI_CLASSIFY : texte¶
L’exemple suivant classe le prompt dans l’une des deux catégories, voyage ou cuisine :
SELECT AI_CLASSIFY('One day I will see the world', ['travel', 'cooking']),
'{
"labels": ["travel"]
}';
L’exemple suivant utilise la classification à plusieurs étiquettes :
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"]
}';
L’exemple suivant transmet une description de la tâche, des descriptions d’étiquettes et quelques exemples :
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"]
}'
L’exemple suivant crée une text_classification_table
qui contient une colonne pour le texte et une colonne pour les catégories possibles pour ce texte. La fonction AI_CLASSIFY est appelée sur chaque ligne de la table pour classer la chaîne dans la colonne de texte.
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 : images¶
Utilisation d’un fichier d’entrée unique :
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;
Utilisation d’un objet de prompt construit par 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;
Limitations¶
Les fonctions AI de Snowflake ne prennent pas en charge l’actualisation incrémentielle des tables dynamiques.
Les fonctions AI de Snowflake ne fonctionnent pas sur les objets FILE créés à partir de fichiers dans les zones de préparation suivantes :
Zones de préparation interne avec mode de chiffrement
TYPE = 'SNOWFLAKE_FULL'
Zones de préparation externe avec n’importe quel mode de chiffrement côté client :
TYPE = 'AWS_CSE'
TYPE = 'AZURE_CSE'
Zone de préparation de l’utilisateur
Zone de préparation de table
Zone de préparation avec des noms entre guillemets doubles