- Catégories :
Fonctions de chaîne et fonctions binaires (Large Language Model)
COMPLETE (SNOWFLAKE.CORTEX)¶
À partir d’une invite, génère une réponse (achèvement) en utilisant le modèle de langage pris en charge de votre choix.
Syntaxe¶
SNOWFLAKE.CORTEX.COMPLETE(
<model>, <prompt_or_history> [ , <options> ] )
Arguments¶
Obligatoire :
model
Une chaîne spécifiant le modèle à utiliser. Cela doit être l’une des valeurs suivantes.
'mistral-large'
'mixtral-8x7b'
'llama2-70b-chat'
'mistral-7b'
'gemma-7b'
Les modèles pris en charge peuvent avoir des coûts et des quotas différents.
prompt_or_history
L’invite ou l’historique de la conversation à utiliser pour générer un achèvement.
Si
options
n’est pas présent, l’invite donnée doit être une chaîne.Si
options
est présent, l’argument doit être un tableau d’objets représentant une conversation dans l’ordre chronologique. Chaque objet doit contenir une clérole
et une clécontent
. La valeurcontent
est une invite ou une réponse, selon le rôle. Le rôle doit être l’un des suivants.Valeur
role
Valeur
content
system
Une invite initiale en anglais adressée au modèle linguistique pour lui fournir des informations générales et des instructions sur le style de réponse. Par exemple, « Répondez dans le style d’un pirate ». Le modèle ne génère pas de réponse à une invite du système. Une seule invite système peut être fournie, et si elle est présente, elle doit être la première du tableau.
'user'
Une invite fournie par l’utilisateur. Doit suivre l’invite du système (s’il y en a une) ou la réponse d’un assistant.
'assistant'
Une réponse précédemment fournie par le modèle linguistique. Doit suivre une invite de l’utilisateur. Les réponses passées peuvent être utilisées pour fournir une expérience de conversation avec état ; voir Notes sur l’utilisation.
Facultatif :
options
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.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.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.
La spécification de l’argument
options
, même s’il s’agit d’un objet vide ({}
), impacte l’interprétation de l’argumentprompt
et le formatage de la réponse.
Renvoie¶
Si l’argument options
n’est pas spécifié, une chaîne.
Lorsque l’argument options
est donné, une représentation sous forme de chaîne d’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.
Contrôle d’accès¶
Les utilisateurs doivent utiliser un rôle auquel le rôle de base de données SNOWFLAKE.CORTEX_USER a été accordé. Voir Privilèges requis pour plus d’informations sur l’octroi de ce privilège.
Notes sur l’utilisation¶
COMPLETE ne conserve aucun état d’un appel à l’autre. Pour utiliser la fonction COMPLETE afin de fournir une expérience conversationnelle avec état, transmettez toutes les invites précédentes de l’utilisateur et les réponses du modèle dans la conversation en tant qu’éléments du tableau prompt_or_history
. (Voir Modèles pour les modèles de chat). N’oubliez pas que le nombre de jetons traités augmente à chaque « tour » et que les coûts augmentent proportionnellement.
Exemples¶
Réponse unique¶
Pour générer une réponse unique :
SELECT SNOWFLAKE.CORTEX.COMPLETE('mistral-large', 'What are large language models?');
Réponses de la colonne de table¶
L’exemple suivant génère une réponse à partir de chaque ligne d’une table (dans cet exemple, content
est une colonne de la table reviews
). La table reviews
contient une colonne nommée review_content
contenant le texte des avis soumis par les utilisateurs. La requête renvoie une critique de chaque avis.
SELECT SNOWFLAKE.CORTEX.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 de la température et des jetons¶
Cet exemple illustre l’utilisation de l’argument options
de la fonction pour contrôler les hyperparamètres d’inférence dans une seule réponse. Notez que dans cette forme de la fonction, l’invite doit être fournie sous la forme d’un tableau, puisque cette forme prend en charge plusieurs invites et réponses.
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama2-7b-chat',
[
{
'role': 'user',
'content': 'how does a snowflake get its unique pattern?'
}
],
{
'temperature': 0.7,
'max_tokens': 10
}
);
La réponse est un objet JSON contenant le message du modèle linguistique et d’autres informations. Notez que la réponse est tronquée comme indiqué dans l’argument options
.
{
"choices": [
{
"messages": " The unique pattern on a snowflake is"
}
],
"created": 1708536426,
"model": "llama2-70b-chat",
"usage": {
"completion_tokens": 10,
"prompt_tokens": 22,
"total_tokens": 32
}
}
Exemple : Fournir une invite au système¶
Cet exemple illustre l’utilisation d’une invite système pour fournir une analyse de sentiment des critiques de films. L’argument prompt
est ici un tableau d’objets, chacun ayant une valeur role
appropriée.
SELECT SNOWFLAKE.CORTEX.COMPLETE(
'llama2-70b-chat',
[
{'role': 'system', 'content': 'You are a helpful AI assistant. Analyze the movie review text and determine the overall sentiment. Answer with just \"Positive\", \"Negative\", or \"Neutral\"' },
{'role': 'user', 'content': 'this was really good'}
], {}
) as response;
La réponse est un objet JSON contenant la réponse du modèle linguistique et d’autres informations.
{
"choices": [
{
"messages": " Positive"
}
],
"created": 1708479449,
"model": "llama2-70b-chat",
"usage": {
"completion_tokens": 3,
"prompt_tokens": 64,
"total_tokens": 67
}
}
Avis juridiques¶
Les fonctions LLM Cortex de Snowflake sont alimentées par des technologies de machine learning, y compris LLaMA 2 de Meta. Le modèle de la fondation LLaMA 2 est sous licence LLaMA 2 Community License et Copyright (c) Meta Platforms, Inc. Tous droits réservés. Votre utilisation de fonctions LLM basées sur le modèle LLama 2 est soumise à la politique d’utilisation acceptable de Meta.
La technologie de machine learning et les résultats fournis peuvent être inexacts, incorrects ou biaisés. Les décisions basées sur les résultats du machine learning, y compris celles qui sont intégrées dans des pipelines automatiques, devraient être soumises à une supervision humaine et à des processus d’examen pour s’assurer que le contenu généré par le modèle est exact.
Les requêtes de fonctions LLM seront traitées comme toute autre requête SQL et peuvent être considérées comme des métadonnées.
Pour plus d’informations, voir la FAQ relative à la confiance et à la sécurité concernant l’AI de Snowflake.