Catégories :

Fonctions de chaîne et fonctions binaires (Fonctions AI)

AI_COMPLETE (Objet de prompt)

Note

AI_COMPLETE est la version actualisée de COMPLETE (SNOWFLAKE.CORTEX). Pour obtenir les dernières fonctionnalités, utilisez AI_COMPLETE.

Génère une réponse (exécution) pour un objet de prompt. L’invite peut contenir des objets FILE, qui peuvent contenir des images ou des documents.

Syntaxe

La fonction peut être utilisée avec la syntaxe des arguments positionnels ou nommés.

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters> ] )

Arguments

model

Une chaîne spécifiant le modèle à utiliser. Pour les entrées de texte uniquement, vous pouvez utiliser l’un des modèles suivants :

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-3-5-sonnet

  • deepseek-r1

  • llama3-8b

  • llama3-70b

  • llama3.1-8b

  • llama3.1-70b

  • llama3.1-405b

  • llama3.3-70b

  • llama4-maverick

  • llama4-scout

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • openai-gpt-4.1

  • openai-o4-mini

  • snowflake-arctic

  • snowflake-llama-3.1-405b

  • snowflake-llama-3.3-70b

Pour les entrées d’images, vous pouvez utiliser l’un des modèles suivants :

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-haiku-4-5

  • claude-sonnet-4-5

  • claude-opus-4-5

  • claude-sonnet-4-6

  • claude-opus-4-6

  • llama4-maverick

  • llama4-scout

  • pixtral-large

  • openai-o4-mini

  • openai-gpt-4.1

  • openai-gpt-5

  • openai-gpt-5-chat

  • openai-gpt-5-mini

  • openai-gpt-5-nano

  • openai-gpt-5.1

  • openai-gpt-5.2

  • gemini-2.5-flash

  • gemini-2.5-flash-lite

  • gemini-3-pro

Pour les entrées de document, vous pouvez utiliser l’un des modèles suivants :

  • gemini-3-pro

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-haiku-4-5

  • claude-sonnet-4-5

  • claude-opus-4-5

Les modèles pris en charge peuvent avoir des coûts différents.

prompt

Un objet d’invite contenant du texte et, éventuellement, des images ou des documents.

model_parameters Un objet contenant plusieurs ou aucune des options suivantes qui affectent les hyperparamètres du modèle. Voir Paramètres LLM.

  • temperature : une valeur comprise entre 0 et 1 (inclusivement) qui contrôle le caractère aléatoire de la sortie du modèle de langage. Une température plus élevée (par exemple, 0,7) produit des résultats plus divers et aléatoires, tandis qu’une température plus basse (telle que 0,2) rend les résultats plus déterministes et plus ciblés.

    Par défaut : 0

  • top_p : une valeur comprise entre 0 et 1 (inclus) qui contrôle le caractère aléatoire et la diversité du modèle linguistique, généralement utilisée comme alternative à temperature. La différence est que top_p restreint l’ensemble des jetons possibles que le modèle produit, tandis que temperature influence les jetons choisis à chaque étape.

    Par défaut : 0

  • max_tokens : définit le nombre maximum de jetons de sortie dans la réponse. De petites valeurs peuvent entraîner des réponses tronquées.

    Valeur par défaut : 4 096 Valeur maximale autorisée : 8 192

  • guardrails : filtre les réponses potentiellement dangereuses et nuisibles d’un modèle de langage avec Cortex Guard. Soit TRUE soit FALSE. La valeur par défaut est FALSE.

Important

Si vous utilisez AI_COMPLETE avec un objet invite, vous ne pouvez pas fournir de schéma JSON pour obtenir une sortie structurée comme réponse.

Pour obtenir une sortie structurée comme réponse, utilisez le paramètre response_format avec AI_COMPLETE (Chaîne unique). Pour en savoir plus sur l’utilisation des sorties structurées, voir Sorties structurées AI_COMPLETE.

Exemple

Passage de plusieurs images en entrée

L’exemple suivant compare deux images en les passant toutes deux en entrée de la fonction AI_COMPLETE et en demandant si elles sont toutes deux des images de chats :

SELECT AI_COMPLETE('claude-3-5-sonnet',
  PROMPT('Are both image {0} and image {1} pictures of cats?',
    TO_FILE('@myimages', 'sleepingcat.png'), TO_FILE('@myimages', 'jumpingcat.png'))) AS image_classification;

Traitement par lots d’images à partir d’un répertoire ou d’une table

Pour le traitement par lots de plusieurs images, en effectuant la même opération sur chacune d’elles, stockez les fichiers images dans la même zone de préparation. Appliquez la fonction AI_COMPLETE à chaque ligne de la table.

Note

La zone de préparation interne doit disposer d’une table de répertoire pour récupérer les chemins d’accès à ses fichiers.

