Агент асинхронного ревью видео – паттерн архива

Автор: Николай СапуновОбновлено: август 202622 мин чтения
Содержание статьи +

Коротко

Агент асинхронного ревью видео – это ИИ-система, которая сама, в своём темпе, проходит по большой груде записанного видео – бэк-каталогу, очереди на модерацию, архиву глубиной в годы – и выдаёт структурный вердикт по каждому клипу, без человека, наблюдающего за процессом. Это тот же цикл агента из прошлых уроков, но вместо одного быстрого ответа он работает как флот воркеров над очередью: каждое видео проходит восприятие, анализ, действие и наблюдение, и задача перемалывает тысячи или миллионы элементов за часы или дни. Поскольку на другом конце провода никто не ждёт, инженерная цель смещается со скорости на две другие вещи – стоимость, которую режут batch-API за полцены и воронкой «сначала дешёвый фильтр», и надёжность, то есть способность задачи, упавшей на элементе 47 000, продолжить с 47 001, а не начать сначала. Тот же паттерн вышел в 2026 году за петабайтной модерацией, обогащением метаданных в OTT и переобработкой архивов, и упирается он в закон о прозрачности модерации и правила раскрытия ИИ – поэтому грамотный дизайн версионирует каждый прогон, эскалирует спорные случаи людям и хранит аудит-лог того, что и почему он решил.

Почему это важно

Почти у каждого видеопродукта накапливается архив, который не пересмотреть руками: у стримингового сервиса – каталог за десять лет, у соцприложения – очередь на модерацию, которая никогда не пустеет, у онлайн-школы – библиотека без тегов, у системы видеонаблюдения – месяцы записей. Работа по проходу через это – разметить, промодерировать, сделать субтитры, проверить по новой политике – это ровно та медленная и однообразная задача, которую агент делает хорошо, а люди в масштабе делают плохо. Если вы строите софт для стриминга, OTT, конференций, онлайн-обучения, телемедицины или видеонаблюдения, этот урок показывает, что такое async-агент ревью, почему «нет часов» меняет весь дизайн и где прячутся ловушки стоимости и надёжности. Писать конвейер самому необязательно, но нужно понимать достаточно, чтобы отличить грамотный дизайн от расточительного – спросить, читает ли агент каждый кадр или сначала фильтрует, переживёт ли задача сбой и видит ли человек те случаи, что важны. Это третий и последний из трёх прикладных уроков про агентов; он использует тот же скелет, что и агент-исследователь видео и агент-копилот встречи, но наведённый на этот раз на постоянный архив, а не на живой момент.

Что такое async-агент ревью – и чем он не является

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

Копилот встречи из прошлого урока живёт под часами. Он сидит в живом звонке, и у него есть меньше секунды, чтобы оказаться полезным, иначе он перебьёт человека. Агент-исследователь отвечает на один вопрос по запросу – вы спрашиваете «кто зашёл в бокс после 22:00?», и он проводит расследование и докладывает, реагируя на запрос. Async-агент ревью – это третья форма: он проходит по постоянной груде видео в своём темпе, без ожидающего и без единственного вопроса. Никто не печатает запрос; задача звучит просто: «проверь всё в этом архиве по этому правилу и выдай вердикт по каждому элементу». Ключевое слово – async, сокращение от asynchronous, «асинхронный», что значит: запрос и результат разнесены во времени. Вы отдаёте агенту миллион видео утром; он отдаёт вам миллион вердиктов вечером или на следующий день.

Полезно зафиксировать границу и с той стороны, где этот агент – это не обычный batch-скрипт. Batch-скрипт – это тупой цикл («выполни одну фиксированную операцию над каждым файлом»), и он существует десятилетиями. Async-агент ревью отличается тем, что каждый элемент получает полноценную агентскую обработку: агент планирует, как смотреть именно это видео, выбирает, какие инструменты вызвать, по тому, что нашёл, и рассуждает о вердикте, а не применяет одно правило. Batch-скрипт перекодирует каждое видео в размер поменьше; агент смотрит каждое видео, решает, нарушает ли оно новую политику безопасности, и записывает почему. Цикл, планирование и использование инструментов – вот что делает его агентом, те же три примитива из урока про примитивы агента, к которым мы возвращаемся снова, потому что это хребет каждого агента в этой секции.

