Перейти к содержанию

Мультимодальный ввод: вложения

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

Что можно приложить

Тип Примеры Как доставляется модели
Изображения JPEG, PNG, WebP напрямую или текстовым описанием
PDF документы и сканы напрямую или извлечённым текстом
Аудио WAV, MP3 и другие форматы напрямую или расшифровкой
Видео распространённые контейнеры кадрами (до 5) и, при настройке, расшифровкой

Допустимые типы задаются белым списком MIME: image/, audio/, video/, application/pdf, text/. SVG запрещён; HTML принимается только как текст или обычный файл.

Лимиты по умолчанию

Файл — 25 МиБ, до 10 файлов в сообщении, 1 ГиБ на сессию, хранение осиротевших вложений — 30 дней. Администратор может изменить значения; превышение размера даёт ответ 413, запрещённый тип — 415.

Как приложить

  • Кнопка прикрепления в композере → пункт «Локальные файлы».
  • Перетаскивание файла в область ввода или вставка из буфера обмена.
  • У каждого файла — чип с превью, именем и размером; состояние меняется с «загрузка» на «готово», а при сбое — на «ошибка» с возможностью повтора.

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

Три пути доставки

Путь Когда срабатывает Что видит модель
Напрямую Модель заявляет нужную модальность в каталоге провайдера Сам файл
Через вспомогательную модель Модель модальность не принимает, но для семейства задана aux-модель Текст: расшифровку, описание или кадры
Отброс Нет ни прямого приёма, ни вспомогательной модели Файл в attachments/ рабочего каталога и блок «вложения не доставлены»

Модель сессии при этом не меняется: вспомогательный вызов идёт отдельно, а его расход виден в аналитике. Если модальности модели неизвестны, фильтрация не применяется — вложение не теряется молча.

Админ-раздел «Мультимодальный ввод»

Настройки → Администрирование → «Мультимодальный ввод»:

  • «Состояние» — откуда взяты значения: env, runtime (интерфейс), config.yaml или «по умолчанию».
  • «Вложения включены» — мастер-выключатель.
  • «Поддерживаемые модальности» — изображения, PDF, аудио, видео.
  • «Модели по модальностям» — вспомогательная модель на семейство или «Не задано (отбрасывать)».
  • «Лимиты» — размер файла, число файлов в сообщении, лимит на сессию.
  • «Хранение» — срок хранения осиротевших вложений (0 — не удалять).
  • «Поведение» — сохранять несовместимые вложения в рабочий каталог.
  • «Белый список MIME».

Изменения применяются сразу. Поле, значение которого задано через env, заблокировано — менять его нужно в окружении инстанса.

Приватность и метаданные

  • Оригинал лежит на сервере, в сообщении хранится только ссылка на него.
  • Метаданные (EXIF/IPTC/XMP у JPEG, текстовые чанки PNG) срезаются при отправке провайдеру. Скачанный через API файл и копия в рабочем каталоге — это оригинал.
  • Обфускация секретов работает с текстом: бинарный файл не сканируется, а в журнал попадают только тип, имя и размер.

Внешняя зависимость: ffmpeg

Аудио не в WAV/MP3 транскодируется в WAV 16 кГц mono, видео разбирается на кадры (до 5). Делает это ffmpeg на сервере. Если его нет, срабатывает обычный отброс: вложение попадёт в рабочий каталог, и модель увидит путь.

Видеомодальность доставляет только кадры. Аудиодорожка идёт отдельно — через вспомогательную аудио-модель, если она настроена.

Инструменты агента

  • attach_workspace_file — файл из рабочего каталога → вложение диалога.
  • save_attachment — вложение из истории → файл в рабочем каталоге; занятое имя не перезаписывается.
  • send_attachment — файл → вложение ответа агента.
  • list_models — какие модальности поддерживает модель и где заданы вспомогательные модели.

Ошибки

  • 413 — файл больше лимита на файл.
  • 415 — тип не входит в белый список MIME.
  • Вложение отброшено — в диалоге появляется блок «вложения не доставлены», а файл лежит в attachments/ рабочего каталога.
  • Загрузка не удалась — чип остаётся в состоянии «ошибка», отправку можно повторить.

Что дальше