Transformers documentation

Шаблоны сообщений чата

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

and get access to the augmented documentation experience

to get started

Шаблоны сообщений чата

Модели чата ожидают диалоги в виде списка словарей. Каждый словарь использует ключи role и content. Ключ content содержит сообщение пользователя, передаваемое модели. Большие языковые модели принимают текст и инструменты, а мультимодальные модели комбинируют текст с изображениями, видео и аудио.

Transformers использует единый формат, в котором каждый тип модальности указывается явно, что позволяет легко комбинировать различные типы входных данных в одном сообщении.

В этом руководстве описаны паттерны форматирования сообщений для каждой модальности, инструменты, пакетный вывод и многоходовые диалоги.

Текст

Текст — самый базовый тип контента. Он служит основой для всех остальных паттернов. Передайте ваше сообщение в "content" в виде строки.

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

Вы также можете использовать явный формат "type": "text", чтобы сохранить согласованность кода при последующем добавлении изображений, видео или аудио.

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

Инструменты

Инструменты — это функции, которые может вызывать чат-модель, например, для получения данных о погоде в реальном времени, вместо того чтобы генерировать их самостоятельно.

Роль assistant обрабатывает запрос инструмента. Установите "type": "function" в ключе "tool_calls" и передайте свой инструмент в ключе "function". Добавьте запрос инструмента ассистента к вашему сообщению.

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

Роль tool обрабатывает результат. Добавьте его в "content". Это значение всегда должно быть строкой.

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

Мультимодальность

Мультимодальные модели расширяют этот формат для обработки изображений, видео и аудио. Каждый вход указывает свой "type" и предоставляет медиафайл с помощью "url" или "path".

Изображение

Установите "type": "image" и используйте "url" для ссылок или "path" для локальных файлов.

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

Видео

Установите "type": "video" и используйте "url" для ссылок или "path" для локальных файлов.

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

Аудио

Укажите "type": "audio" и используйте "url" для ссылок или "path" для локальных файлов.

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

Смешанные несколько

Список content принимает любую комбинацию типов. Модель обрабатывает все входные данные совместно, что позволяет выполнять сравнения или рассуждения между модальностями.

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

Пакетная

Пакетный вывод обрабатывает несколько диалогов за один прямой проход, что повышает пропускную способность и эффективность. Оберните каждый диалог в собственный список, затем передайте их вместе как список списков.

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

Многоразовый

Диалоги включают несколько взаимодействий, чередующихся между ролями "user" и "assistant". Каждый ход добавляет новое сообщение в список, предоставляя модели доступ к полной истории диалога. Этот контекст помогает модели генерировать более уместные ответы.

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