Что он, собственно, выдаёт? По каждому видео в архиве – структурный вердикт: набор тегов, решение по модерации, список глав, флаг соответствия, дорожку субтитров – то, что просила задача – вместе с уликами, которые его обосновывают (таймкод, кадр, строка транскрипта), и оценкой уверенности. Архив входит сырым; выходит размеченным, решённым и доступным для поиска.

Рис. 1. Три прикладных агента, один цикл. Копилот работает под часами; исследователь отвечает на один вопрос по запросу; async-агент ревью проходит по всему архиву в своём темпе. Этот урок – о третьем.

Цикл ревью, запущенный как флот

Каждый агент крутит цикл – восприятие, анализ, действие, наблюдение – и мы нарисовали этот цикл в уроке про цикл агента. Async-агент ревью крутит ровно этот цикл, с одним поворотом, который и определяет весь паттерн: цикл идёт по каждому видео, и много его копий работают одновременно, забирая работу из общего списка.

Представьте архив как длинную очередь – линию ожидающих видео, где каждое – рабочий тикет. Очередь здесь – это просто список работы по порядку, из которого могут черпать много воркеров. Пул воркеров – каждый из них копия агента на своей машине или процессе – забирает следующий тикет из очереди, крутит на этом одном видео полный цикл, записывает вердикт и тянется за следующим тикетом. Десять воркеров прожуют линию в десять раз быстрее одного; тысяча воркеров – в тысячу раз. Это паттерн fan-out: разложить одну большую задачу по многим параллельным воркерам. Так миллион видео пересматривают за ночь, а не за год.

Пройдём один тикет медленно – и цикл станет конкретным. Воркер забирает видео #438 201. Он воспринимает, дёшево сэмплируя видео – вытаскивая транскрипт и горстку отдельных кадров, а не каждый кадр (через минуту увидим, почему это важно для стоимости). Он анализирует увиденное по правилу задачи: есть ли в этом клипе то, что мы ищем? Он планирует следующий шаг – «в звуке упоминается заявление о продукте; вытащи три кадра вокруг этого таймкода и прочитай их внимательно». Он действует, вызывая инструмент – vision-language reader – на этих кадрах. Результат возвращается как наблюдение. Агент рассуждает ещё раз, приходит к вердикту с оценкой уверенности и записывает его в каталог. Тикет готов; следующий тикет.

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

Рис. 2. Цикл ревью, запущенный как флот. Архив наполняет очередь; много воркеров-агентов крутят цикл, каждый по своему видео; чекпойнт-хранилище помнит прогресс; уверенные вердикты идут в каталог, а остальное эскалируется людям.

Набор инструментов – и воронка, которая за него платит

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

Вот ошибка, которую воронка предотвращает. Очевидный способ пересмотреть видео с помощью ИИ – отправить каждый кадр в vision-language-модель – модель, которая умеет смотреть на изображение и отвечать на вопросы о нём словами, и которую мы дальше будем звать reader. Reader – самый умный инструмент в наборе и самый дорогой. Одна минута видео при тридцати кадрах в секунду – это 1800 кадров; час – 108 000. Гонять reader по каждому кадру большого архива – это как превратить разумную идею в бюджетную катастрофу. Тот же тезис про стоимость на кадр мы делали в уроке про агента-исследователя; в паттерне архива он ещё острее, потому что единственного вопроса, который сузил бы поиск, нет – агент обязан рассмотреть всё.

Поэтому набор инструментов выстроен как воронка, самым широким и дешёвым вперёд. Первый инструмент – дешёвый фильтр: детекция смены планов и быстрый транскрипт, которые делят видео на горстку осмысленных сегментов и выбрасывают пустоту, статичные титры, пустые коридоры. Второй – сэмплер кадров: вместо каждого кадра сегмента он берёт несколько кадров, которые его реально представляют – один на план или один в секунду – потому что соседние кадры почти одинаковы, и reader не узнаёт почти ничего из девяностой почти-копии. Компромисс «сэмплирование против стриминга» мы разбираем подробно в уроке про video VLM. Только после того как эти два инструмента сделали своё сужение, запускается третий – reader – и теперь он работает на нескольких десятках кадров на видео, а не на сотне тысяч. Четвёртый инструмент – судья по политике (rubric) – шаг, который превращает описание reader в нужное задаче структурное решение («подходит ли это под категорию 4 политики модерации? да, уверенность 0,91»). Пятый – запись в каталог – надёжная запись в базу, поисковый индекс или контент-систему, где будут лежать вердикты. Шестой – роутер эскалации – инструмент, который вместо записи вердикта отправляет элемент в очередь человеческого ревью, когда уверенность низкая, а ставки высоки.

