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> ] )
Copy

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 valeur content 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 que top_p restreint l’ensemble des jetons possibles que le modèle produit, tandis que temperature 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’argument prompt 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?');
Copy

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;
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 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
    }
);
Copy

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
    }
}
Copy

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;
Copy

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
    }
}
Copy