Перейти к основному содержимому

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

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

Что такое модальность

Модальность — тип входных/выходных данных:

МодальностьПримеры
ТекстПромты, ответы, код
ИзображениеPNG, JPEG, скриншоты, схемы
АудиоРечь, звук
ВидеоMP4, последовательности кадров
ДокументыPDF, таблицы Excel

Поддержка модальностей по моделям

МодельТекстКартинкиАудиоВидеоPDF
GPT-4o
GPT-4o mini
Claude Sonnet/Opus
Gemini 1.5 Pro
Gemini 2.0 Flash
Llama 3.2 Vision

Vision — работа с изображениями

Что умеют

  • Описание — что изображено на картинке
  • Анализ — данные, графики, диаграммы
  • OCR — извлечение текста с изображений
  • Сравнение — найти различия между двумя картинками
  • UI/UX — анализ скриншотов интерфейсов
  • Документы — читать сканы, рукописный текст
  • Код с диаграмм — генерировать код по схеме или макету

Как передать изображение в API

URL:

# OpenAI
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "https://example.com/image.png"}},
{"type": "text", "text": "Опиши что на картинке"}
]
}]

Base64:

import base64

with open("image.png", "rb") as f:
image_data = base64.b64encode(f.read()).decode("utf-8")

# Anthropic
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data
}
},
{"type": "text", "text": "Что на изображении?"}
]
}]

Ограничения Vision

ОграничениеДетали
Размер файлаОбычно до 20 МБ
ФорматыPNG, JPEG, GIF, WebP
Качество OCRХуже специализированных OCR-систем
Точный счётМодели плохо считают объекты (>10 штук)
Мелкий текстПлохо читает очень мелкий шрифт
КонфиденциальностьИзображения отправляются в облако

Стоимость изображений (токены)

Изображения тоже тратят токены. Стоимость зависит от размера:

Маленькое (< 512×512) ≈ 85 токенов (detail: low)
Большое (1024×1024) ≈ 765 токенов (detail: high)

У Anthropic: ~1500–2500 токенов за стандартное изображение.

Audio — работа с речью

Speech-to-Text (транскрипция)

Whisper (OpenAI) — лучший публичный STT-инструмент:

from openai import OpenAI

client = OpenAI()

with open("audio.mp3", "rb") as f:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=f,
language="ru" # опционально, ускоряет
)

print(transcript.text)

Поддерживаемые форматы: MP3, MP4, MPEG, MPGA, M4A, WAV, WEBM
Лимит файла: 25 МБ
Качество: поддерживает 99 языков, включая русский

Realtime Audio (GPT-4o)

GPT-4o поддерживает Realtime API — речь в реальном времени без промежуточной транскрипции:

Микрофон → WebSocket → GPT-4o → Аудио-ответ

Применение: голосовые ассистенты, call center боты, интерактивные системы.

Text-to-Speech

response = client.audio.speech.create(
model="tts-1", # или tts-1-hd для лучшего качества
voice="alloy", # alloy, echo, fable, onyx, nova, shimmer
input="Привет, это тестовый текст"
)

response.stream_to_file("output.mp3")

Video — работа с видео

Пока только Gemini поддерживает видео нативно:

import google.generativeai as genai

# Загрузка видео
video_file = genai.upload_file("video.mp4")

model = genai.GenerativeModel("gemini-1.5-pro")
response = model.generate_content([
video_file,
"Сделай краткое описание видео и выдели ключевые моменты"
])

Ограничения:

  • До 1 часа видео (в рамках 1M контекста)
  • Модель "видит" кадры, не понимает аудио отдельно
  • Файл нужно загрузить заранее (File API)

PDF и документы

Нативная поддержка PDF

Claude и GPT-4o читают PDF напрямую — текст извлекается автоматически, сохраняется структура.

# Anthropic — PDF через base64
with open("document.pdf", "rb") as f:
pdf_data = base64.b64encode(f.read()).decode("utf-8")

messages=[{
"role": "user",
"content": [
{
"type": "document",
"source": {
"type": "base64",
"media_type": "application/pdf",
"data": pdf_data
}
},
{"type": "text", "text": "Сделай краткое резюме документа"}
]
}]

Ограничения PDF

ОграничениеДетали
РазмерОбычно до 32 МБ или 100 страниц
СканыПлохо работает с отсканированными PDF без OCR-слоя
ТаблицыИногда теряется структура сложных таблиц
ФормулыМатематические формулы читаются плохо

Практические кейсы

Анализ скриншота ошибки

Пользователь: [скриншот] + "Что за ошибка и как исправить?"
Модель: читает текст ошибки, анализирует стек-трейс, даёт решение

Извлечение данных из документа

"Из приложенного PDF извлеки все суммы договоров в JSON формат:
{contractor: string, amount: number, currency: string}"

Анализ UI макета

"По этому макету напиши React-компонент"
"Что улучшить в этом интерфейсе с точки зрения UX?"

Транскрипция встречи

# 1. Транскрибировать аудио встречи
transcript = client.audio.transcriptions.create(model="whisper-1", file=audio)

# 2. Сформатировать в структурированный документ
summary = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": f"Из этой транскрипции выдели:\n1. Ключевые решения\n2. Action items\n3. Участники\n\nТранскрипция:\n{transcript.text}"
}]
)

Резюме

МодальностьЛучшая модельКлючевое применение
ИзображенияGPT-4o, ClaudeАнализ, OCR, UI-ревью
STTWhisperТранскрипция речи
TTSOpenAI TTSОзвучивание текста
Realtime аудиоGPT-4o RealtimeГолосовые ассистенты
ВидеоGemini 1.5 ProАнализ видео-контента
PDF/документыClaude, GPT-4oАнализ документов