ИнструментЧто делаетСтоимостьГде в воронке
Дешёвый фильтрСмена планов + транскрипт; убрать пустотуОчень низкаяВерх – на всём
Сэмплер кадровВзять немного представительных кадров на планНизкаяСужает то, что увидит reader
Reader (VLM)Описать выбранные кадры словамиВысокаяНиз – на горстке
Судья по политикеПревратить описание в структурный вердиктСредняяПосле reader
Запись в каталогНадёжно записать вердикт + уликиНизкаяНа уверенном вердикте
Роутер эскалацииОтправить спорные / рискованные людямНизкаяВыход «человек в контуре»

Воронка – это вся игра. Частая и дорогая ошибка – пропустить её, навести reader на сырое видео «потому что модель теперь умеет в видео». Умеет; ваш счёт – нет. Сначала постройте дешёвый фильтр и сэмплер, докажите, что они режут объём, доходящий до reader, в десять или сто раз, и только потом включайте дорогой инструмент.

Рис. 3. Набор инструментов как воронка. Дешёвые быстрые инструменты вверху отбрасывают почти всё видео; до дорогого reader внизу доходит лишь несколько десятков представительных кадров на видео. Пропустите воронку – и счёт reader взорвётся.

Преимущество «без часов» – почему async экономит деньги

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

Рычаг – это batch-API, способ отправить большую пачку запросов и получить результаты позже, а не мгновенно. Все три крупных провайдера моделей предлагают такой, и в 2026 году у всех один и тот же заголовок: скидка 50% в обмен на согласие, что результаты придут в течение суток. OpenAI Batch API принимает файл до 50 000 запросов и возвращает результаты в течение 24 часов за полцены. Anthropic Message Batches API принимает до 100 000 запросов или 256 МБ на пакет, возвращает в течение 24 часов (большинство – менее чем за час), держит результаты доступными 29 дней и тоже стоит вдвое дешевле. Google Gemini Batch Mode принимает JSONL-файлы до 2 ГБ и снова на 50% дешевле синхронного API. Real-time-агент не дотянется ни до одной из этих цен, потому что не может ждать сутки. Async-агент может – и получает тот же интеллект за половину стоимости, просто не торопясь.

Сложите воронку и batch-скидку в проработанном примере, потому что в арифметике и есть суть. Допустим, нужно пересмотреть архив из 100 000 видео, в среднем по десять минут. Наивный дизайн шлёт каждый кадр в reader: десять минут при 30 fps – это 18 000 кадров, значит весь архив – 1,8 миллиарда кадров, и при любой реальной цене reader за кадр это счёт на миллионы. Теперь применим воронку. Дешёвый фильтр и сэмплер режут каждое видео, скажем, до 40 представительных кадров – 18 000 к 40 это сокращение в 450 раз. Это 100 000 × 40 = 4 миллиона кадров, доходящих до reader, вместо 1,8 миллиарда. Затем применим batch-скидку: полцены режут оставшийся счёт вдвое. Воронка сделала основную работу (примерно в 450 раз меньше работы), а batch-API уполовинил остаток – вместе они превратили невозможное число в плановую строку бюджета. Точная цифра в долларах зависит от модели и года, поэтому мы держим реальную стоимость ИИ в видеопродуктах как живой справочник; структура экономии при этом не меняется.

Real-time (прошлый урок)Async / batch (этот урок)
Кто ждётЧеловек посреди разговораНикто – результат читают позже
Бюджет времениМеньше ~1 секунды на ходЧасы – сутки на всю задачу
Оптимизируем подЗадержкуСтоимость и полноту
Цена моделиПолная синхроннаяBatch-API – на 50% дешевле
МасштабПо одному вызову за раз50 000–100 000 запросов на пакет
Главный режим отказаЛаг, перебивание людейСбой, теряющий полузаконченную задачу

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

Сложная часть – надёжность в масштабе архива

