API REST Cortex¶
L’API REST Cortex vous donne accès aux modèles de pointe de Anthropic, OpenAI, Meta, Mistral et autres via votre point de terminaison préféré ouSDK. Toutes les inférences s’exécutent dans le périmètre de Snowflake, de sorte que vos données restent sécurisées et dans les limites de votre gouvernance. Voir ci-dessous pour savoir comment démarrer.
Choisissez votre API¶
L’API REST Cortex prend en charge deux spécifications d’API standard du secteur. Choisissez celle qui correspond le mieux à votre pile :
API Achèvements de chat |
API de messages |
|
|---|---|---|
Compatibilité |
||
Point de terminaison |
|
|
Modèles pris en charge |
Tous les modèles (OpenAI, Claude, Llama, Mistral,DeepSeek, Snowflake) |
Modèles Claude uniquement |
Prise en charge de SDK |
SDKs d’OpenAI Python et JavaScript |
SDK Python Anthropic |
Mieux adapté à |
La plupart des cas d’utilisation ; flexibilité multi-modèles |
Intégrations Anthropic existantes ; parité API Anthropic |
Les deuxAPIs partagent les mêmes méthodes d’authentification, le même catalogue de modèles et les mêmes limites de débit. La seule différence est le format de la requête/réponse et les modèles pris en charge par chaque point de terminaison. Pour connaître les tarifs, consultez la Table de consommation du service Snowflake.
Démarrage rapide¶
Conditions préalables¶
Avant de commencer, vous avez besoin de ce qui suit :
L’URL de votre compte Snowflake (par exemple,
https://<account-identifier>.snowflakecomputing.com).Un jeton d’accès programmatique Snowflake (PAT) pour l’authentification. Voir Génération d’un jeton d’accès programmatique.
Un nom de modèle à utiliser dans les requêtes. Voir Disponibilité du modèle pour les modèles disponibles.
Démarrage rapide des achèvements de chat¶
L’API Achèvements de chat suit la spécification OpenAI. Vous pouvez utiliser le SDK OpenAI directement.
Dans les exemples précédents, remplacez les éléments suivants :
<account-identifier>: identificateur du compte Snowflake.<SNOWFLAKE_PAT>: jeton d’accès programmatique Snowflake (PAT).model: nom du modèle. Voir Disponibilité du modèle pour les modèles pris en charge.
Démarrage rapide de l’API Messages¶
L’API Messages suit la spécification Anthropic et ne prend en charge que les modèles Claude.
Le SDK Anthropic envoie des identifiants de connexion via x-api-key par défaut, mais Snowflake attend un jeton Bearer. Utilisez un client httpx pour définir l’en-tête d’autorisation correct.
Comme pour Python, remplacez l’en-tête d’authentification par défaut par un jeton Bearer via``defaultHeaders``.
Dans les exemples précédents, remplacez les éléments suivants :
<account-identifier>: identificateur du compte Snowflake.<SNOWFLAKE_PAT>: jeton d’accès programmatique Snowflake (PAT).model: nom du modèle Claude. Voir Disponibilité du modèle pour les modèles pris en charge.
Configuration de l’authentification¶
Pour vous authentifier auprès de l’API REST de Cortex , vous pouvez utiliser les méthodes décrites dans Authentification d”Snowflake REST APIs avec Snowflake.
Définissez l’en-tête Authorization pour inclure votre jeton (par exemple, un jeton Web JSON (JWT), un jeton OAuth ou un jeton d’accès programmatique).
Astuce
Envisagez de créer un utilisateur dédié pour les requêtes de l’API REST de Cortex.
Disponibilité du modèle¶
Les tableaux suivants présentent les modèles disponibles dans l’API REST Cortex pour chaque région :
Modèle
|
Inter-Cloud
(N’importe quelle région)
|
AWS Global
(inter-régionale)
|
AWS US
(inter-régionale)
|
AWS EU
(inter-régionale)
|
AWS APJ
(inter-régionale)
|
Azure Global
(inter-régionale)
|
Azure US
(inter-régionale)
|
Azure EU
(inter-régionale)
|
|---|---|---|---|---|---|---|---|---|
|
✔ |
✔ |
✔ |
✔ |
||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
✔ |
✔ |
||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
✔ |
|||||
|
✔ |
✔ |
✔ |
✔ |
||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
* |
* |
* |
* |
||||
|
* |
* |
||||||
|
* |
* |
||||||
|
✔ |
|||||||
|
* |
|||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
||||||
|
✔ |
✔ |
Modèle
|
AWS US West 2
(Oregon)
|
AWS US East 1
(Virginie du Nord)
|
Azure Est US 2
(Virginie)
|
|---|---|---|---|
|
✔ |
✔ |
|
|
✔ |
||
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
||
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
|
✔ |
Modèle
|
AWS Europe Central 1
(Francfort)
|
AWS Europe Ouest 1
(Irlande)
|
Azure Europe de l’Ouest
(Pays-Bas)
|
|---|---|---|---|
|
✔ |
✔ |
|
|
✔ |
✔ |
✔ |
|
✔ |
✔ |
|
|
✔ |
✔ |
|
|
✔ |
✔ |
✔ |
Modèle
|
AWS AP Sud-Est 2
(Sydney)
|
AWS AP Nord-Est 1
(Tokyo)
|
|---|---|---|
|
✔ |
✔ |
|
✔ |
✔ |
|
✔ |
|
|
✔ |
|
|
✔ |
✔ |
* indique une fonction ou un modèle de prévisualisation. Les fonctions de prévisualisation ne conviennent pas aux charges de travail de production.
Vous pouvez également utiliser n’importe quel modèle affiné dans n’importe quelle région prise en charge.
Fonctionnalités¶
Streaming¶
Les deux APIs prennent en charge les réponses en continu à l’aide des événements envoyés par le serveur.
Streaming des achèvements de chat¶
Streaming de l’API Messages¶
Appel d’outil¶
L’appel d’outil permet au modèle d’invoquer des fonctions externes pendant une conversation. Le flux fonctionne par étapes :
Vous envoyez une demande avec une liste des outils disponibles.
Le modèle décide d’appeler un ou plusieurs outils et renvoie le nom de l’outil et les arguments.
Vous exécutez l’outil de votre côté.
Vous renvoyez le résultat de l’outil et le modèle génère une réponse finale.
L’appel d’outil est pris en charge pour les modèles OpenAI et Claude.
Appel de l’outil d’achèvements de chat¶
Étape 1 - Envoyer la requête avec les outils :
Le modèle répond par un tableau tool_calls :
Étape 2 - Exécuter l’outil et renvoyer le résultat :
Appel d’outil de l’API Messages¶
Étape 1 - Envoyer la requête avec les outils :
Le modèle répond par un bloc de contenu tool_use :
Étape 2 - Exécuter l’outil et renvoyer le résultat :
Sortie structurée¶
Vous pouvez demander une sortie JSON structurée conforme à un schéma spécifique. Ceci est pris en charge pour les modèles OpenAI et Claude via l’API d’achèvements de chat. Pour API Messages, utilisez le modèle tool_use pour appliquer une sortie structurée.
Sortie structurée des achèvements de chat¶
Utilisez le champ response_format avec un schéma JSON pour contraindre la sortie du modèle.
Note
Les modèles Claude prennent uniquement en charge json_schema comme type de format de réponse. Les modèles OpenAI prennent en charge des types de format de réponse supplémentaires comme indiqué dans la référence API OpenAI.
Sortie structurée API Messages¶
L’API Messages n’a pas de champ response_format. Au lieu de cela, définissez un outil avec le schéma de sortie souhaité et demandez au modèle de l’utiliser. La réponse tool_use du modèle contiendra une sortie JSON structurée correspondant à votre schéma.
Inclusion d’image¶
Vous pouvez inclure des images dans vos requêtes pour les modèles qui prennent en charge la vue. Les images doivent être fournies sous forme de chaînes codées en base64. Les images sont limitées à 20 par conversation avec une taille maximale de requête de 20 MiB.
L’inclusion d’image est prise en charge pour :
Modèles Claude (
claude-3-7-sonnetet plus récents)Modèles OpenAI (
openai-gpt-4.1,openai-gpt-5,openai-gpt-5-chat,openai-gpt-5-mini,openai-gpt-5-nano)
Inclusion d’images d’achèvements de chat¶
Inclusion d’image d’API Messages¶
L’API Messages utilise un format d’image différent — un bloc``source``avec les champs type, media_type et``data`` champs au lieu d’une URL de données.
Mise en cache des invites¶
La mise en cache des invites vous permet de réutiliser des contextes précédemment traités (tels que de grandes invites système, des documents ou l’historique des conversations) dans les requêtes, réduisant ainsi la latence et les coûts.
Modèles OpenAI : La mise en cache est implicite. Les invites comportant plus de 1 024 jetons sont automatiquement mises en cache, aucune modification de la requête n’est nécessaire.
Modèles Claude : La mise en cache est explicite. Ajoutez des points d’arrêt
cache_controlaux blocs de contenu que vous souhaitez mettre en cache. Seul le type de cacheephemeralest pris en charge, avec une TTL de 5 minutes. 4 points d’arrêt de cache maximum par requête.
Mise en cache de l’invite des achèvements de chat¶
Pour les modèles Claude via des achèvements de chat, ajoutez``cache_control`` aux blocs de contenu. Les modèles OpenAI sont mis en cache automatiquement et ne nécessitent pas ce champ.
Mise en cache des invites de l’API Messages¶
Utilisez cache_control sur les blocs de contenu système ou utilisateur. Seul le type de cache ephemeral est pris en charge, avec une TTL de 5 minutes. Un maximum de 4 points d’arrêt de cache peut être défini par requête.
Note
La mise en cache des invites Anthropic a une TTL de 5 minutes. Le contenu en cache non consulté dans les 5 minutes est expulsé. La mise en cache des invites OpenAI est implicite et gérée automatiquement. Aucun champ cache_control n’est nécessaire.
Réflexion et raisonnement¶
Réflexion sur les achèvements de chat¶
Pour les modèles Claude, utilisez l’objet reasoning. Pour les modèles de raisonnement OpenAI, utilisez le champ reasoning_effort (valeurs :minimal ,``low`` ,``medium`` ,``high``).
Réflexion de l’API Messages¶
Certains modèles de Claude prennent en charge la réflexion adaptative, où le modèle ajuste la quantité de raisonnement qu’il applique en fonction de la complexité de la tâche. Les modèles suivants prennent en charge la réflexion adaptative :
claude-opus-4-6
Pour l’API Messages, utilisez le paramètre thinking avec``type: « adaptive »`` pour permettre la réflexion adaptative. Le paramètre output_config.effort fournit un certain contrôle de haut niveau sur la profondeur de réflexion et accepte les valeurs suivantes :
Niveau d’effort |
Comportement |
|---|---|
|
Réfléchit toujours sans contraintes sur la profondeur de réflexion. Claude Opus 4.6 uniquement. |
|
Réfléchit toujours. Fournit un raisonnement profond sur des tâches complexes. |
|
Réflexion modérée. Peut ignorer la réflexion pour les requêtes très simples. |
|
Minimise la réflexion. Ignore la réflexion pour les tâches simples où la vitesse compte le plus. |
Les exemples suivants montrent comment faire un appel d’API Messages avec la réflexion adaptative activée :
La réponse comprend des blocs de réflexion avec un résumé de la réflexion et des signatures de réflexion. Transmettez ces blocs dans des conversations à plusieurs tours pour maintenir le contexte de raisonnement :
Pour une description complète de l’API Messages prise en charge pour la réflexion adaptative, voir` Documentation de l’API Claude – Réflexion adaptative <https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking>`__.
Fonctionnalités Bêta (API Messages)¶
L’API Messages prend en charge les fonctions bêta d’Anthropic via l’en-tête anthropic-beta. Transmettez une ou plusieurs valeurs d’en-tête bêta sous la forme d’une chaîne séparée par des virgules.
Valeur d’en-tête bêta |
Fonctionnalité |
|---|---|
|
Outils économes en jetons |
|
Réflexion entrelacée |
|
Active les jetons de sortie jusqu’à 128 K |
|
Mode développeur pour la réflexion brute sur les modèles Claude 4+ |
|
Fenêtre de contexte d’1 million de jetons |
|
Gestion des contextes |
|
Paramètre d’effort pour la réflexion |
|
Outil de recherche d’outils |
|
Exemples d’utilisation d’outils |
L’exemple suivant active la fenêtre de contexte d’1 million de jetons avec``claude-sonnet-4-6`` :
Vous pouvez combiner plusieurs fonctionnalités bêta en transmettant une chaîne séparée par des virgules :
Référence de l’API Achèvements de chat¶
POST /api/v2/cortex/v1/chat/completions¶
Génère un achèvement de chat en utilisant le modèle spécifié. Le format de la requête et de la réponse suit la spécification de l’API Achèvements du chat OpenAI.
En-têtes obligatoires¶
Authorization: Bearer tokenAutorisation pour la requête.:samp:
{token}est un jeton Web JSON (JWT ), un jeton OAuth ou un :doc:` jeton d’accès programmatique</user-guide/programmatic-access-tokens>`. Pour plus de détails, voir Authentification d”Snowflake REST APIs avec Snowflake.Content-Type: application/jsonSpécifie que le corps de la requête est en format JSON.
En-têtes facultatifs¶
X-Snowflake-Authorization-Token-Type: typeDéfinit le type de jeton d’autorisation.
Si vous omettez l’en-tête
X-Snowflake-Authorization-Token-Type, Snowflake détermine le type de jeton en examinant le jeton.Bien que cet en-tête soit facultatif, vous pouvez choisir de le spécifier. Vous pouvez définir l’en-tête sur l’une des valeurs suivantes :
KEYPAIR_JWT(pour l’authentification par paire de clés)OAUTH(pour OAuth)PROGRAMMATIC_ACCESS_TOKEN(pour les jetons d’accès programmatiques)
Accept: application/json, text/event-streamSpécifie que la réponse contiendra soit du JSON (en cas d’erreur), soit des événements envoyés par le serveur.
Champs JSON obligatoires¶
Champ |
Type |
Description |
|---|---|---|
|
string |
Le modèle à utiliser (voir Disponibilité du modèle). Vous pouvez également utiliser le nom complet d’un modèle affiné au format:samp: |
|
tableau |
Un tableau d’objets de message représentant la conversation. Chaque message doit avoir un``role`` ( |
Champs JSON facultatifs couramment utilisés¶
Champ |
Type |
Par défaut |
Description |
|---|---|---|---|
|
entier |
4096 |
Maximum de jetons dans la réponse. Le maximum théorique est 131 072 ; chaque modèle a sa propre limite de sortie. |
|
number |
Varie selon le modèle |
Contrôle l’aléatoire. Valeurs de 0 à 2. |
|
number |
1,0 |
Contrôle la diversité via l’échantillonnage par noyau. |
|
booléen |
false |
S’il faut transmettre la progression partielle en tant qu’événements envoyés par le serveur. |
|
tableau |
null |
Une liste d’outils que le modèle peut appeler. Chaque outil doit avoir un objet |
|
chaîne ou objet |
|
Contrôle la manière dont le modèle sélectionne les outils. Options : |
|
objet |
null |
Contraint le format de sortie. Utiliser |
|
string |
null |
Pour les modèles de raisonnement OpenAI. Valeurs : |
|
objet |
null |
Pour les modèles Claude. Définir |
Voir le tableau de compatibilité détaillé pour obtenir la liste complète des champs pris en charge par famille de modèles.
Codes de statut¶
- 200
OK La requête a été complétée avec succès.
- 400
invalid options object Les arguments facultatifs ont des valeurs non valides.
- 400
unknown model model_name Le modèle spécifié n’existe pas.
- 400
schema validation failed La structure du schéma de réponse est incorrecte.
- 400
max tokens of count exceeded La requête a dépassé le nombre maximum de jetons pris en charge par le modèle.
- 400
all requests were throttled by remote service La requête a été limitée. Veuillez réessayer plus tard.
- 402
budget exceeded Le budget de consommation du modèle a été dépassé.
- 403
Not Authorized Compte non activé pour REST API, ou le rôle par défaut de l’utilisateur appelant n’a pas le rôle de base de données
snowflake.cortex_user.- 429
too many requests Le quota d’utilisation a été dépassé. Veuillez réessayer plus tard.
- 503
inference timed out La requête a pris trop de temps.
Limitations¶
Si non défini, la valeur
max_completion_tokenspar défaut est 4 096. Chaque modèle a sa propre limite de jetons de sortie.L’appel d’outil est pris en charge pour les modèles OpenAI et Claude uniquement.
L’audio n’est pas pris en charge.
La compréhension de l’image est prise en charge pour les modèles OpenAI et Claude uniquement. Les images sont limitées à 20 par conversation avec une taille maximale de requête de 20 MiB.
Seuls les modèles Claude prennent en charge des points de contrôle de cache éphémères pour la mise en cache rapide. Les modèles OpenAI prennent en charge la mise en cache implicite.
Seuls les modèles Claude prennent en charge le renvoi des détails de raisonnement dans la réponse.
max_tokensest obsolète. Utilisezmax_completion_tokensà la place.Les messages d’erreur sont générés par Snowflake, et non par le fournisseur de modèles.
Graphique de compatibilité détaillée¶
Les tableaux suivants récapitulent les champs et en-têtes de requête et de réponse pris en charge lors de l’utilisation de l’API Achèvements de chat Cortex avec différentes familles de modèles hébergées par Snowflake.
Champ |
Modèles OpenAI |
Modèles Claude |
Autres modèles |
|---|---|---|---|
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
❌ Erreur |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
✔ Uniquement utilisateur/assistant/système |
✔ Uniquement utilisateur/assistant/système |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
❌ Erreur |
|
❌ Ignoré |
✔ Pris en charge (éphémère uniquement) |
❌ Ignoré |
|
❌ Erreur |
❌ Erreur |
❌ Ignoré |
|
❌ Erreur |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ Pris en charge (obsolète) |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
✔ pris en charge |
❌ Ignoré |
|
✔ pris en charge |
✔ Uniquement outils |
❌ Ignoré |
|
❌ Ignoré |
✔ Format OpenRouter |
❌ Ignoré |
|
❌ Erreur |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
❌ Erreur (obsolète) |
❌ Erreur (obsolète) |
❌ Erreur (obsolète) |
|
✔ Pris en charge (4 096 par défaut, 131 072 max) |
✔ Pris en charge (4 096 par défaut, 131 072 max) |
✔ Pris en charge (4 096 par défaut, 131 072 max) |
|
❌ Ignoré |
❌ Ignoré |
❌ Ignoré |
|
❌ Ignoré |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
❌ Ignoré (utiliser l’objet |
❌ Ignoré |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ Pris en charge (remplace |
✔ Converti en |
❌ Ignoré |
|
❌ Ignoré |
✔ pris en charge |
❌ Ignoré |
|
✔ pris en charge |
✔ Uniquement |
❌ Ignoré |
|
❌ Ignoré |
❌ Ignoré |
❌ Ignoré |
|
❌ Erreur |
❌ Erreur |
❌ Erreur |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
❌ Erreur |
❌ Erreur |
❌ Erreur |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
❌ Ignoré |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ Uniquement outils |
❌ Ignoré |
|
✔ pris en charge |
✔ Uniquement outils |
❌ Erreur |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
❌ Ignoré |
❌ Ignoré |
|
❌ Erreur |
❌ Ignoré |
❌ Ignoré |
Champ |
Modèles OpenAI |
Modèles Claude |
Autres modèles |
|---|---|---|---|
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ pris en charge |
✔ Choix unique seulement |
✔ Choix unique seulement |
|
✔ pris en charge |
❌ Non pris en charge |
✔ Uniquement |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
❌ Non pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
❌ Non pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
✔ Uniquement outils |
❌ Non pris en charge |
|
❌ Non pris en charge |
✔ Format OpenRouter |
❌ Non pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
✔ Uniquement outils |
❌ Non pris en charge |
|
❌ Non pris en charge |
✔ Format OpenRouter |
❌ Non pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
✔ pris en charge |
✔ pris en charge |
✔ pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
❌ Non pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ Uniquement lectures du cache |
✔ Lecture + écriture du cache |
❌ Non pris en charge |
|
Voir les sous-champs |
Voir les sous-champs |
Voir les sous-champs |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
❌ Non pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
|
✔ pris en charge |
❌ Non pris en charge |
❌ Non pris en charge |
En-tête |
Assistance |
|---|---|
|
✔ Obligatoire |
|
✔ Pris en charge ( |
|
✔ Pris en charge ( |
En-tête |
Assistance |
|---|---|
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
|
❌ Non pris en charge |
En savoir plus¶
Pour d’autres exemples d’utilisation, voir la référence de l’API Achèvements du chat OpenAI ou le Cookbook OpenAI.
En plus de fournir une compatibilité avec l’API Chat Completions, Snowflake prend en charge les fonctionnalités compatibles OpenRouter pour les modèles Claude. Ces fonctionnalités sont exposées sous forme de champs supplémentaires dans la requête :
Pour la mise en cache des invites, utilisez le champ
cache_control. Voir la ` documentation sur la mise en cache des invitesOpenRouter <https://openrouter.ai/docs/features/prompt-caching>`_.Pour les jetons de raisonnement, utilisez le champ
reasoning. Voir la documentation sur le raisonnement OpenRouter.
Référence de l’API Messages¶
POST /api/v2/cortex/v1/messages¶
Génère une réponse en utilisant un modèle Claude. Le format de la requête et de la réponse suit la `spécification de l’API Messages Anthropic<https://docs.anthropic.com/en/api/messages>`_.
Note
L’ API Messages prend en charge les modèles Claude uniquement. Pour les autres modèles, utilisez l’API Achèvements de chat.
En-têtes obligatoires¶
Authorization: Bearer tokenAutorisation pour la requête.:samp:
{token}est un jeton Web JSON (JWT ), un jeton OAuth ou un :doc:` jeton d’accès programmatique</user-guide/programmatic-access-tokens>`. Pour plus de détails, voir Authentification d”Snowflake REST APIs avec Snowflake.Content-Type: application/jsonSpécifie que le corps de la requête est en format JSON.
anthropic-version: 2023-06-01En-tête de version d’API Anthropic requis.
En-têtes facultatifs¶
X-Snowflake-Authorization-Token-Type: typeDéfinit le type de jeton d’autorisation.
Si vous omettez l’en-tête
X-Snowflake-Authorization-Token-Type, Snowflake détermine le type de jeton en examinant le jeton.Bien que cet en-tête soit facultatif, vous pouvez choisir de le spécifier. Vous pouvez définir l’en-tête sur l’une des valeurs suivantes :
KEYPAIR_JWT(pour l’authentification par paire de clés)OAUTH(pour OAuth)PROGRAMMATIC_ACCESS_TOKEN(pour les jetons d’accès programmatiques)
anthropic-beta: featureActive les fonctions bêta. Seuls les en-têtes bêta compatibles Bedrock sont pris en charge.
Champs JSON obligatoires¶
Champ |
Type |
Description |
|---|---|---|
|
string |
Le modèle Claude à utiliser (voir Disponibilité du modèle). |
|
entier |
Le nombre maximal de jetons à générer. |
|
tableau |
Un tableau d’objets de message. Chaque message a un |
Fonctionnalités prises en charge¶
L’API Messages prend en charge l’ensemble de fonctionnalités d’API Messages Anthropic standard pour les modèles Claude, dont :
Génération de texte et conversations à plusieurs tours
Streaming (
"stream": true)Messages système (via le champ
systemde niveau supérieur)Appel d’outils (format Anthropic avec
name,description,input_schema)Inclusion d’images (blocs sources base64)
Mise en cache des invites (
cache_controlsur les blocs de contenu)Réflexion étendue (paramètre
thinkingavec``budget_tokens``)
Pour des détails complets sur les schémas de requêtes et de réponses, voir la documentation de l’API Messages Anthropic.
Limitations¶
**Modèles Claude uniquement.**OpenAI, Llama, Mistral et d’autres modèles ne sont pas disponibles via ce point de terminaison.
Pas de traitement flexible ni de niveau de priorité. Le champ
service_tiern’est pas pris en charge.En-têtes bêta Bedrock uniquement. Seules les valeurs d’en-tête
anthropic-betacompatibles Bedrock sont prises en charge.Les messages d’erreur sont générés par Snowflake et non par Anthropic.
Codes de statut¶
- 200
OK La requête a été complétée avec succès.
- 400
invalid_request_error Le corps de la requête est malformé ou contient des valeurs non valides.
- 400
unknown model model_name Le modèle spécifié n’existe pas ou n’est pas un modèle Claude.
- 402
budget exceeded Le budget de consommation du modèle a été dépassé.
- 403
Not Authorized Compte non activé pour l’API REST ou le rôle par défaut n’a pas le rôle de base de données
snowflake.cortex_user.- 429
too many requests Le quota d’utilisation a été dépassé. Veuillez réessayer plus tard.
- 503
inference timed out La requête a pris trop de temps.
Limites de débit¶
Afin de garantir des performance élevées pour tous les clients de Snowflake, les requêtes d’API REST Snowflake Cortex sont soumises à des limites de débit. Les requêtes dépassant les limites peuvent recevoir une réponse HTTP 429. Snowflake peut parfois ajuster ces limites.
Les limites par défaut dans les tableaux suivants sont appliquées par compte et indépendamment pour chaque modèle. Assurez-vous que votre application traite correctement les réponses 429 en réessayant avec l’interruption exponentielle.
Si vous avez besoin d’augmenter cette limite, contactez le support Snowflake.
Modèle
|
Jetons traités
par minute (TPM)
|
Requêtes par
Minute (RPM)
|
Sortie maximale (jetons)
|
|---|---|---|---|
claude-3-5-sonnet |
300,000 |
300 |
16,384 |
claude-3-7-sonnet |
300,000 |
300 |
16,384 |
claude-sonnet-4-5 |
600,000 |
600 |
16,384 |
claude-haiku-4-5 |
600,000 |
600 |
16,384 |
claude-4-sonnet |
300,000 |
300 |
16,384 |
claude-4-opus |
75,000 |
75 |
16,384 |
deepseek-r1 |
100,000 |
100 |
16,384 |
llama3.1-8b |
400,000 |
400 |
16,384 |
llama3.1-70b |
200,000 |
200 |
16,384 |
llama3.1-405b |
100,000 |
100 |
16,384 |
mistral-7b |
400,000 |
400 |
16,384 |
mistral-large2 |
200,000 |
200 |
16,384 |
openai-gpt-4.1 |
300,000 |
300 |
16,384 |
openai-gpt-5 |
300,000 |
300 |
16,384 |
openai-gpt-5-chat |
300,000 |
300 |
16,384 |
openai-gpt-5-mini |
1,000,000 |
1,000 |
16,384 |
openai-gpt-5-nano |
5,000,000 |
5,000 |
16,384 |
Augmenter les limites de débit grâce à l’inférence interrégionale¶
si vous configurez l’inférence interrégionale dans votre compte snowflake, les limites de débit pour sont plus élevées pour les modèles suivants :
Modèle
|
Jetons traités
par minute (TPM)
|
Requêtes par
Minute (RPM)
|
Sortie maximale (jetons)
|
|---|---|---|---|
claude-3-7-sonnet |
600,000 |
600 |
16,384 |
claude-haiku-4-5 |
600,000 |
600 |
16,384 |
claude-sonnet-4-5 |
600,000 |
600 |
16,384 |
claude-4-sonnet |
1 200 000 |
1,200 |
16,384 |
claude-4-opus |
150,000 |
150 |
16,384 |
llama3.1-8b |
800,000 |
400 |
16,384 |
llama3.1-70b |
400,000 |
200 |
16,384 |
llama3.1-405b |
200,000 |
100 |
16,384 |
Dépannage des événements de limite de débit¶
Ne pas respecter les limites TPM ou RPM entraînera un code de réponse 429. si votre utilisation de l’API REST est inférieure à la limite de débit de requête par minute, mais a quand même reçu un code de réponse 429, revérifiez la limite d’utilisation des jetons.
l’API REST cortex implémente des limites de débit à l’aide du modèle compteur de fenêtrages glissants. Les compteurs sont stockés dans un cluster Redis hautement disponible qui n’est accessible que par Snowflake Cortex au sein du réseau privé de Snowflake.
le compteur à fenêtrages glissants suppose que le trafic du client vers l’API dans le fenêtrage temporel précédent est uniformément distribué. Lorsque le trafic est important, cette hypothèse pourrait surestimer le taux des requêtes, mais se rétablit rapidement étant donné que le fenêtrage est court. Veuillez contacter l’assistance Snowflake si vous êtes soumis à une surestimation et que vous souhaitez augmenter les limites.
Problèmes connus¶
Expiration des jetons de session¶
Nous vous recommandons de vous authentifier avec l’une des trois méthodes définies dans Authentification d”Snowflake REST APIs avec Snowflake. Cependant, si vous choisissez de vous authentifier avec un jeton de session Snowflake, vous devez gérer l’actualisation du jeton pour assurer un accès ininterrompu à l’API.
Les jetons de session expirent périodiquement. Si une requête est exécutée avec un jeton de session expiré, l’API REST renvoie une réponse 200 OK qui comprend le code d’erreur 390112. Lorsque cela se produit, l’opération n’est pas effectuée.
Pour gérer ce comportement, votre application doit :
Vérifiez chaque réponse d’API pour le code d’erreur
390112, même lorsque le code d’état HTTP est200 OK.Lorsque le code d’erreur
390112est détecté, actualisez le jeton de session et réessayez la requête.
Note
Ce comportement n’affecte que les applications utilisant des jetons de session Snowflake. Si vous vous authentifiez en utilisant l’authentification par paire de clés, OAuth ou des jetons d’accès programmatiques (PATs), vous n’avez pas besoin d’implémenter ce traitement des erreurs.
Considérations relatives aux clients¶
Les requêtes API REST Snowflake Cortex ont un coût de calcul basé sur le nombre de jetons traités. Reportez-vous au Tableau de consommation du service Snowflake pour connaître le coût de chaque modèle en crédits par million de jetons.
Un jeton est la plus petite unité de texte traitée par les fonctions Snowflake Cortex LLM, correspondant approximativement à quatre caractères de texte. L’équivalence du texte brut d’entrée ou de sortie en jetons peut varier selon le modèle.
Les jetons d’entrée et de sortie entraînent tous deux des coûts de calcul. Si vous utilisez l’API pour offrir une expérience utilisateur conversationnelle ou de chat, toutes les invites et réponses précédentes sont traitées pour générer chaque nouvelle réponse, avec les coûts correspondants.
