Все уроки · 44
Путь 3 · Дорожная карта AI-инженера·Урок 26 из 33

Мультимодальный ИИ: изображения, звук и видео

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

УровеньНовичокВремя~15 мин

Одна модель — много органов чувств

Ещё недавно ИИ означал «текст на входе, текст на выходе». Мультимодальность — мудрёное слово для простой идеи: больше одной модальности. Модальность — это просто вид входных или выходных данных: текст, изображение, звук, видео. Мультимодальная модель справляется с несколькими из них сразу: она может «прочитать» фотографию, расшифровать подкаст, описать видео или нарисовать картинку по одному предложению.

Вы наверняка уже сталкивались с этим, сами того не замечая:

  • Сфотографируйте бумажный чек — и отчёт о расходах заполнится сам.
  • Запишите голосовую заметку во время прогулки с собакой — и она придёт аккуратным текстом, без «эээ» и «ну».
  • Наведите камеру на меню на языке, которого вы не знаете, — и читайте его на своём.
  • Загрузите скриншот непонятного сообщения об ошибке и спросите, что оно значит.
  • Получите автоматическое описание фотографии, чтобы незрячий коллега мог его прочитать.

Для вас как для инженера это меняет то, что можно построить: бот поддержки, который читает скриншоты; приложение для встреч, которое само пишет заметки; каталог, который расставляет теги товарам по фотографиям.

В основе лежит простой приём: изображения, звук и видео превращаются в токены — в такие же единицы, какие модель и так обрабатывает в виде текста. Изображение становится сеткой маленьких фрагментов, звук — последовательностью звуковых отрезков. Когда всё стало токенами, одна модель может рассуждать сразу обо всём.

Как изображение становится входными данными

Разберём с нуля: фраза «отправить изображение модели» звучит загадочнее, чем то, что за ней стоит.

В обычном текстовом запросе одна часть: ваше сообщение. В мультимодальном запросе несколько частей в одном сообщении: фрагмент текста и фрагмент изображения. В этом вся разница. Вы не загружаете файл на особый «адрес для изображений» и не получаете особого ответа в виде изображения: вы делаете тот же вызов, что и всегда, только с ещё одним элементом.

Само изображение передаётся одним из двух способов: как URL, который провайдер модели может скачать, или как base64 — байты файла, закодированные длинной строкой из обычных символов, которую вы вставляете прямо в JSON. Изображение стоит токенов так же, как и текст: обычно от нескольких сотен до пары тысяч, в зависимости от размера. Со звуком всё похоже: вы отправляете файл на эндпоинт расшифровки и получаете в ответ текст.

Вот настоящий запрос с картинкой внутри:

один вызов, два вида содержимого
1from openai import OpenAI
2import base64
3 
4client = OpenAI()
5 
6# Изображение кодируется в base64: байты файла записываются
7# обычными символами, чтобы их можно было передать внутри JSON.
8with open(#98c379">"checkout.png", "rb") as f:
9 image_b64 = base64.b64encode(f.read()).decode()
10 
11response = client.chat.completions.create(
12 model=#98c379">"gpt-4o-mini",
13 messages=[
14 {
15 #98c379">"role": "user",
16 # content — это СПИСОК частей: текст плюс изображение.
17 # Весь фокус в этом списке.
18 #98c379">"content": [
19 {
20 #98c379">"type": "text",
21 #98c379">"text": "This is my checkout page. Why might users drop off?",
22 },
23 {
24 #98c379">"type": "image_url",
25 #98c379">"image_url": {
26 # подойдёт и data: URL, и обычная ссылка https://
27 #98c379">"url": f"data:image/png;base64,{image_b64}"
28 },
29 },
30 ],
31 }
32 ],
33)
34 
35print(response.choices[0].message.content)

Заметьте, чего вы не делали: никакой библиотеки OCR, никакой предобработки изображения, никакого отдельного «API зрения». Один вызов, один список частей.

Изображения: два направления

Работа с изображениями бывает двух видов, и полезно держать их раздельно:

  • Понимание (изображение на входе, текст на выходе). Вы отправляете изображение с вопросом, и модель отвечает — как если бы вы показали фотографию другу и спросили, что он видит. Повседневные применения: считать итоговую сумму с фотографии чека, объяснить скриншот ошибки, перечислить состав по этикетке, описать фотографию товара для интернет-каталога, проверить, что интерфейс соответствует макету. Проще всего начать с возможности OpenAI Vision (она доступна через chat API с приложенным изображением).
  • Генерация (текст на входе, изображение на выходе). Вы описываете, что хотите, и получаете картинку: DALL-E, Midjourney, Stable Diffusion, Flux. Применения: открытка ко дню рождения, какой не продаётся ни в одном магазине, иллюстрация к статье в блоге, макет продукта, которого ещё не существует, новая аватарка. Новые модели умеют и редактирование: загрузите фотографию гостиной и спросите, как она выглядела бы с другим диваном, или уберите постороннего человека с заднего плана.

Практичный приём — сочетать оба направления: сгенерировать изображение, а затем отправить его обратно на «понимание», чтобы проверить, соответствует ли оно запросу.

Понимание изображений в деле

Вот как выглядит обмен вопросами и ответами о картинке:

Вопрос модели о скриншоте
press the button below to send the first message
sent to the modelnothing yet — every message is sent in full

Никакой библиотеки OCR, никакого пайплайна обрезки — один вызов API с приложенным изображением. В этом вся привлекательность. И обратите внимание на второй ответ: модель не перечитывала изображение из базы данных, эти токены просто всё ещё были в разговоре — именно поэтому хранить изображения в контексте дорого.