Вот отказ, который определяет весь этот паттерн. Ваш флот прошёл 80 000 видео из 100 000, идёт двенадцатый час, и машина падает – spot-инстанс отобрали, моргнула сеть, кривое видео уронило reader. В наивном дизайне задача умирает, и вы начинаете заново с видео №1, теряя двенадцать часов и двенадцать часов денег. Самое важное инженерное свойство async-агента ревью в том, что этого не может случиться. Задача обязана продолжить с элемента 80 001, а не с 1. У свойства есть имя – надёжность (durability), то есть «работа переживает сбой» – и собирается оно из четырёх идей, которые стоит знать по именам.

Первая – чекпойнтинг: записывать прогресс по ходу, чтобы система всегда знала, что закончено. Каждый раз, когда воркер заканчивает видео, он записывает вердикт и помечает тикет готовым в надёжном хранилище, прежде чем тянуться за следующим. Если флот падает, свежий флот читает хранилище, видит, что 80 000 тикетов готовы, и подхватывает оставшиеся 20 000. Ничто уже оплаченное не оплачивается дважды.

Вторая – ключ идемпотентности, термин, который стоит распаковать медленно. Идемпотентный значит, что операция даёт один и тот же результат, сколько бы раз её ни запустили; нажатие кнопки этажа в лифте идемпотентно – нажми пять раз, и тебя всё равно отвезут на тот же один этаж. Ключ идемпотентности – это стабильная метка единицы работы, чтобы система могла распознать «я уже сделал ровно это». Здесь ключ строится из ID видео плюс версия применяемой модели и политики – например, video-438201 · reader-v3 · policy-2026-06. Прежде чем обработать тикет, воркер проверяет, есть ли уже вердикт под этим ключом; если есть – пропускает. Именно это делает повторный прогон безопасным: без этого перезапуск задачи пересмотрел бы и переоплатил каждое уже сделанное видео, превратив сбой в двойной счёт.

Третья – повтор (retry) с очередью недоставленных (dead-letter queue). Некоторые видео упадут – битый файл, формат, на котором давится reader, разовый таймаут. Флот повторяет сбой несколько раз, потому что большинство сбоев временны. Но видео, которое падает каждый раз – «ядовитый» элемент – не должно навечно заклинить всю линию. Поэтому после нескольких попыток его отодвигают в очередь недоставленных (dead-letter queue): отдельный загон для элементов, исчерпавших повторы, отложенных, чтобы человек посмотрел позже, пока флот идёт дальше. Одно плохое видео из миллиона должно стоить вам одного ручного разбора, а не остальных 999 999 вердиктов.

Четвёртая – оркестрация: дирижёр, связывающий три предыдущих идеи и запускающий весь workflow целиком. В 2026 году стандартный инструмент для этого – движок durable-execution, известнейший из которых Temporal: он записывает каждый шаг workflow как event-log, так что если процесс падает на шаге 47 из 100, он проигрывает лог и продолжает с шага 48, а не с 1. (Роль Temporal в продакшен-ИИ стала в 2026 году достаточно мейнстримной: в феврале он привлёк раунд на $300 млн при оценке $5 млрд, а в марте вышла поддерживаемая интеграция с OpenAI Agents SDK – честный сигнал, что durable execution теперь обязательная база для серьёзной агентской работы.) Использовать именно Temporal необязательно – очередь задач плюс таблица статусов плюс аккуратная идемпотентность дают почти то же – но что-то в его роли у вас быть обязано. К запуску, наблюдению и подсчёту стоимости таких флотов мы возвращаемся в уроке про AgentOps.

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

Рис. 4. Хребет надёжности. Чекпойнтинг помнит, что готово; ключ идемпотентности останавливает двойную обработку; повторы с очередью недоставленных изолируют «ядовитые» элементы; durable-оркестратор продолжает упавшую задачу с середины, а не с начала.

Переобработка – почему архив никогда не закончен

Живой агент отвечает и забывает. Вердикты архивного агента хранятся, а хранимые вердикты устаревают – и это создаёт работу, с которой real-time-агенты не сталкиваются: переобработку. Когда выходит модель reader получше, или меняется ваша политика модерации, или регулятор просит перепроверить всё по новому правилу – вы обязаны прогнать архив снова. Вопрос в том, прогоняете ли вы весь его или только часть.

