Catégories :

Fonctions de chaîne et fonctions binaires (Large Language Model)

AI_COMPLETE (Chaîne unique)

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) à un prompt textuel à l’aide d’un modèle de langage pris en charge.

Syntaxe

La fonction contient deux arguments obligatoires et quatre arguments facultatifs. La fonction peut être utilisée avec la syntaxe des arguments positionnels ou nommés.

Utilisation de AI_COMPLETE avec une entrée de chaîne unique

AI_COMPLETE(
    <model>, <prompt> [ , <model_parameters>, <response_format>, <show_details> ] )
Copy

Arguments

model

Une chaîne spécifiant le modèle à utiliser. Spécifiez l’un des modèles suivants :

  • claude-4-opus

  • claude-4-sonnet

  • claude-3-7-sonnet

  • claude-3-5-sonnet

  • deepseek-r1

  • gemma-7b

  • jamba-1.5-mini

  • jamba-1.5-large

  • jamba-instruct

  • llama2-70b-chat

  • llama3-8b

  • llama3-70b

  • llama3.1-8b

  • llama3.1-70b

  • llama3.1-405b

  • llama3.2-1b

  • llama3.2-3b

  • llama3.3-70b

  • llama4-maverick

  • llama4-scout

  • mistral-large

  • mistral-large2

  • mistral-7b

  • mixtral-8x7b

  • openai-gpt4.1

  • openai-o4-mini

  • reka-core

  • reka-flash

  • snowflake-arctic

  • snowflake-llama-3.1-405b

  • snowflake-llama-3.3-70b

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

prompt

Un prompt de chaînes

model_parameters

Un objet contenant zéro ou plusieurs 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.

    Par défaut : FALSE

response_format

Un schéma JSON que la réponse doit suivre. Il s’agit d’un sous-objet SQL, et non d’une chaîne. Si response_format n’est pas spécifié, la réponse est une chaîne contenant soit la réponse, soit un objet sérialisé JSON contenant la réponse et des informations à son sujet.

Pour plus d’informations, voir Sorties structurées AI_COMPLETE.

show_details

Un drapeau booléen qui indique s’il faut renvoyer un objet booléen sérialisé JSON contenant la réponse et des informations à son sujet.

Renvoie

Lorsque l’argument show_details n’est pas spécifié ou est défini sur FALSE et que l’argument response_format n’est pas spécifié ou est défini sur NULL, renvoie une chaîne contenant la réponse.

Lorsque l’argument show_details n’est pas spécifié ou qu’il est défini sur FALSE et que l’argument response_format est spécifié, renvoie un objet suivant le format de réponse fourni.

Lorsque l’argument show_details est défini sur TRUE et que response_format n’est pas spécifié, renvoie un objet JSON contenant les clés suivantes.

  • "choices" : un tableau des réponses du modèle. (Actuellement, une seule réponse est fournie). Chaque réponse est un objet contenant une clé "messages" dont la valeur est la réponse du modèle à la dernière invite.

  • "created" : horodatage UNIX (secondes depuis minuit, 1er janvier 1970) à laquelle la réponse a été générée.

  • "model" : nom du modèle qui a créé la réponse.

  • "usage" : objet enregistrant le nombre de jetons consommés et générés par cette exécution. Comprend les sous-clés suivantes :

    • "completion_tokens" : nombre de jetons dans la réponse générée.

    • "prompt_tokens" : nombre de jetons dans l’invite.

    • "total_tokens" : nombre total de jetons consommés, qui est la somme des deux autres valeurs.

Lorsque l’argument show_details est défini sur TRUE et que l’argument response_format est spécifié, renvoie un objet JSON contenant les clés suivantes

  • "structured_output" : Un objet JSON suivant le format de réponse spécifié

  • "created" : horodatage UNIX (secondes depuis minuit, 1er janvier 1970) à laquelle la réponse a été générée.

  • "model" : nom du modèle qui a créé la réponse.

  • "usage" : objet enregistrant le nombre de jetons consommés et générés par cette exécution. Comprend les sous-clés suivantes :

    • "completion_tokens" : nombre de jetons dans la réponse générée.

    • "prompt_tokens" : nombre de jetons dans l’invite.

    • "total_tokens" : nombre total de jetons consommés, qui est la somme des deux autres valeurs.