Звук: слушать и говорить

Звук делится на две задачи, и аббревиатуры стоит запомнить, потому что они встречаются повсюду:

  • Распознавание речи (speech-to-text, STT) — превращение чьей-то речи в написанные слова. Рабочая лошадка здесь — Whisper (с открытым кодом, от OpenAI): запустите его локально или через API, и он расшифрует десятки языков с временными метками. Типичные применения: заметки о встрече, на которой вы не смогли присутствовать, текстовые субтитры к видео, диктовка сообщения вместо набора на телефоне.
  • Синтез речи (text-to-speech, TTS) — обратное направление: написанные слова зачитываются естественно звучащим голосом. Модели вроде ElevenLabs или OpenAI TTS лежат в основе голосовых ассистентов, производства аудиокниг и прослушивания статьи, пока вы готовите.

Классический пайплайн соединяет их в цепочку: записать встречу, расшифровать её с помощью Whisper, передать расшифровку языковой модели для краткого пересказа, а затем зачитать пересказ вслух через TTS. Три вызова API — и готов полезный продукт.

Видео

Понимание видео — самая молодая область. Большинство нынешних подходов делают очевидное: вытаскивают из видео статичные кадры и смотрят на них как на изображения или слушают звуковую дорожку и рассуждают по ней. Применения: найти в двухчасовой записи момент, где упоминалась тема, нарезать лучшие моменты трансляции, сгенерировать названия глав, модерировать загрузки. Есть и «родные» модели для видео, но практический приём на сегодня — по-прежнему кадры плюс звук.

Где мультимодальность подводит

Мультимодальные демонстрации снимаются в идеальных условиях. Настоящие входные данные идеальными не бывают, и дешевле узнать о видах сбоев сейчас, чем после выпуска:

  • Мелкий или плотный текст — то место, где зрение ломается первым. Заголовок на скриншоте распознать легко; а вот сообщение об ошибке в 9 пикселей, серийный номер или плотная таблица — то, где модели уверенно путают цифры. Для точного извлечения текста специализированная библиотека OCR по-прежнему лучше универсальной модели зрения: модель используйте для смысла, а дословное переписывание текста поручайте OCR.
  • Подсчёт и точные измерения ненадёжны. «Сколько людей на этой фотографии?» и «какой ширины этот промежуток в пикселях?» — классические провалы. Модели хорошо оценивают и плохо считают.
  • Модели домысливают правдоподобно, а значит, выдумывают. Если спросить о размытой этикетке, модель выдаст уверенную догадку и не скажет «я не могу это прочитать». Просите указать степень уверенности, просите процитировать то, что видно на изображении, и проверяйте всё, что важно.
  • Со звуком реальность всё портит. Акценты, фоновый шум, перебивающие друг друга говорящие и жаргон — всё это повышает долю ошибок. Whisper сильный, но не волшебный: измеряйте долю ошибочных слов (word error rate) на вашем звуке, а не на демонстрационном ролике.
  • Модели генерации плохо справляются с текстом и с точностью. Буквы выходят с ошибками, у рук неправильное число пальцев, а просьбу «поставь логотип в то же место» они выполняют ненадёжно. Генерация годится для иллюстраций и поиска идей; готовые материалы с текстом или точным соответствием макету лучше ей не поручать.
  • Видео модель видит выборочно. Она видела лишь горсть кадров, поэтому быстрые действия, причинно-следственные связи и «что произошло раньше» даются ей плохо. Если важен порядок событий, расшифруйте запись и работайте с расшифровкой.

Мультимодальной функцией можно пользоваться и с такими ограничениями, но оценивать её нужно, как и любой другой вызов модели.

Выбор подходящей модальности

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

выбор модальности для вашей задачи
→→→→→
1. Начните с задачи

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

«Пользователи загружают голосовые заметки; сотрудникам поддержки нужно, чтобы их можно было прочитать.»

out› формулировка задачи
1/6

API и открытый код

Короткий обзор:

  • OpenAI Vision — понимание изображений через chat API; изображения прикрепляются прямо к сообщению.
  • DALL-E и компания — генерация изображений. DALL-E, Midjourney, Flux и Stable Diffusion закрывают большинство потребностей — от облачного API до самостоятельного хостинга.
  • Whisper — распознавание речи с открытым кодом; его можно запускать бесплатно, и он хорошо справляется со многими языками.
  • Hugging Face — «полка» с открытым кодом: тысячи мультимодальных моделей (подписи к изображениям, OCR, TTS вроде Coqui, модели зрения вроде LLaVA), которые можно скачать и запустить самому, когда важны приватность данных или стоимость.

Практическое правило: прототип делайте на облачном API за полдня; переходите на модели с открытым кодом, когда этого требуют объём, приватность или задержка.

Изображения стоят дороже текста

Одно изображение может «весить» сотни или тысячи токенов. Если прикреплять к каждому сообщению по десять скриншотов, ваше окно контекста и ваш счёт быстро растут. Отправляйте обрезанные области, когда это позволяет задача, и уменьшайте изображения: полное разрешение моделям нужно редко.

Проверьте себя

Проверьте себя

Что значит «мультимодальный»?

У вас есть запись встречи, и вы хотите получить письменный пересказ. Что это за направление?

Почему плохо прикреплять к каждому сообщению по десять скриншотов?

Куда идти дальше

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