Créez d’abord la table en récupérant les emplacements des images dans le répertoire, en les convertissant en objets FILE et en stockant les objets FILE qui en résultent dans la colonne d’une table. Utilisez SQL comme ce qui suit :

CREATE TABLE image_table AS
    (SELECT TO_FILE('@myimages', RELATIVE_PATH) AS img FROM DIRECTORY(@myimages));

Appliquez ensuite la fonction AI_COMPLETE à la colonne contenant les objets FILE. L’exemple suivant permet de classer chaque image de la table :

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON', img_file)) AS image_classification
FROM image_table;

Réponse :

{ "classification": "Inflation Rates" }
{ "classification": "beverage refrigerator" }
{ "classification": "Space Needle" }
{ "classification": "Modern Kitchen" }
{ "classification": "Pie Chart" }
{ "classification": "Economic Graph" }
{ "classification": "Persian Cat" }
{ "classification": "Labrador Retriever" }
{ "classification": "Jedi Cat" }
{ "classification": "Sleeping cat" }
{ "classification": "Persian Cat" }
{ "classification": "Garden Costume" }
{ "classification": "Floral Fashion" }

Si vous disposez déjà d’une table contenant les chemins d’accès aux images, vous pouvez utiliser la fonction TO_FILE pour construire les objets FILE dans la requête :

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
        TO_FILE('@myimages', img_path)) AS image_classification
FROM image_table;

Vous pouvez également récupérer les images à traiter directement dans le répertoire d’une zone de préparation, comme indiqué ici :

SELECT AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Classify the input image {0} in no more than 2 words. Respond in JSON',
        TO_FILE('@myimages', RELATIVE_PATH))) as image_classification
FROM DIRECTORY(@myimages);

Fournir des images et des prompts dans une table

Pour effectuer une opération différente sur chaque image d’un tableau, fournissez les images et les prompts correspondants dans un tableau. Dans l’exemple suivant, la table contient le chemin de la zone de préparation interne de chaque image dans la colonne img_path et le prompt dans la colonne prompt.

AI_COMPLETE('claude-3-5-sonnet',
    PROMPT('Given the input image {0}, {1}. Respond in JSON',
        TO_FILE('@myimages', img_path), prompt) as image_result)
FROM image_table;

Notes sur l’utilisation pour le traitement des images

  • Pour traiter plusieurs images, spécifiez un objet d’invite dans l’appel de fonction qui définit un modèle d’invite et les fichiers images associés. Vous pouvez utiliser la fonction PROMPT pour créer cet objet. Le modèle d’invite peut contenir des espaces réservés numérotés ({0}, {1}, etc.) qui correspondent aux images de l’objet d’invite. Utilisez la fonction TO_FILE pour spécifier les fichiers de document dans l’objet d’invite.

  • Seuls le texte et les images sont pris en charge. Les fichiers vidéo et audio ne sont pas pris en charge.

  • Formats d’image pris en charge :

    • .jpg

    • .jpeg

    • .png

    • .gif

    • .webp

    Les modèles pixtral et llama4 prennent également en charge .bmp.

  • La taille maximale de l’image est de 10 MB pour la plupart des modèles et de 3,75 MB pour les modèles claude. Les modèles claude ne prennent pas en charge les images dont la résolution est supérieure à 8000x8000.

  • La zone de préparation contenant les images doit avoir le chiffrement côté serveur activé. Les zones de préparation chiffrées côté client ne sont pas prises en charge.

  • La fonction ne prend pas en charge les politiques réseau personnalisées.

  • Les noms de zones de préparation ne tiennent pas compte de la casse ; les chemins tiennent compte de la casse.

Notes sur l’utilisation pour le traitement des documents

  • Pour traiter plusieurs documents, spécifiez un objet d’invite dans l’appel de fonction qui définit un modèle d’invite et les fichiers de documents associés. Vous pouvez utiliser la fonction PROMPT pour créer cet objet. Le modèle d’invite peut contenir des espaces réservés numérotés ({0}, {1}, etc.) qui correspondent aux documents de l’objet d’invite. Utilisez la fonction TO_FILE pour spécifier les fichiers de document dans l’objet d’invite.

  • Seuls le texte et les documents sont pris en charge. Les fichiers vidéo et audio ne sont pas pris en charge.

  • Tous les modèles prennent en charge les formats suivants :.txt, .md et .pdf. Les modèles Claude prennent également en charge .txt, .md, .pdf, .doc, .docx, .xls, .xlsx, .csv et .xhtml.

  • Les modèles Claude imposent une taille maximale de document de 4,5 MB. Gemini 3 Pro impose une taille maximale du document de 10 MB.

  • La fonction ne prend pas en charge les politiques réseau personnalisées.

  • Les noms de zones de préparation ne tiennent pas compte de la casse ; les chemins tiennent compte de la casse.