Exemples

Réponse unique

Pour générer une réponse unique :

SELECT AI_COMPLETE('snowflake-arctic', 'What are large language models?');
Copy

Réponses de la colonne de table

L’exemple suivant génère une réponse pour chaque ligne de la table reviews, en utilisant la colonne content comme entrée. Chaque résultat de requête contient une critique de l’examen correspondant.

SELECT AI_COMPLETE(
    'mistral-large',
        CONCAT('Critique this review in bullet points: <review>', content, '</review>')
) FROM reviews LIMIT 10;
Copy

Astuce

Comme le montre cet exemple, vous pouvez utiliser le marquage dans l’invite pour contrôler le type de réponse générée. Voir Guide des invites LLaMA 2 pour des conseils.

Contrôle des paramètres du modèle

L’exemple suivant spécifie le model_parameters utilisé pour fournir une réponse.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    }
);
Copy

La réponse est une chaîne contenant le message du modèle de langage et d’autres informations. Notez que la réponse est tronquée comme indiqué dans l’argument model_parameters.

"The unique pattern on a snowflake is"
Copy

Sortie détaillée

L’exemple suivant montre comment vous pouvez utiliser l’argument show_details pour renvoyer des détails supplémentaires sur l’inférence.

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'how does a snowflake get its unique pattern?',
    model_parameters => {
        'temperature': 0.7,
        'max_tokens': 10
    },
    show_details => true
);
Copy

La réponse est un objet JSON contenant le message du modèle et les détails qui s’y rapportent. L’argument options a été utilisé pour tronquer la sortie.

{
    "choices": [
        {
            "messages": " The unique pattern on a snowflake is"
        }
    ],
    "created": 1708536426,
    "model": "llama2-70b-chat",
    "usage": {
        "completion_tokens": 10,
        "prompt_tokens": 22,
        "guardrail_tokens": 0,
        "total_tokens": 32
    }
}
Copy

Spécification d’un format de réponse JSON

Cet exemple illustre l’utilisation de l’argument response_format de la fonction pour renvoyer une réponse structurée

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    }
);
Copy

La réponse est un objet JSON qui suit le format de réponse structuré.

Réponse :

{
    "sentiment_categories": [
        {
            "food_cost": "negative",
            "food_quality": "positive",
            "food_taste": "positive",
            "wait_time": "neutral"
        }
    ]
}

Spécification d’un format de réponse JSON avec sortie détaillée

Cet exemple illustre l’utilisation de l’argument response_format de la fonction pour renvoyer une réponse structurée combinée à show_details pour obtenir des informations d’inférence supplémentaires

SELECT AI_COMPLETE(
    model => 'llama2-70b-chat',
    prompt => 'Extract structured data from this customer interaction note: Customer Sarah Jones complained about the mobile app crashing during checkout. She tried to purchase 3 items: a red XL jacket ($89.99), blue running shoes ($129.50), and a fitness tracker ($199.00). The app crashed after she entered her shipping address at 123 Main St, Portland OR, 97201. She has been a premium member since January 2024.',
    model_parameters => {
        'temperature': 0,
        'max_tokens': 4096
    },
    response_format => {
            'type':'json',
            'schema':{'type' : 'object','properties' : {'sentiment_categories':{'type':'array','items':{'type':'object','properties':
            {'food_quality' : {'type' : 'string'},'food_taste': {'type':'string'}, 'wait_time': {'type':'string'}, 'food_cost': {'type':'string'}},'required':['food_quality','food_taste' ,'wait_time','food_cost']}}}}
    },
    show_details => true
);
Copy

La réponse est un objet JSON contenant une réponse structurée avec des métadonnées d’inférence supplémentaires.

{
    "created": 1738683744,
    "model": "mistral-large2",
    "structured_output": [
        {
            "raw_message": {
                "sentiment_categories": [
                    {
                        "food_cost": "negative",
                        "food_quality": "positive",
                        "food_taste": "positive",
                        "wait_time": "neutral"
                    }
                ]
            },
            "type": "json"
        }
    ],
    "usage": {
        "completion_tokens": 60,
        "prompt_tokens": 94,
        "total_tokens": 154
    }
}