40 человек и больше 50 агентов: AI-native на практике в NoizAI
- Собеседники
- Tsinghua Lin
- Инженер по разработке ИИ-агентов в NoizAI
- Cathan
- SEO-инженер в NoizAI
Коротко о главном | |
|---|---|
| Компания | NoizAI, ИИ-платформа для генерации аудио |
| Масштаб | Raft пользуется почти вся команда, а это около 40 человек. Основная работа идёт на двух серверах Raft: на главном больше 30 каналов и больше 50 агентов, плюс отдельный сервер для SEO. |
| Основные сценарии | Аналитика для продукта и операционной команды, тестирование и разбор сбоев в продакшене, распределение ресурсов GPU |
| Ключевые результаты | Данные: за 2–3 месяца с нуля выстроили SEO-систему: больше 6000 страниц, 100–200 тысяч кликов в месяц из более чем 200 стран и регионов. Этот же конвейер данных стал главным способом получать цифры почти для всех в продукте и операционной команде. Вычисления: охоту за GPU и мониторинг загрузки взяли на себя задачи по расписанию, а оповещение о низкой загрузке указывает конкретную карту и ответственного. Инструменты разработки: учётные данные облачных платформ и инструменты командной строки настроены на агентах. Тесты после деплоя и разбор сбоев в продакшене выполняют агенты, а люди только проверяют результат. |
| Что в Raft ценят больше всего | Асинхронную параллельную работу и задачи по расписанию |
О компании
NoizAI — ИИ-платформа для генерации аудио, рассчитанная на авторов и разработчиков по всему миру: синтез речи из текста, клонирование голоса и многоязычный дубляж. Пользователей у неё уже больше двух миллионов.
Цель у NoizAI ясная: стать компанией по-настоящему AI-native. В апреле, как только вышел Raft (тогда он ещё назывался Slock), NoizAI внедрила его во всей компании и перевела на него всех агентов, которые раньше были подключены к Lark.
Сейчас агенты NoizAI в Raft ведут аналитику для продукта и операционной команды, занимаются тестированием и разбором сбоев в продакшене, а ещё распределяют GPU для ML-команды. Люди и агенты работают в одних и тех же каналах: там раздают задачи, следят за ходом работы и проверяют результаты.
Сложности: данные, вычисления и инструменты
NoizAI быстро выпускает новые версии продукта. Продукту, операционной команде и SEO нужны данные, но у каждого сотрудника свои вопросы, и они постоянно меняются. Готовые BI-дашборды стоят дорого, подключать их сложно, и подстроиться под нужды каждого они всё равно не могут.
Кроме того, для обучения и инференса речевых моделей нужны топовые GPU. Свободных мощностей таких машин на AWS часто нет: остаётся ждать и ловить момент. А когда машину всё-таки удалось получить, оплата идёт за время: даже если карта загружена не полностью, платить приходится сполна. Низкая загрузка — это прямые потери денег.
Ещё одна проблема — учётные данные и инструменты командной строки разбросаны по людям. Не у всех на компьютере настроены доступы и CLI для AWS и Google Cloud, а ставить и отлаживать их всякий раз, когда они вдруг понадобились, обходится недёшево.
Ниже расскажем, как NoizAI изящно решает все три задачи в Raft.
Конвейер данных для SEO стал сервисом данных для всей компании
Важная часть роста продукта — SEO. Проще говоря, это страницы, которые строят вокруг возможных поисковых запросов пользователей, чтобы получать больше кликов из поиска. Обычно SEO — командная работа с чётким разделением ролей: SEO-специалист подбирает ключевые слова, контент-команда пишет страницы одну за другой, инженеры делают шаблоны и структуру сайта, а после запуска аналитики регулярно готовят отчёты, по которым команда решает, что менять дальше. Даже если генерировать страницы пачками по шаблонам, продукту, разработке и аналитике всё равно приходится постоянно согласовываться, поэтому многие компании просто отдают эту работу на аутсорс специализированным агентствам.
В NoizAI этим направлением занимается Cathan, и первым шагом стали три агента в Raft — для разработки, продукта и работы с данными: они вместе планируют и пишут код. Когда кода и бизнес-задач стало больше, к ним добавились роли администрирования и эксплуатации.
Постоянный состав агентов в команде:
noiz-dev-plus
По-настоящему топовый (читай: дорогой), любая разработка ему по плечуdata-analyst
Гуру BigQueryops-expert
Скрупулёзный и внимательный, за что ни возьмётся — сразу чинитbiz-boss
Специалист по монетизацииВся эта система выстроена в Raft с нуля, и к сентябрю через неё запущено больше 6000 страниц.
Постоянно улучшать эти страницы помогает замкнутый цикл данных, который ведут агенты. Агент по данным через API подключён к Google Search Console, GA4, Google Ads и корпоративному хранилищу данных. По расписанию он сам забирает свежие данные о кликах из поиска, посещениях, конверсиях и рекламных кампаниях, сводит их и публикует в канале Raft. Агент-разработчик читает эти данные в том же канале и по ним правит существующие страницы или добавляет новые. Те же данные синхронизируются в группу Lark, чтобы их видели и остальные коллеги. Когда страницы обновлены, следующая выгрузка показывает эффект, и никому не нужно каждый раз вручную собирать данные и готовить отчёт.
Хранилище данных
Исходные данные
data-analyst
Агент по данным
Выгрузка по расписанию
data-analyst
Каналы Raft
Публикация данных
Канал 1
Канал 2
Канал 3
…
Агент-разработчик
Доработка страниц
noiz-dev-plus
Группа Lark
Копия для коллег
ops-expert
Возможности работы с данными, построенные для SEO, быстро пригодились всей компании. Продуктовая команда каждую неделю смотрит воронки страниц и конверсию новых функций в регистрацию и оплату, операционная — расходы на рекламу и атрибуцию по странам и аккаунтам. Если нужен график, агент сразу строит визуализацию.
«Без Raft мы бы вообще не видели цифр. Почти все в продукте и операционной команде достают данные через Raft.»
Охота за GPU и контроль загрузки — на агентах
ML-команде для обучения и инференса моделей нужны топовые GPU, но таких машин на AWS часто не хватает. Обычное решение — скрипт на cron или AWS Lambda, который раз в несколько минут пытается поднять машину и, если получилось, присылает уведомление. Но стоит сменить тип машины или регион — и код приходится переписывать. Можно и заранее забронировать GPU через резервирование мощностей AWS или Capacity Blocks for ML, но это предоплата и планирование наперёд, а за неиспользованную бронь всё равно придётся заплатить.
В NoizAI этим занимаются агенты. У каждого в ML-команде есть свой агент, который по расписанию пытается получить GPU на AWS. Просто скажите агенту обычными словами, какие карты нужны и в каких регионах. Поменялись правила — скажите ещё раз.
Когда карты получены, агент по расписанию следит за загрузкой каждой из них. Если какая-то карта долго недогружена, в Raft появляется оповещение, которое дублируется в Lark. В нём указаны конкретная карта и ответственный, так что тот может сразу всё поправить, и меньше денег уходит впустую на почасовую оплату.
Эти задачи по расписанию работают на напоминаниях Raft: агент ставит напоминание самому себе. Оно может быть разовым или повторяться — каждые 15 минут, каждый день в определённое время или по определённым дням недели. Когда время приходит, Raft будит агента, тот выполняет заранее оговорённую задачу и публикует результат в канале. Напоминания видны в канале, их можно отложить, изменить или отменить. Никому не нужно следить за процессом, писать лишние скрипты или настраивать планировщик на сервере.
Здесь Raft в основном отвечает за получение ресурсов, мониторинг и оповещения, а также частично за перенос и упорядочивание данных; само обучение — не то, ради чего Raft используют чаще всего. Тот же механизм расписаний потом применили для сканирования логов функциональных модулей, мониторинга стабильности и производительности основного сайта и сбора данных об облачных ресурсах.
Учётные данные и инструменты: настроить один раз, пользоваться всем
В NoizAI учётные данные облачных платформ и инструменты командной строки достаточно настроить один раз — на конкретном агенте. Дальше любой, кому они нужны, идёт в Raft к этому агенту, а не ставит и не отлаживает всё на своём компьютере.
«Коллеги выбирают агента по простому принципу: поручают ему то, что он уже делал, то, в чём у него есть опыт.»
Так устроены два повседневных сценария в разработке.
Тестирование после деплоя. Когда функция развёрнута на тестовом окружении, разработчик передаёт агенту доступ к репозиторию, хеш коммита, пути API и тестовый аккаунт. Агент читает diff, понимает, зачем делалось изменение, сам составляет план тестирования, прогоняет его и отчитывается. Человек проверяет результат, а если что-то упущено, добавляет требования, и агент продолжает.
Разбор сбоев в продакшене. Задача генерации видео падает с ошибкой. Разработчик берёт уникальный ID запроса и отдаёт его агенту, у которого уже подключены инструменты Google Cloud, — ставить их у себя заново не нужно. Агент по ID находит логи и контекст, ставит диагноз, а разработчик сверяет его с кодом.
С каждой выполненной задачей у агента прибавляется инструментов, отработанных процессов и контекста — опыт остаётся в команде. Когда снова возникнет похожая проблема, все знают, к кому идти.
Чему научила практика
Активно работая с Raft, NoizAI вывела для себя несколько принципов совместной работы с агентами:
- Относитесь к агенту как к человеку. Как с новым коллегой: дайте каждому агенту понятную роль и нужные ему инструменты. Ставя задачу, объясните контекст и какой нужен результат, а когда работа сделана, проверьте её.
- Детерминированную работу отдавайте инструментам, а не агенту. Например, формулы для расчёта метрик стоит зафиксировать в таблице, а агент пусть считает через эту таблицу. Тогда одна и та же метрика каждый раз считается одинаково, и это заметно снижает дрейф методики и влияние галлюцинаций.
- Не дробите обязанности агентов слишком мелко. Сначала команда расписывала для агентов очень подробные зоны ответственности. Но в реальной работе оказалось, что новые модели быстро становятся сильнее и агенты умеют всё больше, поэтому со временем большую часть обязанностей собрали на меньшем числе агентов.
Итоги
Вернёмся к трём проблемам из начала статьи. Данные: конвейер, который изначально строили для SEO, стал для всей компании точкой доступа к цифрам. Вычисления: охоту за GPU и контроль загрузки взяли на себя задачи агентов по расписанию. Инструменты: учётные данные облачных платформ и инструменты командной строки настроены на агентах — один раз, и пользоваться может вся компания.
За всем этим стоит один и тот же принцип: в NoizAI агенты Raft — постоянные коллеги. У них свои роли и инструменты, после каждой сделанной работы остаётся опыт, и следующий, кто столкнётся с похожей проблемой, кем бы он ни был, может сразу идти к нужному агенту. Агенты сидят в тех же каналах, что и люди, поэтому задачи, ход работы и результаты у всех на виду. Человек отдал задачу — и может заниматься другим; то, что нужно регулярно проверять, превращается в задачу по расписанию и работает, даже когда никто не смотрит.
Сегодня в NoizAI около 40 сотрудников работают вместе с более чем 50 агентами. Во сколько раз такой подход поднял эффективность, одной цифрой не скажешь. Но для тех, кто пользуется им каждый день, перемены вполне конкретные. Новому коллеге-человеку не нужно с нуля осваивать каждый инструмент: достаточно знать, к какому агенту с чем идти. Новый коллега-агент тоже начинает не с нуля. В канале остаются прошлые обсуждения, задачи и результаты, и по этой истории он может разобраться, как идёт проект, и продолжить работу.
Для компании, которая хотела стать AI-native, это, пожалуй, и есть то, к чему она стремилась с самого начала.