Комментарии 6
Клиент поставил жёсткий порог: делаем только средствами ИИ, срок месяц, в команде один разработчик. Без дизайнера, без аналитика, без DevOps.
Простите, а почему клиент ставит вам условия, как именно вы должны делать его проект? Я понимаю обсуждения в стиле "Проект надо сделать за месяц, денег готов дать столько то". Я могу понять еще пожелания в стиле "Проект надо написать на Java на стеке Spring Boot", потому что у него все остальные решения на этом крутятся.
Но вот это вот требование "Делайте на ИИ" по сути эквивалентно "Делайте в Jetbrains idea и нигде больше". Зачем соглашаться работать с идиотом? Неужели настолько хорошие деньги предложил? Как вообще выглядели переговоры и аргументация?
Задача: автоматически сверять промоматериалы фармацевтического клиента с содержимым сайтов. Проверять, не перевирают ли факты, корректно ли написан текст. На входе расплывчатое ТЗ в одном docx. На выходе микросервисная система из пяти сервисов с асинхронной очередью.
Когда-то, до генеративного ИИ, людей разводили на хайпе микросервисов. Что это за клиент, требующий сделать проект за месяц, только на ИИ:
Клиент поставил жёсткий порог: делаем только средствами ИИ, срок месяц, в команде один разработчик. Без дизайнера, без аналитика, без DevOps.
Которому по итогу вы впихнули систему из 5 сервисов с асинхронной очередью. У него точно такая нагрузка, которая требует так раскидывать проект на столько микросервисов? Кстати, заметно, что написан проект с помощью ИИ - они такое любят генерировать.
Каждый сервис отвечает за свой скоуп взаимодействия, это не микро-сервисы в обычном понимании, это отдельные “агенты” выполняющие свой скоуп задач. Один сервис обрабатывает большие многостраничные PDF, вытаскивая оттуда изображения, нарезая на чанки, прогоняет каждый через VLM, склеивает и сохраняет их в базу. классическая сессия такого сервиса занимает примерно 2-3 часа, т.к. материалов много, постоянно обновляются.
Другой сервис, занимается парсингом страниц сайтов, выстраивая полную карту из разных источников (sitemap, ссылки из самого html, поисковые системы), и ищет на этих страницах материалы. Одно из требований - работа с SPA сайтами, которые необходимо рендерить перед парсингом. Работает почти как поисковый робот.
Третий сервис занимается сопоставлением и сравнением текста из материалов и текста с страниц, огромное количество запросов к ИИ
Остальные 2 сервиса - бек и фронт.
Так что да, разбиение на отдельные сервисы и система “задач”, в разрезе этого проекта была критична. Особенно при условии, что процесс выполнения задач в каждом сервисе должна логироваться в эту задачу, Останавливаться, ретраиться и при этом быть экономной в плане “съедания” токенов.
Предвкушая вопрос о том, “Почему бы просто не сравнивать материалы и текст сайта через VLM лоб-в-лоб”, ответ прост, ни одна из VLM при тестах не выдержала тот объём информации, который приходится сверять, много глюков, а самое главное - это дорого по токенам, и результат не предсказуем. Плюс есть большая загвоздка этой системы. В одном PDF файле в среднем 60 страниц, иногда доходит до 100. И все эти страницы находятся под одним “кодом”. И когда мы получаем 60 страниц материалов, и 60 страниц сайта с одним “кодом”, система должна сопоставить их, и найти какая странциа материала к какой странице сайта относится, исключительно по тексту. Не говоря уже о том, что страниц сайта с одним кодом, может быть больше страниц материала с таким кодом, и наоборот
Игнорирование инструкций, лишний переусложненный код... Кто же это был, назовите имя модели. Попробую в угадайку - gpt <= 5.3 или клод <= 4.5 ?
В большинстве случаев это зависит не от модели, а от её умения работать с тулзами, а конкретно выполнять роль Агента. Даже локальные маленькие моделькки на 5-9b по типу gemma 2 или rnj-1 справляются неплохо, если им нормально объяснено как пользоваться тулзами, предоставлен контекст и т.д.
Модель в данном случае остаётся лишь мозгом принимающим решения, получающее на вход текст и на выход предоставляющий текст. Если агентская часть настроена плохо, то тебе ни одна мощная модель не поможет. На больших проектах даже опус любит вместо переиспользования существующего функционала писать собственный.

Как мы в ZeBrains перешли на агентную разработку и что из этого вышло