Transformers documentation

Modèles de messages de chat

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Modèles de messages de chat

Les modèles de chat s'attendent à recevoir des conversations sous forme de liste de dictionnaires. Chaque dictionnaire utilise les clés role et content. La clé content contient le message de l'utilisateur transmis au modèle. Les grands modèles de langage acceptent du texte et des outils, tandis que les modèles multimodaux combinent du texte avec des images, des vidéos et de l'audio.

Transformers utilise un format unifié dans lequel chaque type de modalité est spécifié explicitement, ce qui permet de mélanger et d’associer facilement les entrées dans un seul message.

Ce guide présente les modèles de formatage des messages pour chaque modalité, les outils, l’inférence par lots et les conversations multi-tours.

Texte

Le texte est le type de contenu le plus basique. Il constitue la base de tous les autres modèles. Transmettez votre message à "content" sous forme de chaîne de caractères.

message = [
    {
        "role": "user",
        "content": "Explain the French Bread Law."
    }
]

Vous pouvez également utiliser le format explicite "type": "text" pour garder votre code cohérent lorsque vous ajouterez des images, des vidéos ou de l’audio plus tard.

message = [
    {
        "role": "user",
        "content": [{"type": "text", "text": "Explain the French Bread Law."}]
    }
]

Outils

Les outils sont des fonctions qu’un modèle de chat peut appeler, par exemple pour obtenir des données météo en temps réel, plutôt que de les générer lui-même.

Le rôle assistant gère la requête d’outil. Définissez "type": "function" dans la clé "tool_calls" et fournissez votre outil à la clé "function". Ajoutez la requête d’outil de l’assistant à votre message.

weather = {"name": "get_current_temperature", "arguments": {"location": "Paris, France", "unit": "celsius"}}
message.append(
    {
        "role": "assistant", 
        "tool_calls": [{"type": "function", "function": weather}]
    }
)

Le rôle tool gère le résultat. Ajoutez-le dans "content". Cette valeur doit toujours être une chaîne de caractères.

message.append({"role": "tool", "content": "22"})

Multimodal

Les modèles multimodaux étendent ce format pour traiter des images, des vidéos et de l'audio. Chaque entrée spécifie son "type" et fournit le média avec "url" ou "path".

Image

Définissez "type": "image" et utilisez "url" pour les liens ou "path" pour les fichiers locaux.

message = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
            {"type": "text", "text": "What pastry is shown in the image?"}
        ]
    }
]

Vidéo

Définissez "type": "video" et utilisez "url" pour les liens ou "path" pour les fichiers locaux.

message = [
    {
        "role": "user",
        "content": [
            {"type": "video", "url": "https://static01.nyt.com/images/2019/10/01/dining/01Sourdough-GIF-1/01Sourdough-GIF-1-superJumbo.gif"},
            {"type": "text", "text": "What is shown in this video?"}
        ]
    }
]

Audio

Définissez "type": "audio" et utilisez "url" pour les liens ou "path" pour les fichiers locaux.

message = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "url": "https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"},
            {"type": "text", "text": "Transcribe the speech."}
        ]
    }
]

Mixtes multiples

La liste content accepte toute combinaison de types. Le modèle traite toutes les entrées ensemble, permettant des comparaisons ou un raisonnement intermodal.

message = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
            {"type": "video", "url": "https://static01.nyt.com/images/2019/10/01/dining/01Sourdough-GIF-1/01Sourdough-GIF-1-superJumbo.gif"},
            {"type": "text", "text": "What does the image and video share in common?"},
        ],
    },
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
            {"type": "image", "url": "https://assets.bonappetit.com/photos/57e191f49f19b4610e6b7693/master/w_1600%2Cc_limit/undefined"},
            {"type": "text", "text": "What type of pastries are these?"},
        ],
    }
]

Par lots

L'inférence par lots traite plusieurs conversations lors d'un seul passage avant pour améliorer le débit et l'efficacité. Enveloppez chaque conversation dans sa propre liste, puis passez-les ensemble sous forme de liste de listes.

messages = [
    [
        {"role": "user",
        "content": [
                {"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
                {"type": "text", "text": "What type of pastry is this?"}
            ]
        },
    ],
    [
        {"role": "user",
        "content": [
                {"type": "image", "url": "https://assets.bonappetit.com/photos/57e191f49f19b4610e6b7693/master/w_1600%2Cc_limit/undefined"},
                {"type": "text", "text": "What type of pastry is this?"}
            ]
        },
    ],
]

Multi-tours

Les conversations s’étendent sur plusieurs échanges, alternant entre les rôles "user" et "assistant". Chaque tour ajoute un nouveau message à la liste, offrant au modèle un accès à l’historique complet de la conversation. Ce contexte aide le modèle à générer des réponses plus appropriées.

message = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
            {"type": "text", "text": "What pastry is shown in the image?"}
        ]
    },
    {
        "role": "assistant",
        "content": [{"type": "text", "text": "This is kouign amann, a laminated dough pastry (i.e., dough folded with layers of butter) that also incorporates sugar between layers so that during baking the sugar caramelizes."}]
    },
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://static01.nyt.com/images/2023/07/21/multimedia/21baguettesrex-hbkc/21baguettesrex-hbkc-videoSixteenByNineJumbo1600.jpg"},
            {"type": "text", "text": "Compare it to this image now."}
        ]
    }
]
Update on GitHub