Transformers documentation
Шаблоны сообщений чата
Шаблоны сообщений чата
Модели чата ожидают диалоги в виде списка словарей. Каждый словарь использует ключи 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."}
]
}
]