Snowflake Cortex AISQL (y compris les fonctions LLM)¶
Utilisez Cortex AISQL dans Snowflake Cortex pour exécuter des analyses non structurées sur du texte et des images avec les LLMs leaders de l’industrie de OpenAI, Anthropic, Meta, Mistral AI et DeepSeek. Cortex AISQL prend en charge des cas d’utilisation tels que les suivants :
Extraction d’entités pour enrichir les métadonnées et rationaliser la validation
Agrégation d’informations sur les tickets des clients
Filtrage et classification du contenu par la langue naturelle
Analyse des sentiments et des aspects pour l’amélioration des services
Traduction et localisation des contenus multilingues
Analyse des documents pour l’analytique et les pipelines RAG
Tous les modèles sont entièrement hébergés dans Snowflake, ce qui garantit la performance, l’évolutivité et la gouvernance tout en gardant vos données sécurisées et en place.
Fonctions disponibles¶
Les fonctionnalités de Cortex de Snowflake sont fournies sous forme de fonctions SQL et sont également disponibles en Python. Les fonctions de Cortex AISQL peuvent être regroupées dans les catégories suivantes :
Fonctions AISQL¶
Les fonctions spécifiques aux tâches sont spécialement conçues et gérées pour automatiser les tâches de routine, comme les résumés simples et les traductions rapides, qui ne nécessitent aucune exigence de personnalisation.
AI_COMPLETE : Génère un achèvement pour une chaîne de texte ou une image donnée en utilisant un LLM sélectionné. Utilisez cette fonction pour la plupart des tâches de l’AI générative.
Il s’agit de la version actualisée de COMPLETE (SNOWFLAKE.CORTEX).
AI_CLASSIFY : Classe le texte ou les images dans des catégories définies par l’utilisateur.
Il s’agit de la version actualisée de CLASSIFY_TEXT (SNOWFLAKE.CORTEX) qui prend en charge la classification à plusieurs étiquettes et la classification d’images.
AI_FILTER : Renvoie True ou False pour une entrée de texte ou d’image donnée, ce qui vous permet de filtrer les résultats dans les clauses
SELECT
,WHERE
ouJOIN. .. ON
.AI_AGG : Agrège une colonne de texte et renvoie des aperçus sur plusieurs lignes en fonction d’un prompt défini par l’utilisateur. Cette fonction n’est pas soumise aux limites des fenêtres contextuelles.
AI_SUMMARIZE_AGG : Agrège une colonne de texte et renvoie un résumé sur plusieurs lignes. Cette fonction n’est pas soumise aux limites des fenêtres contextuelles.
AI_SIMILARITY : Calcule la similarité d’intégration entre deux entrées.
PARSE_DOCUMENT (SNOWFLAKE.CORTEX) : Extrait du texte (en utilisant le mode OCR) ou du texte avec des informations de mise en page (en utilisant le mode LAYOUT) à partir de documents dans une zone de préparation interne ou externe.
TRANSLATE : Traduit le texte entre les langues prises en charge.
SENTIMENT (SNOWFLAKE.CORTEX) : Extrait les notes de sentiment d’un texte.
EXTRACT_ANSWER (SNOWFLAKE.CORTEX) : Extrait la réponse à une question à partir de données non structurées, à condition que les données pertinentes existent.
SUMMARIZE (SNOWFLAKE.CORTEX) : Renvoie un résumé du texte que vous avez spécifié.
Note
Les fonctions anciennement désignées sous le nom de « fonctionsLLM » sont listées dans l’espace de noms « SNOWFLAKE.CORTEX »
Fonctions d’assistance¶
Les fonctions d’assistance sont des fonctions spécialement conçues et gérées qui réduisent les cas d’échec lors de l’exécution d’autres fonctions AISQL, par exemple en obtenant le nombre de jetons dans une invite de saisie pour garantir que l’appel ne dépasse pas une limite de modèle.
COUNT_TOKENS (SNOWFLAKE.CORTEX) : Avec un texte d’entrée, renvoie le nombre de jetons en fonction du modèle ou de la fonction Cortex spécifiée.
TRY_COMPLETE (SNOWFLAKE.CORTEX) : Fonctionne comme la fonction COMPLETE, mais renvoie NULL lorsque la fonction n’a pas pu s’exécuter, au lieu d’un code d’erreur.
Cortex Guard¶
Cortex Guard est une option de la fonction COMPLETE conçue pour filtrer les éventuelles réponses dangereuses et nuisibles d’un modèle de langue. Cortex Guard est actuellement construit avec Llama Guard 3 de Meta. Cortex Guard fonctionne en évaluant les réponses d’un modèle de langage avant que cette sortie ne soit renvoyée à l’application. Une fois que vous avez activé Cortex Guard, les réponses du modèle linguistique qui peuvent être associées à des crimes violents, à la haine, au contenu sexuel, à l’automutilation, etc. sont automatiquement filtrées. Voir arguments COMPLETE pour la syntaxe et les exemples.
Note
L’utilisation de Cortex Guard entraîne des frais de calcul basés sur le nombre de jetons d’entrée traités.
Considérations en matière de performances¶
Les fonctions de Cortex AISQL sont optimisées pour le débit. Nous vous recommandons d’utiliser ces fonctions pour traiter de nombreuses entrées telles que du texte provenant de grandes tables SQL. Le traitement par lots est généralement mieux adapté aux fonctions AISQL. Pour des cas d’utilisation plus interactifs où la latence est importante, utilisez l’API REST. Elle est disponible pour l’inférence simple (Complete API), l’intégration (Embed API) et les applications agentiques (Agents API).
Privilèges requis¶
Le rôle de base de données CORTEX_USER dans la base de données SNOWFLAKE comprend les privilèges qui permettent aux utilisateurs d’appeler les fonctions AI Cortex de Snowflake. Par défaut, le rôle CORTEX_USER est accordé au rôle PUBLIC. Le rôle PUBLIC est automatiquement accordé à tous les utilisateurs et rôles, de façon à permettre à tous les utilisateurs de votre compte d’utiliser les fonctions de Snowflake Cortex AI.
Si vous ne souhaitez pas que tous les utilisateurs disposent de ce privilège, vous pouvez révoquer l’accès au rôle PUBLIC et accorder l’accès à des rôles spécifiques.
Pour révoquer le rôle de base de données CORTEX_USER à partir du rôle PUBLIC, exécutez les commandes suivantes à l’aide du rôle ACCOUNTADMIN :
REVOKE DATABASE ROLE SNOWFLAKE.CORTEX_USER
FROM ROLE PUBLIC;
REVOKE IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
FROM ROLE PUBLIC;
Vous pouvez ensuite accorder un accès sélectif à des rôles spécifiques. Le rôle de base de données SNOWFLAKE.CORTEX_USER ne peut pas être accordé directement à un utilisateur. Pour plus d’informations, voir À l’aide des rôles de base de données SNOWFLAKE. Un utilisateur ayant le rôle ACCOUNTADMIN peut attribuer ce rôle à un rôle personnalisé afin de permettre aux utilisateurs d’accéder aux fonctions de Cortex AI. Dans l’exemple suivant, vous avez le rôle ACCOUNTADMIN et accordez à l’utilisateur some_user
le rôle de base de données CORTEX_USER via le rôle de compte cortex_user_role
, que vous créez à cet effet.
USE ROLE ACCOUNTADMIN;
CREATE ROLE cortex_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE cortex_user_role;
GRANT ROLE cortex_user_role TO USER some_user;
Vous pouvez également accorder l’accès aux fonctions AI Cortex de Snowflake par le biais de rôles existants utilisés par des groupes d’utilisateurs spécifiques. (Voir Rôles utilisateur.) Par exemple, si vous avez créé un rôle analyst
qui est utilisé comme rôle par défaut par les analystes de votre organisation, vous pouvez facilement accorder à ces utilisateurs l’accès aux fonctions AISQL Cortext de Snowflake avec une seule instruction GRANT.
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE analyst;
Contrôle de l’accès au modèle¶
Il existe deux méthodes pour contrôler l’accès aux modèles dans Snowflake Cortex. Vous pouvez utiliser l’une ou l’autre de ces méthodes, ou les deux à la fois, afin d’obtenir un contrôle d’accès à la fois large et précis :
Liste d’autorisation des modèles
Contrôle d’accès basé sur les rôles
La liste d’autorisation des modèles fournit un niveau d’accès par défaut aux modèles pour tous les utilisateurs du compte, qui peut être personnalisé à l’aide du paramètre CORTEX_MODELS_ALLOWLIST
. Le contrôle d’accès basé sur les rôles permet une gestion précise des accès en accordant ou en révoquant des privilèges à des objets de modèle spécifiques par le biais de rôles d’application.
Le contrôle d’accès au modèle est disponible pour les services suivants :
Les méthodes de contrôle d’accès précis ne sont pas disponibles pour les services suivants :
Cortex Search
Cortex Analyst
Cortex Copilot
Cortex Agents
Document AI
Liste d’autorisation des modèles¶
Utilisez le paramètre CORTEX_MODELS_ALLOWLIST
dans la commande ALTER ACCOUNT SET
pour définir l’accès au modèle pour tous les utilisateurs du compte. Si vous devez accorder à des utilisateurs spécifiques un accès supérieur à celui que vous avez spécifié dans la liste d’autorisation, vous devez utiliser le contrôle d’accès basé sur les rôles. Pour plus d’informations sur le contrôle d’accès basé sur les rôles, voir Contrôle d’accès basé sur les rôles.
Lorsque vos utilisateurs font une requête, Snowflake Cortex évalue le paramètre pour déterminer si l’utilisateur peut accéder au modèle.
Pour le paramètre CORTEX_MODELS_ALLOWLIST
, vous pouvez définir les valeurs suivantes :
CORTEX_MODELS_ALLOWLIST = 'All'
Permet l’accès à tous les modèles.La commande suivante permet à l’utilisateur d’accéder à tous les modèles :
ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'All';
CORTEX_MODELS_ALLOWLIST = 'model1,model2,...'
Permet aux utilisateurs d’accéder aux modèles spécifiés dans une liste séparée par des virgules.
La commande suivante permet aux utilisateurs d’accéder aux modèles
mistral-large2
etllama3.1-70b
:ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'mistral-large2,llama3.1-70b';
CORTEX_MODELS_ALLOWLIST = 'None'
Empêche les utilisateurs d’accéder à n’importe quel modèle.La commande suivante empêche l’accès des utilisateurs à tout modèle :
ALTER ACCOUNT SET CORTEX_MODELS_ALLOWLIST = 'None';
Contrôle d’accès basé sur les rôles¶
Chaque modèle dans Snowflake Cortex est un objet unique dans le schéma SNOWFLAKE.MODELS avec un rôle d’application associé. Vous pouvez utiliser les objets de modèle et les rôles d’application pour gérer l’accès à l’objet de modèle.
Utilisez la commande suivante pour accéder aux derniers modèles :
CALL SNOWFLAKE.MODELS.CORTEX_BASE_MODELS_REFRESH();
Ensuite, utilisez la commande suivante pour dresser la liste des modèles disponibles dans votre compte Snowflake :
SHOW MODELS IN SNOWFLAKE.MODELS;
La commande renvoie une liste de modèles, telle que la suivante :
created_on |
name |
model_type |
database_name |
schema_name |
owner |
---|---|---|---|---|---|
2025-04-22 09:35:38.558 -0700 |
CLAUDE-3-5-SONNET |
CORTEX_BASE |
SNOWFLAKE |
MODELS |
SNOWFLAKE |
2025-04-22 09:36:16.793 -0700 |
LLAMA3.1-405B |
CORTEX_BASE |
SNOWFLAKE |
MODELS |
SNOWFLAKE |
2025-04-22 09:37:18.692 -0700 |
SNOWFLAKE-ARCTIC |
CORTEX_BASE |
SNOWFLAKE |
MODELS |
SNOWFLAKE |
Utilisez la commande suivante pour dresser la liste des rôles d’application pour ces modèles :
SHOW APPLICATION ROLES IN APPLICATION SNOWFLAKE;
La commande renvoie une liste de rôles d’application, telle que la suivante :
created_on |
name |
owner |
comment |
owner_role_type |
---|---|---|---|---|
2025-04-22 09:35:38.558 -0700 |
CORTEX-MODEL-ROLE-ALL |
SNOWFLAKE |
MODELS |
APPLICATION |
2025-04-22 09:36:16.793 -0700 |
CORTEX-MODEL-ROLE-LLAMA3.1-405B |
SNOWFLAKE |
MODELS |
APPLICATION |
2025-04-22 09:37:18.692 -0700 |
CORTEX-MODEL-ROLE-SNOWFLAKE-ARCTIC |
SNOWFLAKE |
MODELS |
APPLICATION |
Important
Si vous ne voyez pas les modèles ou leurs rôles d’application associés, assurez-vous de CALL SNOWFLAKE.MODELS.CORTEX_BASE_MODELS_REFRESH()
pour avoir accès aux derniers modèles.
Pour accorder l’accès à un modèle spécifique, vous attribuez le rôle d’application du modèle à un rôle d’utilisateur. Par exemple, vous pouvez accorder CORTEX-MODEL-ROLE-LLAMA3.1-70B
, le rôle d’application pour SNOWFLAKE.MODELS. "LLAMA3.1-70B"
, à un rôle d’utilisateur. La commande suivante accorde le rôle d’application CORTEX-MODEL-ROLE-LLAMA3.1-70B
au rôle d’utilisateur MY_ROLE
:
GRANT APPLICATION ROLE SNOWFLAKE."CORTEX-MODEL-ROLE-LLAMA3.1-70B" TO ROLE MY_ROLE;
Pour effectuer un appel d’inférence, utilisez le nom de modèle entièrement qualifié. Voici un exemple d’appel que les utilisateurs peuvent passer :
SELECT AI_COMPLETE('SNOWFLAKE.MODELS."LLAMA3.1-70B"', 'Hello');
Important
Lorsqu’un utilisateur fait une requête, Snowflake Cortex utilise d’abord un contrôle d’accès basé sur les rôles pour déterminer si l’utilisateur a accès au modèle. Si l’utilisateur n’y a pas accès, Snowflake Cortex évalue CORTEX_MODELS_ALLOWLIST pour déterminer l’accès au modèle. Si le modèle figure dans la liste d’autorisation (ou si la valeur de la liste d’autorisation est définie sur 'All'
), l’utilisateur a accès au modèle. Pour permettre un accès granulaire à un modèle, supprimez le nom du modèle de CORTEX_MODELS_ALLOWLIST ou définissez-le sur 'None'
.
Disponibilité¶
Les fonctions AI Cortex de Snowflake sont actuellement disponibles dans les régions suivantes. Pour accéder aux LLMs à partir de régions qui ne sont pas listées, utilisez le paramètre d’inférence inter-régionale.
Note
La fonction TRY_COMPLETE est disponible dans les mêmes régions que COMPLETE.
La fonction COUNT_TOKENS est disponible dans toutes les régions, mais l’inférence du modèle est spécifique à la région, comme indiqué dans la table.
Fonction
(Modèle)
|
AWS US
(inter-régionale)
|
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)
|
AWS US Est
(Service public commercial - Virginie du Nord)
|
Azure Est US 2
(Virginie)
|
Azure Europe de l’Ouest
(Pays-Bas)
|
AWS EU
(inter-régionale)
|
AWS AWS_APJ
(inter-régionale)
|
Azure US
(inter-régionale)
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
COMPLETE
(
claude-4-sonnet ) |
✔ |
||||||||||||
COMPLETE
(
claude-4-opus ) |
En aperçu |
||||||||||||
COMPLETE
(
claude-3-7-sonnet ) |
✔ |
||||||||||||
COMPLETE
(
claude-3-5-sonnet ) |
✔ |
✔ |
✔ |
||||||||||
COMPLETE
(
llama4-maverick ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama4-scout ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.2-1b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.2-3b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.1-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
llama3.1-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
llama3.3-70b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
snowflake-llama-3.3-70b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
llama3.1-405b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||||
COMPLETE
(
openai-gpt-4.1 ) |
En aperçu |
En aperçu |
|||||||||||
COMPLETE
(
openai-o4-mini ) |
En aperçu |
En aperçu |
|||||||||||
COMPLETE
(
snowflake-llama-3.1-405b ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
snowflake-arctic ) |
✔ |
✔ |
✔ |
✔ |
|||||||||
COMPLETE
(
deepseek-r1 ) |
✔ |
✔ |
|||||||||||
COMPLETE
(
reka-core ) |
✔ |
✔ |
✔ |
||||||||||
COMPLETE
(
reka-flash ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||||
COMPLETE
(
mistral-large2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
COMPLETE
(
mixtral-8x7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
mistral-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
COMPLETE
(
jamba-instruct ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||||||
COMPLETE
(
jamba-1.5-mini ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||||||
COMPLETE
(
jamba-1.5-large ) |
✔ |
✔ |
✔ |
||||||||||
COMPLETE
(
gemma-7b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||||
EMBED_TEXT_768
(
e5-base-v2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
EMBED_TEXT_768
(
snowflake-arctic-embed-m ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_768
(
snowflake-arctic-embed-m-v1.5 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_1024
(
snowflake-arctic-embed-l-v2.0 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_1024
(
nv-embed-qa-4 ) |
✔ |
✔ |
|||||||||||
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
EMBED_TEXT_1024
(
voyage-multilingual-2 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
AI_CLASSIFY TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_CLASSIFY IMAGE
|
✔ |
✔ |
✔ |
✔ |
|||||||||
AI_FILTER TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_FILTER IMAGE
|
✔ |
✔ |
✔ |
✔ |
|||||||||
AI_AGG
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_SIMILARITY TEXT
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
AI_SIMILARITY IMAGE
|
✔ |
✔ |
✔ |
✔ |
|||||||||
AI_SUMMARIZE_AGG
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EXTRACT_ANSWER |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
ENTITY_SENTIMENT |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
SUMMARIZE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
TRANSLATE |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
Les fonctions suivantes de Snowflake Cortex AI sont actuellement disponibles dans les régions étendues suivantes.
Fonction
(Modèle)
|
AWSUS Est 2
(Ohio)
|
AWS CA Central 1
(Central)
|
AWS SA East 1
(São Paulo)
|
AWS Europe Ouest 2
(Londres)
|
AWS Europe Central 1
(Francfort)
|
AWS Europe du Nord 1
(Stockholm)
|
AWS AP Nord-Est 1
(Tokyo)
|
AWS AP Sud 1
(Mumbai)
|
AWS AP Sud-Est 2
(Sydney)
|
AWS AP Sud-Est 3
(Jakarta)
|
Azure Centre-Sud US
(Texas)
|
Azure West US 2
(Washington)
|
Azure UK Sud
(Londres)
|
Azure Nord de l’Europe
(Irlande)
|
Azure Suisse Nord
(Zurich)
|
Azure Centre de l’Inde
(Pune)
|
Azure Japon Est
(Tokyo, Saitama)
|
Azure Asie du Sud-Est
(Singapour)
|
Azure Australie Est
(Nouvelle-Galles du Sud)
|
GCP Europe Ouest 2
(Londres)
|
GCP Europe Ouest 4
(Pays-Bas)
|
GCP US Central 1
(Iowa)
|
GCP US Est 4
(Virginie du Nord)
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
EMBED_TEXT_768
(
snowflake-arctic-embed-m-v1.5 ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_768
(
snowflake-arctic-embed-m ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
EMBED_TEXT_1024
(
multilingual-e5-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
La table suivante répertorie les modèles hérités. Si vous débutez, commencez par les modèles des tables précédentes :
Fonction
(Modèle)
|
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)
|
---|---|---|---|---|---|---|---|---|
COMPLETE
(
llama2-70b-chat ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
llama3-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
COMPLETE
(
llama3-70b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
COMPLETE
(
mistral-large ) |
✔ |
✔ |
✔ |
✔ |
✔ |
Considérations relatives aux clients¶
Les fonctions Snowflake Cortex AI ont un coût de calcul basé sur le nombre de jetons traités. Reportez-vous à la table de consommation des services Snowflake pour le coût de chaque fonction en crédits par million de jetons.
Un jeton est la plus petite unité de texte traitée par les fonctions Snowflake Cortex AI, correspondant approximativement à quatre caractères. L’équivalence du texte brut d’entrée ou de sortie en jetons peut varier selon le modèle.
Pour les fonctions qui génèrent un nouveau texte dans la réponse (AI_COMPLETE, AI_CLASSIFY, AI_FILTER, AI_AGG, AI_SUMMARIZE et TRANSLATE), les jetons d’entrée et de sortie sont comptés.
Pour CORTEX GUARD, seuls les jetons d’entrée sont comptés. Le nombre de jetons d’entrée est basé sur le nombre de jetons de sortie par le modèle LLM utilisé dans la fonction COMPLETE.
Pour les fonctions AI_SIMILARITY et EMBED_*, seuls les jetons d’entrée sont comptés.
Pour EXTRACT_ANSWER, le nombre de jetons facturables est la somme du nombre de jetons dans les champs
from_text
etquestion
.AI_CLASSIFY, AI_FILTER, AI_AGG, AI_SUMMARIZE_AGG, SUMMARIZE, TRANSLATE, EXTRACT_ANSWER, et ENTITY_SENTIMENT et SENTIMENT ajoutent un prompt au texte d’entrée afin de générer la réponse. Par conséquent, le nombre de jetons en entrée est supérieur au nombre de jetons dans le texte que vous fournissez.
Les étiquettes, les descriptions et les exemples d’AI_CLASSIFY sont comptés comme des jetons d’entrée pour chaque enregistrement traité, et non pas une seule fois pour chaque appel à AI_CLASSIFY.
Pour PARSE_DOCUMENT (SNOWFLAKE.CORTEX), la facturation est basée sur le nombre de pages de documents traitées.
TRY_COMPLETE(SNOWFLAKE.CORTEX) n’entraîne pas de frais de traitement des erreurs. Cela signifie que si la fonction TRY_COMPLETE(SNOWFLAKE.CORTEX) renvoie NULL, aucun frais n’est engagé.
COUNT_TOKENS(SNOWFLAKE.CORTEX) n’entraîne que des coûts de calcul pour exécuter la fonction. Aucun coût supplémentaire basé sur les jetons n’est encouru.
Snowflake recommande d’exécuter les requêtes qui appellent une fonction Snowflake Cortex AISQL ou une fonction Cortex PARSE_DOCUMENT avec un entrepôt plus petit (pas plus grand que MEDIUM) car les entrepôts plus grands n’augmentent pas les performances. Le coût associé au maintien d’un entrepôt actif continuera à s’appliquer lors de l’exécution d’une requête qui appelle une fonction Snowflake Cortex LLM. Pour des informations générales sur les coûts de calcul, consultez Compréhension des coûts de calcul.
Suivi des coûts des services AI¶
Pour suivre les crédits utilisés pour les services d’AI, y compris les fonctions LLM de votre compte, utilisez l” Vue METERING_HISTORY :
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE SERVICE_TYPE='AI_SERVICES';
Suivre la consommation de crédit pour les fonctions AISQL¶
Pour voir la consommation de crédit et de jetons pour chaque appel de fonction AISQL, utilisez le Vue CORTEX_FUNCTIONS_USAGE_HISTORY :
SELECT *
FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_USAGE_HISTORY;
Vous pouvez également voir la consommation de crédits et de jetons pour chaque requête dans votre compte Snowflake. La vue de la consommation de crédits et de jetons pour chaque requête vous aide à identifier les requêtes qui consomment le plus de crédits et de jetons.
L’exemple de requête suivant utilise l”Vue CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY pour afficher la consommation de crédits et de jetons pour toutes vos requêtes au sein de votre compte.
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY;
Vous pouvez également utiliser la même vue pour voir la consommation de crédits et de jetons pour une requête spécifique.
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.CORTEX_FUNCTIONS_QUERY_USAGE_HISTORY
WHERE query_id='<query-id>';
Note
Vous ne pouvez pas obtenir d’informations granulaires sur l’utilisation des requêtes effectuées avec l’API REST.
L’historique de l’utilisation des requêtes est groupé en fonction des modèles utilisés dans la requête. Par exemple, si vous avez exécuté :
SELECT AI_COMPLETE('mistral-7b', 'Is a hot dog a sandwich'), AI_COMPLETE('mistral-large', 'Is a hot dog a sandwich');
L’historique de l’utilisation de la requête fait apparaître deux lignes, l’une pour mistral-7b
et l’autre pour mistral-large
.
Quotas d’utilisation¶
Afin de garantir que tous les clients de Snowflake puissent accéder aux capacités de LLM, les fonctions AI de Snowflake Cortex peuvent faire l’objet d’un étranglement pendant les périodes de forte utilisation. Les quotas d’utilisation ne sont pas appliqués au niveau du compte.
Les requêtes bloquées recevront une réponse d’erreur et devront être réessayées ultérieurement.
Note
Les comptes Snowflake à la demande sans méthode de paiement valide (tels que les comptes d’essai) sont limités à environ un crédit par jour dans l’utilisation de la fonction Snowflake Cortex LLM. Pour lever cette restriction, convertissez votre compte d’essai en compte payant.
Gestion des coûts et de la limitation¶
Snowflake recommande d’utiliser une taille d’entrepôt ne dépassant pas MEDIUM lors de l’appel des fonctions AISQL de Snowflake Cortex. L’utilisation d’un entrepôt plus grand que nécessaire n’augmente pas les performances, mais peut entraîner des coûts inutiles et un risque plus élevé de limitation. Cette recommandation pourrait ne plus s’appliquer à l’avenir en raison des prochaines mises à jour du produit.
Restrictions du modèle¶
Les modèles utilisés par Snowflake Cortex sont limités en taille comme décrit dans le tableau ci-dessous. Les tailles sont données en jetons. Les jetons représentent généralement environ quatre caractères de texte, donc le nombre de mots correspondant à une limite est inférieur au nombre de jetons. Les entrées qui dépassent la limite entraînent une erreur.
La taille maximale de la sortie qu’un modèle peut produire est limitée par les éléments suivants :
La limite du jeton de sortie du modèle.
L’espace disponible dans la fenêtre contextuelle après que le modèle a consommé les jetons d’entrée.
Par exemple, claude-3-5-sonnet
dispose d’une fenêtre contextuelle de 200 000 jetons. Si 100 000 jetons sont utilisés comme entrée, le modèle peut générer jusqu’à 8 192 jetons. Toutefois, si 195 000 jetons sont utilisés en entrée, le modèle ne peut générer que 5 000 jetons au maximum, soit un total de 200 000 jetons.
Important
Dans la région AWS AP Southeast 2 (Sydney) :
la fenêtre contextuelle pour
llama3-8b
etmistral-7b
est de 4 096 jetons.la fenêtre contextuelle pour
llama3.1-8b
est de 16 384 jetons.la fenêtre contextuelle pour le modèle géré par Snowflake à partir de la fonction SUMMARIZE est de 4 096 jetons.
Dans la région AWS Europe West 1 (Irlande) :
la fenêtre contextuelle pour
llama3.1-8b
est de 16 384 jetons.la fenêtre contextuelle pour
mistral-7b
est de 4 096 jetons.
Fonction |
Modèle |
Fenêtre contextuelle (jetons) |
Sortie maximale des fonctions AISQL (jetons) |
---|---|---|---|
COMPLETE |
|
128,000 |
8,192 |
|
128,000 |
8,192 |
|
|
4,096 |
8,192 |
|
|
32,768 |
8,192 |
|
|
200,000 |
32,000 |
|
|
200,000 |
64,000 |
|
|
200,000 |
8,192 |
|
|
200,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
1,047,576 |
32,768 |
|
|
200,000 |
100,000 |
|
|
100,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
256,000 |
8,192 |
|
|
256,000 |
8,192 |
|
|
256,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
4,096 |
8,192 |
|
|
8,000 |
8,192 |
|
|
8,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
8,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
8,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
128,000 |
8,192 |
|
|
32,000 |
8,192 |
|
|
8,000 |
8,192 |
|
EMBED_TEXT_768 |
|
512 |
s/o |
|
512 |
s/o |
|
EMBED_TEXT_1024 |
|
512 |
s/o |
|
512 |
s/o |
|
|
32,000 |
s/o |
|
AI_FILTER |
Modèle géré par Snowflake |
128,000 |
s/o |
AI_CLASSIFY / CLASSIFY_TEXT |
Modèle géré par Snowflake |
128,000 |
s/o |
AI_AGG |
Modèle géré par Snowflake |
128 000 par ligne
peuvent être utilisés sur plusieurs lignes
|
8,192 |
AI_SUMMARIZE_AGG |
Modèle géré par Snowflake |
128 000 par ligne
peuvent être utilisés sur plusieurs lignes
|
8,192 |
ENTITY_SENTIMENT |
Modèle géré par Snowflake |
2,048 |
s/o |
EXTRACT_ANSWER |
Modèle géré par Snowflake |
2 048 pour le texte
64 pour la question
|
s/o |
SENTIMENT |
Modèle géré par Snowflake |
512 |
s/o |
SUMMARIZE |
Modèle géré par Snowflake |
32,000 |
4,096 |
TRANSLATE |
Modèle géré par Snowflake |
4,096 |
s/o |
Choix d’un modèle¶
La fonction Snowflake Cortex COMPLETE prend en charge plusieurs modèles dont la capacité, la latence et le coût varient. Ces modèles ont été soigneusement choisis pour correspondre aux cas d’utilisation courants des clients. Pour obtenir la meilleure performance par crédit, choisissez un modèle qui correspond bien à la taille du contenu et à la complexité de votre tâche. Voici un bref aperçu des modèles disponibles.
Grands modèles¶
Si vous ne savez pas par où commencer, essayez d’abord les modèles les plus performants afin d’établir une base de référence pour évaluer les autres modèles. claude-3-7-sonnet
, reka-core
et mistral-large2
sont les modèles les plus performants proposés par Snowflake Cortex. Ils vous donneront une bonne idée de ce que peut faire un modèle à la pointe de la technologie.
Claude 3-7 Sonnet
est un leader dans le domaine du raisonnement général et des capacités multimodales. Il surpasse ses prédécesseurs dans les tâches qui requièrent un raisonnement à travers différents domaines et modalités. Vous pouvez utiliser sa large capacité de sortie pour obtenir davantage d’informations à partir de requêtes structurées ou non structurées. Ses capacités de raisonnement et ses grandes fenêtres contextuelles le rendent bien adapté aux flux de travail agentiques.deepseek-r1
est un modèle de base formé à l’aide de l’apprentissage par renforcement à grande échelle (RL) sans affinage supervisé (SFT). Il peut offrir des performances élevées dans les tâches de mathématiques, de codage et de raisonnement. Pour accéder au modèle, définissez le paramètre d’inférence inter-régionale surAWS_US
.mistral-large2
est le grand modèle de langage le plus avancé de l’AI Mistral avec des capacités de raisonnement de premier plan. Par rapport àmistral-large
, il est nettement plus performant en matière de génération de code, de mathématiques, de raisonnement et offre un support multilingue beaucoup plus puissant. C’est idéal pour les tâches complexes qui requièrent de grandes capacités de raisonnement ou qui sont hautement spécialisées, telles que la génération de textes synthétiques, la génération de codes et l’analyse de texte multilingue.llama3.1-405b
est un modèle open source de la famille de modèlesllama3.1
de Meta avec une grande fenêtre de contexte de 128K. Il excelle dans le traitement de documents longs, l’assistance multilingue, la génération de données synthétiques et la distillation de modèles.snowflake-llama3.1-405b
est un modèle dérivé du modèle open source llama3.1. Il utilise le<SwiftKV optimizations https://www.snowflake.com/en/blog/up-to-75-lower-inference-cost-llama-meta-llm/>
qui a été développé par l’équipe de recherche de Snowflake AI pour permettre une réduction des coûts d’inférence pouvant aller jusqu’à 75 %. SwiftKV permet d’obtenir des performances de débit plus élevées avec une perte de précision minimale.
Modèles moyens¶
llama3.1-70b
est un modèle open source qui offre des performances de pointe idéales pour les applications de chat, la création de contenu et les applications d’entreprise. Il s’agit d’un modèle hautement performant et rentable qui permet divers cas d’utilisation avec une fenêtre contextuelle de 128K.llama3-70b
est toujours pris en charge et dispose d’une fenêtre contextuelle de 8K.snowflake-llama3.3-70b
est un modèle dérivé du modèle open source llama3.3. Il utilise le<SwiftKV optimizations https://www.snowflake.com/en/blog/up-to-75-lower-inference-cost-llama-meta-llm/>
développé par l’équipe de recherche de Snowflake AI pour permettre une réduction des coûts d’inférence pouvant aller jusqu’à 75 %. SwiftKV permet d’obtenir des performances de débit plus élevées avec une perte de précision minimale.snowflake-arctic
est la solution de premier plan de Snowflake axée sur l’entreprise LLM. Arctic excelle dans les tâches d’entreprise telles que la génération de SQL, le codage et les benchmarks de suivi des instructions.mixtral-8x7b
est idéal pour la génération de textes, la classification et la réponse aux questions. Les modèles Mistral sont optimisés pour une faible latence avec de faibles besoins en mémoire, ce qui se traduit par un débit plus élevé pour les cas d’utilisation en entreprise.Le modèle
jamba-Instruct
est construit par AI21 Labs pour répondre efficacement aux exigences des entreprises. Il est optimisé pour offrir une fenêtre de contexte de 256 000 jetons avec un faible coût et une faible latence, ce qui le rend idéal pour des tâches telles que le résumé, les questions-réponses et l’extraction d’entités sur des documents longs et de vastes bases de connaissances.La famille de modèles AI21 Jamba 1.5 est à la pointe de la technologie, avec une instruction SSM-Transformer hybride qui suit les modèles fondamentaux. Le
jamba-1.5-mini
et lejamba-1.5-large
avec une longueur de contexte de 256K prennent en charge des cas d’utilisation tels que la sortie structurée (JSON), et une génération ancrée.
Petits modèles¶
Les modèles
llama3.2-1b
etllama3.2-3b
prennent en charge une longueur de contexte de 128 000 jetons et sont à la pointe de la technologie dans leur catégorie pour les cas d’utilisation tels que les tâches de résumé, de suivi d’instructions et de réécriture. Les modèles Llama 3.2 offrent des capacités multilingues, avec prise en charge de l’anglais, de l’allemand, du français, de l’italien, du portugais, de l’hindi, de l’espagnol et du thaï.llama3.1-8b
est idéal pour les tâches qui nécessitent un raisonnement faible à modéré. C’est un modèle léger et ultra-rapide avec une fenêtre contextuelle de 128K.llama3-8b
etllama2-70b-chat
sont des modèles toujours pris en charge qui fournissent une fenêtre de contexte plus petite et une précision relativement faible.mistral-7b
est idéal pour vos tâches les plus simples de résumé, de structuration et de réponse à des questions qui doivent être effectuées rapidement. Il offre une faible latence et un traitement à haut débit pour plusieurs pages de texte grâce à sa fenêtre contextuelle de 32 Ko.gemma-7b
est adapté aux tâches simples de complétion de code et de texte. Il dispose d’une fenêtre contextuelle de 8 000 jetons, mais il est étonnamment performant dans cette limite et tout à fait rentable.
Le tableau suivant fournit des informations sur les performances des modèles les plus courants sur différents benchmarks, y compris les modèles proposés par Snowflake Cortex COMPLETE ainsi que quelques autres modèles courants.
Modèle |
Fenêtre contextuelle
(Jetons)
|
MMLU
(Raisonnement)
|
HumanEval
(Codage)
|
GSM8K
(Raisonnement arithmétique)
|
Spider 1.0
(SQL)
|
---|---|---|---|---|---|
128,000 |
88,7 |
90,2 |
96,4 |
- |
|
200,000 |
88,3 |
92,0 |
96,4 |
- |
|
128,000 |
88,6 |
89 |
96,8 |
- |
|
32,000 |
83,2 |
76,8 |
92,2 |
- |
|
128,000 |
86 |
80,5 |
95,1 |
- |
|
128,000 |
84 |
92 |
93 |
- |
|
100,000 |
75,9 |
72 |
81 |
- |
|
128,000 |
73 |
72,6 |
84,9 |
- |
|
32,000 |
70,6 |
40,2 |
60,4 |
- |
|
256,000 |
68,2 |
40 |
59,9 |
- |
|
256,000 |
69,7 |
- |
75,8 |
- |
|
256,000 |
81,2 |
- |
87 |
- |
|
4,096 |
67,3 |
64,3 |
69,7 |
79 |
|
128,000 |
49,3 |
- |
44,4 |
- |
|
128,000 |
69,4 |
- |
77,7 |
- |
|
8,000 |
64,3 |
32,3 |
46,4 |
- |
|
32,000 |
62,5 |
26,2 |
52,1 |
- |
|
GPT 3.5 Turbo* |
4,097 |
70 |
48,1 |
57,1 |
- |
Versions antérieures du modèle¶
La fonction COMPLETE de Snowflake Cortex prend également en charge les anciennes versions de modèles suivantes. Nous vous recommandons d’utiliser les versions les plus récentes des modèles au lieu des versions figurant dans ce tableau.
Modèle |
Fenêtre contextuelle
(Jetons)
|
MMLU
(Raisonnement)
|
HumanEval
(Codage)
|
GSM8K
(Raisonnement arithmétique)
|
Spider 1.0
(SQL)
|
---|---|---|---|---|---|
32,000 |
81,2 |
45,1 |
81 |
81 |
|
4,096 |
68,9 |
30,5 |
57,5 |
- |
Conditions d’erreur¶
Les fonctions Snowflake Cortex AI peuvent produire les messages d’erreur suivants.
Message |
Explication |
---|---|
|
L’instruction a été rejetée en raison d’une charge excessive du système. Veuillez réessayer la requête. |
|
L’objet |
|
Le budget de consommation du modèle a été dépassé. |
|
Le modèle spécifié n’existe pas. |
|
La langue spécifiée n’est pas prise en charge par la fonction TRANSLATE. |
|
La requête a dépassé le nombre maximum de jetons pris en charge par le modèle (voir Restrictions du modèle). |
|
La requête a été limitée en raison d’un niveau d’utilisation élevé. Veuillez réessayer plus tard. |
|
Le nombre de catégories spécifié est supérieur à la limite pour AI_CLASSIFY. |
|
Le type de catégorie spécifié n’est pas pris en charge par AI_CLASSIFY. |
|
L’entrée à AI_CLASSIFY est une chaîne vide ou nulle. |
Utilisation de Snowflake Cortex AISQL avec Python¶
Vous pouvez utiliser les fonctions de Snowflake Cortex AISQL dans l’API Snowpark Python. Dans l’API, vous pouvez utiliser les fonctions pour classer, résumer et filtrer des données textuelles et des images.
Ces fonctions sont notamment les suivantes :
ai_agg()
- Agrège une colonne de texte à l’aide d’instructions en langue naturelle. Pour plus d’informations, voir AI_AGG.ai_classify()
- Classe le texte ou les images dans des catégories personnalisées. Pour plus d’informations, voir AI_CLASSIFY.ai_filter()
- Filtre les données en utilisant la langue naturelle. Pour plus d’informations, voir AI_FILTER.
La fonction ai_agg()
permet d’agréger une colonne de texte à l’aide d’instructions en langue naturelle, de la même manière que vous demanderiez à un analyste de résumer ou d’extraire des conclusions à partir de données groupées ou non groupées.
L’exemple suivant résume les avis des clients pour chaque produit à l’aide de la fonction ai_agg()
. La fonction prend une colonne de texte et une instruction en langue naturelle pour résumer les commentaires.
from snowflake.snowpark.functions import ai_agg, col
df = session.create_dataframe([
[1, "Excellent product!"],
[1, "Great battery life."],
[1, "A bit expensive but worth it."],
[2, "Terrible customer service."],
[2, "Won’t buy again."],
], schema=["product_id", "review"])
# Summarize reviews per product
summary_df = df.group_by("product_id").agg(
ai_agg(col("review"), "Summarize the customer reviews in one sentence.")
)
summary_df.show()
Note
Utilisez des descriptions de tâches détaillées et centrées sur le cas d’utilisation. Par exemple, « Résumez les commentaires des clients pour un rapport destiné aux investisseurs ».
La fonction ai_classify()
prend un texte ou une image et le classe dans les catégories que vous avez définies.
L’exemple suivant classe les avis de voyageurs dans des catégories telles que « voyages » et « cuisine ». La fonction prend une colonne de texte et une liste de catégories dans lesquelles classer le texte.
from snowflake.snowpark.functions import ai_classify
df = session.create_dataframe([
["I dream of backpacking across South America."],
["I made the best pasta yesterday."],
], schema=["sentence"])
df = df.select(
"sentence",
ai_classify("sentence", ["travel", "cooking"]).alias("classification")
)
df.show()
Note
Vous pouvez fournir jusqu’à 500 catégories. Vous pouvez classer à la fois du texte et des images.
La fonction ai_filter()
évalue une condition en langue naturelle et renvoie TRUE
ou FALSE
. Vous pouvez l’utiliser pour filtrer ou baliser les lignes.
from snowflake.snowpark.functions import ai_filter, prompt, col
df = session.create_dataframe(["Canada", "Germany", "Japan"], schema=["country"])
filtered_df = df.select(
"country",
ai_filter(prompt("Is {0} in Asia?", col("country"))).alias("is_in_asia")
)
filtered_df.show()
Note
Vous pouvez filtrer à la fois sur des chaînes et des fichiers. Pour les invites dynamiques, utilisez la fonction prompt(). Pour plus d’informations, voir Référence de Snowpark Python.
Les fonctions existantes de Snowpark ML sont toujours prises en charge dans Snowpark ML version 1.1.2 et ultérieure. Voir Utilisation de Snowflake ML en local pour les instructions sur la configuration de Snowpark ML.
Si vous exécutez votre script Python en dehors de Snowflake, vous devez créer une session Snowpark pour utiliser ces fonctions. Pour obtenir des instructions, voir Connexion à Snowflake.
L’exemple Python suivant illustre l’appel de fonctions Snowflake Cortex AI sur des valeurs uniques :
from snowflake.cortex import Complete, ExtractAnswer, Sentiment, Summarize, Translate
text = """
The Snowflake company was co-founded by Thierry Cruanes, Marcin Zukowski,
and Benoit Dageville in 2012 and is headquartered in Bozeman, Montana.
"""
print(Complete("llama2-70b-chat", "how do snowflakes get their unique patterns?"))
print(ExtractAnswer(text, "When was snowflake founded?"))
print(Sentiment("I really enjoyed this restaurant. Fantastic service!"))
print(Summarize(text))
print(Translate(text, "en", "fr"))
Vous pouvez transmettre des options qui affectent les hyperparamètres du modèle lorsque vous utilisez la fonction COMPLETE. L’exemple Python suivant illustre l’appel de la fonction COMPLETE avec une modification du nombre maximal de jetons de sortie que le modèle peut générer :
from snowflake.cortex import Complete,CompleteOptions
model_options1 = CompleteOptions(
{'max_tokens':30}
)
print(Complete("llama3.1-8b", "how do snowflakes get their unique patterns?", options=model_options1))
Vous pouvez également appeler une fonction AI sur une colonne du tableau, comme indiqué ci-dessous. Cet exemple nécessite un objet session (stocké dans session
) et une table articles
contenant une colonne de texte abstract_text
, et crée une nouvelle colonne abstract_summary
contenant un résumé de l’abrégé.
from snowflake.cortex import Summarize
from snowflake.snowpark.functions import col
article_df = session.table("articles")
article_df = article_df.withColumn(
"abstract_summary",
Summarize(col("abstract_text"))
)
article_df.collect()
Note
La forme avancée de COMPLETE de type chat (multi-message) n’est actuellement pas prise en charge par Python.
Utilisation des fonctions Snowflake Cortex AI avec Snowflake CLI¶
Snowflake Cortex AISQL est disponible à partir de la version 2.4.0 de Snowflake CLI. Consultez Présentation de Snowflake CLI pour plus d’informations sur l’utilisation de Snowflake CLI.
Les exemples suivants illustrent l’utilisation des commandes :codenowrap :snow cortex
sur des valeurs uniques. Le paramètre -c
spécifie quelle connexion utiliser.
Note
La forme avancée de COMPLETE de type chat (multi-message) n’est actuellement pas prise en charge par Snowflake CLI.
snow cortex complete "Is 5 more than 4? Please answer using one word without a period." -c "snowhouse"
snow cortex extract-answer "what is snowflake?" "snowflake is a company" -c "snowhouse"
snow cortex sentiment "Mary had a little Lamb" -c "snowhouse"
snow cortex summarize "John has a car. John's car is blue. John's car is old and John is thinking about buying a new car. There are a lot of cars to choose from and John cannot sleep because it's an important decision for John."
snow cortex translate herb --to pl
Vous pouvez également utiliser des fichiers contenant le texte que vous souhaitez utiliser pour les commandes. Pour cet exemple, supposons que le fichier about_cortex.txt
contienne le contenu suivant :
Snowflake Cortex gives you instant access to industry-leading large language models (LLMs) trained by researchers at companies like Anthropic, Mistral, Reka, Meta, and Google, including Snowflake Arctic, an open enterprise-grade model developed by Snowflake.
Since these LLMs are fully hosted and managed by Snowflake, using them requires no setup. Your data stays within Snowflake, giving you the performance, scalability, and governance you expect.
Snowflake Cortex features are provided as SQL functions and are also available in Python. The available functions are summarized below.
COMPLETE: Given a prompt, returns a response that completes the prompt. This function accepts either a single prompt or a conversation with multiple prompts and responses.
EMBED_TEXT_768: Given a piece of text, returns a vector embedding that represents that text.
EXTRACT_ANSWER: Given a question and unstructured data, returns the answer to the question if it can be found in the data.
SENTIMENT: Returns a sentiment score, from -1 to 1, representing the detected positive or negative sentiment of the given text.
SUMMARIZE: Returns a summary of the given text.
TRANSLATE: Translates given text from any supported language to any other.
Vous pouvez ensuite exécuter la commande snow cortex summarize
en passant le nom de fichier à l’aide du paramètre --file
, comme indiqué :
snow cortex summarize --file about_cortex.txt
Snowflake Cortex offers instant access to industry-leading language models, including Snowflake Arctic, with SQL functions for completing prompts (COMPLETE), text embedding (EMBED\_TEXT\_768), extracting answers (EXTRACT\_ANSWER), sentiment analysis (SENTIMENT), summarizing text (SUMMARIZE), and translating text (TRANSLATE).
Pour plus d’informations sur ces commandes, consultez Commandes snow cortex.
Avis juridiques¶
La classification des données d’entrées et de sorties est présentée dans la table suivante.
Classification des données d’entrée |
Classification des données de sortie |
Désignation |
---|---|---|
Usage Data |
Customer Data |
Les fonctions généralement disponibles sont des fonctions AI couvertes. Les fonctions d’aperçu sont les fonctions AI d’aperçu. [1] |
Pour plus d’informations, reportez-vous à Snowflake AI et ML.