Вот где ключ идемпотентности отрабатывает второй раз. Поскольку каждый вердикт был помечен версией модели и политики, его породившими (reader-v3 · policy-2026-06), вы можете перезапустить задачу под новой версией (reader-v4 · policy-2026-09), и флот увидит, что ни один из существующих вердиктов не совпадает с новым ключом – значит, он точно знает, что устарело. Более того, можно действовать выборочно: если изменилась только политика, а не восприятие, возможно, придётся перепрогнать лишь дешёвый шаг судьи по хранимым описаниям кадров, ни разу не трогая дорогой reader. Версионирование вердиктов превращает «пересмотреть весь архив» из паники в плановый, частичный, посильный прогон. Архивный агент, который не версионирует свой вывод, обрекает вас прогонять всё с нуля при любом изменении – а на архиве в миллион элементов это разница между «после обеда» и «целое состояние».

Человек в контуре – по исключению

Real-time-копилот ставит человека на каждое значимое действие, потому что их за встречу всего горстка. Архивный агент не может – миллион видео значит миллион решений, а миллион чего угодно никто не пересматривает. Поэтому принцип «человек в контуре» меняет форму: вместо одобрения всего люди ревьюят по исключению, и задача агента – решить, какие случаи исключительные.

Два сигнала направляют элемент к человеку. Первый – уверенность: агент прикладывает к каждому вердикту оценку уверенности, и всё ниже порога – случаи, где модель не уверена – идёт в человеческую очередь, а не в каталог. Второй – серьёзность: некоторые категории слишком значимы, чтобы решать их автоматически даже при высокой уверенности – подозрение на нарушение в части детской безопасности, флаг юридического удаления, медицинская находка – и они всегда идут к человеку, независимо от оценки. Всё остальное, уверенное и малорисковое, агент решает сам. Получается рычаг с предохранителем: агент берёт 95% ясного, а небольшая команда людей – 5% реально трудного или реально опасного. Вторая практика безопасности – сэмплирование: люди выборочно перепроверяют небольшую случайную долю и уверенных вердиктов агента тоже, чтобы поймать режим отказа, где агент уверенно ошибается. Очередь эскалации ловит то, о чём агент знает, что не знает; сэмплирование ловит то, о чём он не знает, что не знает.

Проработанная архивная задача, от начала до конца

Свяжем всё одной задачей: видеоплатформа с очередью на модерацию из 100 000 видео, накопившейся после смены политики, и мандатом разобрать её за день. Архив наполняет очередь; флот воркеров масштабируется, чтобы осушить её параллельно. Каждый воркер берёт видео, гоняет дешёвый фильтр (детекция планов плюс транскрипт), чтобы найти немного сегментов, достойных взгляда, сэмплирует около 40 ключевых кадров и только потом зовёт reader на этих кадрах – воронка держит дорогой шаг на 4 миллионах кадров по всему архиву вместо 1,8 миллиарда. Описания reader идут к судье по политике, который возвращает категорию и уверенность. Уверенные малорисковые вердикты пишутся прямо в каталог; всё ниже порога уверенности, плюс каждый подозрительный случай детской безопасности независимо от уверенности, эскалируется команде человеческого ревью. Вызовы reader идут через batch-API за полцены, потому что никто не ждёт. Прогресс чекпойнтится на каждом видео; каждый вердикт несёт ключ video-N · reader-v3 · policy-2026-06; десяток битых файлов оседает в очереди недоставленных на ручной осмотр; а когда spot-инстанс отбирают на восьмом часу, сменный воркер продолжает с чекпойнта, не переоплатив ни одно завершённое видео. К вечеру в каталоге 95 000 машинных вердиктов, в человеческой очереди – 5 000 трудных случаев, а весь прогон стоил плановую, предсказуемую сумму – потому что воронка срезала объём, batch-API срезал цену, а надёжность означала, что задача оплачена ровно один раз.

Закон – прозрачность модерации и раскрытие ИИ

Архивный агент, который модерирует или размечает контент в масштабе, задевает два свода права, которые стоит отметить, хотя глубокий разбор живёт в других уроках. Первый – прозрачность модерации: в ЕС платформы, удаляющие или ограничивающие пользовательский контент, обязаны дать затронутому пользователю чёткое обоснование причин, а в зависимости от размера – и публичную отчётность по модерации – а значит, вердикты агента не могут быть чёрным ящиком. Практическое следствие: агент обязан хранить почему он решил то, что решил – кадр-улику, пункт политики, уверенность – а не только сам вердикт, чтобы причину можно было сообщить, а апелляцию – рассмотреть. Это ещё один аргумент в пользу аудит-лога, который и так даёт вам хребет надёжности.

