Первый агент, «Переводчик», забирает в работу 5 непереведённых статей за раз и проходит по цепочке шагов.
Оценка. Агент решает, достойна ли статья перевода вообще - может, это ссылка на приложение в сторе, пост в телеграме или мем без текста. Если статья не проходит оценку, агент фиксирует причину в базе и останавливается.
Работа с изображениями. Если оценка пройдена, агент находит картинки, сохраняет их на сервере и строит матрицу соответствий «оригинальный URL → новый URL», которую держит в памяти до конца обработки статьи — так изображения не теряются при переводе.
Перевод и сборка. Перевод на русский, форматирование в HTML, таблицы, подключение изображений. На выходе - готовая HTML-статья.
Метаданные. Тут же агент определяет SEO-теги, название, краткое описание, теги, обложку и параллельно собирает markdown-текст для поста в телеграм-канал.
Отдельно стоит отметить строгую типизацию: LangChain заставляет агента возвращать данные точно в заданной структуре. Если поле объявлено как int, агент вернёт число или заданное значение по умолчанию - а не выдуманную строку вроде «не найдено». Для нас это стало ключевым доводом в пользу низкоуровневого стека: по сути, полноценное ООП на уровне агентов, а не просто текст на выходе из чат-бота.
Самопроверка. Самое интересное происходит перед сохранением. Вместо того чтобы сразу писать результат в базу, запускается рефлексия: агент вычитывает всё, что создал, и проверяет себя примерно по 20 критериям - точность перевода, доступность картинок, соответствие текста в ТГ содержанию статьи и лимиту по объёму, тон и так далее.
Если что-то не сходится, агент фиксирует ошибку и с её учётом заново прогоняет перевод и метаданные - максимум три раунда, чтобы не улететь в бесконечный цикл. Если всё чисто, статья уходит в базу и появляется на сайте. Если нет - всё логируется, статья пропускается, и это регулярно разбирается вручную по логам.
Именно этот контур почти полностью убирает галлюцинации модели - не за счёт более умного промпта, а за счёт того, что агент обязан сверять свою же работу с чек-листом, прежде чем она попадёт на сайт.