- 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> ] )
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 quetop_p
restreint l’ensemble des jetons possibles que le modèle produit, tandis quetemperature
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?');
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;
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
}
);
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"
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
);
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
}
}
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']}}}}
}
);
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
);
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
}
}