Второй – раскрытие ИИ и происхождение (provenance). Там, где архивная задача генерирует или изменяет контент, а не просто размечает его, правила прозрачности EU AI Act ожидают, что ИИ-сгенерированные или ИИ-изменённые медиа будут раскрыты как таковые, а стандарт происхождения контента C2PA – это формирующийся способ надёжно прикрепить к файлу метку «создано или отредактировано ИИ». Инженерию этого раскрытия и происхождения мы разбираем в уроке про качество, стоимость, C2PA и EU AI Act, а биометрические ограничения, очерчивающие любую работу с лицами в архиве – в уроке про детекцию лиц под EU AI Act. Правило дизайна, удовлетворяющее обоим сводам, – то же, что аргументировал и весь остальной урок: храните улики, версионируйте решения и ставьте человека на случаи с реальными последствиями.

Build, buy или wrap

У вас те же три честных варианта, что и у других прикладных агентов, и правильный зависит от того, насколько специфична ваша архивная задача. Можно купить (buy) управляемый сервис видеопонимания или модерации, который принимает архив и возвращает теги или метки модерации – быстрее всего и правильно, когда ваша задача стандартна (общая модерация, общие метаданные) и off-the-shelf-модель уже делает её хорошо. Можно обернуть (wrap): взять batch-API и движок durable-execution и собрать «воронку + флот» вокруг своего правила самостоятельно – правильно, когда политика ваша, а сантехника стандартна; большинству команд стоит начать здесь. Или можно построить (build) весь конвейер из примитивов этой секции – воронку, чекпойнт-хранилище, схему идемпотентности, логику эскалации, фреймворк агента из урока про фреймворки – правильно, когда ревью и есть ваш продукт, как у специализированного предложения по комплаенсу, trust-and-safety или интеллекту по архиву. Что бы вы ни выбрали, воронка стоимости и хребет надёжности – не опциональные надстройки на потом; это несущие стены, и вендор или фреймворк, не дающий вам обе, не готов к архиву в масштабе.

Где здесь Фора Софт

Мы строим видеопродукты в стриминге и OTT, видеоконференциях, онлайн-обучении, телемедицине, видеонаблюдении и AR/VR, и async-агент ревью – это паттерн за неблагодарной архивной работой, которая этим продуктам рано или поздно нужна: добивание субтитров и глав по бэк-каталогу OTT, разбор очереди на модерацию пользовательского контента, перепроверка медиабиблиотеки по новой политике или обогащение архива глубиной в годы поисковыми метаданными. Наша проектная дисциплина – та, что в этом уроке: выстроить инструменты воронкой, чтобы дорогой reader видел только то, что пережило дешёвые фильтры, гонять тяжёлые вызовы через batch-API, потому что никто не ждёт, и строить задачу на надёжном хребте, чтобы сбой продолжал, а не начинал заново. Мы версионируем каждый вердикт, чтобы переобработка была частичной, а не тотальной, и направляем спорное и рискованное к людям-ревьюерам, а не решаем автоматически. Тот же скелет служит стриминговому архиву, бэк-каталогу видеонаблюдения или библиотеке онлайн-школы без перестройки агента под каждую вертикаль.

Ключевые выводы

  • Async-агент ревью проходит по всему архиву в своём темпе – без часов, без единого запроса.
  • Это цикл агента, запущенный как флот параллельных воркеров, берущих видео из очереди.
  • Выстраивайте инструменты воронкой: дешёвые фильтры вперёд, дорогой reader на нескольких кадрах в конце.
  • «Без часов» значит batch-API за полцены и дешёвые прерываемые вычисления.
  • Надёжность – это суть: чекпойнтите прогресс, чтобы сбой продолжал, а не начинал заново.
  • Метьте каждый вердикт ключом идемпотентности, иначе повторы удваивают обработку и счёт.
  • Версионируйте вердикты, чтобы переобработка после смены модели или политики была частичной.
  • К людям отправляйте только низкую уверенность и высокий риск; остальное сэмплируйте.

Что почитать дальше

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.