Transformers documentation

Padrões de mensagens 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

Padrões de mensagens de chat

Modelos de chat esperam conversas como uma lista de dicionários. Cada dicionário usa as chaves role e content. A chave content contém a mensagem do usuário passada ao modelo. Modelos de linguagem de grande porte aceitam texto e ferramentas, e modelos multimodais combinam texto com imagens, vídeos e áudio.

O Transformers utiliza um formato unificado no qual cada tipo de modalidade é especificado explicitamente, o que torna simples combinar e alternar entradas em uma única mensagem.

Este guia aborda os padrões de formatação de mensagens para cada modalidade, ferramentas, inferência em lote e conversas de múltiplas rodadas.

Texto

Texto é o tipo de conteúdo mais básico. Ele é a base para todos os outros padrões. Passe sua mensagem para "content" como uma string.

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

Você também pode usar o formato explícito "type": "text" para manter seu código consistente quando adicionar imagens, vídeos ou áudio posteriormente.

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

Ferramentas

Ferramentas são funções que um modelo de chat pode chamar, como obter dados de clima em tempo real, em vez de gerá-los por conta própria.

O papel assistant trata a solicitação da ferramenta. Defina "type": "function" na chave "tool_calls" e forneça sua ferramenta na chave "function". Adicione a solicitação da ferramenta do assistente à sua mensagem.

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

A função tool trata o resultado. Adicione-o em "content". Esse valor deve ser sempre uma string.

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

Multimodal

Modelos multimodais estendem esse formato para lidar com imagens, vídeos e áudio. Cada entrada especifica seu "type" e fornece a mídia com "url" ou "path".

Imagem

Defina "type": "image" e use "url" para links ou "path" para arquivos locais.

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?"}
        ]
    }
]

Vídeo

Defina "type": "video" e use "url" para links ou "path" para arquivos locais.

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?"}
        ]
    }
]

Áudio

Defina "type": "audio" e use "url" para links ou "path" para arquivos locais.

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

Múltiplos misturados

A lista content aceita qualquer combinação de tipos. O modelo processa todas as entradas em conjunto, permitindo comparações ou raciocínio entre modalidades.

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?"},
        ],
    }
]

Lote

A inferência em lote processa várias conversas em uma única passagem para melhorar a taxa de transferência e a eficiência. Envolver cada conversa em sua própria lista e, em seguida, passá-las juntas como uma lista de listas.

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?"}
            ]
        },
    ],
]

Múltiplas rodadas

As conversas abrangem múltiplas trocas, alternando entre os papéis "user" e "assistant". Cada turno adiciona uma nova mensagem à lista, dando ao modelo acesso ao histórico completo da conversa. Esse contexto ajuda o modelo a gerar respostas mais adequadas.

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