Агентный перевод: посчитаем счёт
Идея нравится сразу. Одна модель переводит, вторая проверяет, третья правит — и качество растёт, потому что именно так устроены человеческие переводческие команды. Это интуитивно, хорошо демонстрируется и продаётся напористо.
Арифметика популярна меньше. Последовательная связка переводчик→ревьюер→редактор стоит примерно впятеро больше токенов, чем один вызов; итеративная петля, крутящаяся до сходимости, — примерно впятнадцатеро (arXiv:2505.01560). Это цена. Дальше — о том, что за неё дают, по данным тех, кто мерил, и о том, что случилось, когда мы посмотрели на собственный агентный пайплайн и отказались от него.
Три конфигурации и их множители
Один вызов. Один промпт, один ответ. База: 1×.
Последовательные агенты. Перевести, потом отревьюить перевод, потом отредактировать по замечаниям. Каждая стадия перечитывает исходник и вывод предыдущей, поэтому входные токены растут быстрее, чем число стадий. Замерено примерно 5×.
Итеративные агенты. Петля «ревью — правка» повторяется, пока не пройдёт тест на сходимость или не упрётся в лимит. Примерно 15×, и — что важно — с высокой дисперсией: документ, который так и не устроил ревьюера, каждый раз стоит полного лимита.
Множитель — на токены, но задержка множится тоже. Для документного пайплайна, где заказчик смотрит на полосу прогресса, три последовательных вызова модели на сегмент — это другой продукт, а не тот же самый чуть дороже.
Что множитель покупает, по замерам
Здесь результаты становятся для рекламы неудобными.
Против зрелого нейронного машинного перевода агентные системы проиграли по автометрикам в 7 из 12 комбинаций «языковая пара + домен». Не «выиграли меньше ожидаемого» — проиграли специализированной NMT-системе, стоящей в разы дешевле.
Против одного вызова LLM агентные системы проиграли по человеческой оценке в 5 из 6 сравнений. Вот эта цифра и должна остановить покупателя, потому что человеческая оценка — ровно та метрика, к которой агентная реклама неявно и апеллирует: «машина не чувствует нюанс, добавим ревьюера».
Честное прочтение не «агенты плохи». Оно уже и полезнее:
- Выигрыш реален на длинной художественной прозе, где важна согласованность по всему произведению, и ревьюер с полным контекстом ловит дрейф, недоступный посегментному переводчику.
- Выигрыш реален на юридических нюансах, где второй проход, специально настроенный искать изменённые обязательства, находит то, чего не находит первый.
- Везде остальном множитель покупает дисперсию.
Почему ревьюер часто делает хуже
Контринтуитивную часть стоит объяснить: «добавьте проверяющего» звучит как то, что хуже сделать не может.
Стадия ревью — не валидатор. Это ещё одна генерация, и она поощряется — собственным промптом — за то, что нашла что сказать. Дайте модели хороший перевод и спросите, что с ним не так, — она расскажет, что с ним не так. Редактор дальше применит этот совет. Две стадии из трёх активно уводят вывод от перевода, который и так был верен.
Это та же форма отказа, что у слишком ретивого линтера: цена ложного срабатывания не нулевая, потому что дальше по цепочке кто-то по нему действует.
Лечение — там, где схема всё-таки окупается — сделать работу ревьюера фальсифицируемой: проверить, что эти конкретные числа на месте, что термины совпали с глоссарием, что ни одно обязательство не поменяло знак. Чек-лист, а не мнение. А это штука сильно дешевле агента — в чём, собственно, и суть.
Что мы сделали со своим
У нас он был. agent_pipeline.py вместе с промптами и типами — 668 строк, вшитых в сервис перевода импортом, строкой конструктора, вызовом и двумя методами.
Он включался при translation_mode == "agentic". API это значение никогда не принимал.
Итого: 668 строк агентного перевода, месяцами лежавших в репозитории и исполнившихся в проде ровно ноль раз. Никто не заметил: от него ничто не зависело и его ничто не тестировало.
Мы его удалили. Ресёрч, предшествовавший удалению, советовал вынуть ревьюерскую петлю под другую задачу — проверку извлечённых полей против схемы. Мы прочитали код, чтобы это сделать, и вынимать оказалось нечего: ревьюер сверял нечёткое совпадение из памяти переводов с исходным предложением, а это другая задача, чем проверка значения против объявленного поля. Идея живёт как рекомендация в наших же исследовательских заметках. Код для неё не понадобился.
По нашему опыту это и есть самое частое реальное состояние агентного пайплайна: не «дорогой», а неизмеренный и недостижимый, который держат, потому что удалить — как будто в чём-то признаться.
Как решать: четыре вопроса
Если вам продают агентный слой перевода или вы думаете его строить:
1. Какова база, замеренная на вашем контенте? Не на WMT. На ваших документах, с вашим глоссарием, по той шкале, по которой вы качество и судите. Большая часть агентных выигрышей испаряется против одного хорошо составленного вызова с глоссарием внутри.
2. Что ревьюеру разрешено говорить? Если ответ «что угодно» — ждите регрессий. Если ответ — список фальсифицируемых свойств, то агент вам, возможно, и не нужен: нужен валидатор.
3. Сколько стоит несошедшаяся петля? Для итеративных схем считайте худший случай, а не средний. Зацикливаются трудные документы, то есть дорогие, то есть те, которых у вас много.
4. Сконцентрирован ли выигрыш? Если выигрыш реален на 5% документов — гоняйте дорогой путь на этих 5%. Выборочная эскалация забирает большую часть пользы за долю множителя, и, в отличие от агентного фреймворка, это правило маршрутизации, которое пишется за полдня.
Дешёвое, которое обычно и выигрывает
Для перевода документов вмешательства, которые в наших числах измеримо окупились, оказались все скучными:
- Глоссарий в промпте — это один дополнительный блок входа, а не один дополнительный вызов модели.
- Выключение «размышления» у рассуждающей модели на механической работе — это флаг.
- Детерминированная проверка чисел после перевода — это сравнение цепочек цифр, и стоит она нисколько.
- Не извлекать документ, уже извлечённый — это кэш.
Ни одно из этого не агент. Всё это дешевле одного лишнего прохода, и каждое чинит класс дефектов, а не подталкивает среднее.
Главное
- Последовательные агенты стоят около 5× токенов, итеративные — около 15×, с высокой дисперсией на документах, которые не сходятся.
- Замеры к рекламе недобры: агентные системы проиграли зрелому NMT по автометрикам в 7 из 12 комбинаций и одному вызову LLM по человеческой оценке в 5 из 6.
- Стадия ревью — это ещё одна генерация, а не валидатор. Она поощряется за то, что нашла что сказать, а редактор дальше по этому действует.
- Там, где схема окупается, делайте ревьюера фальсифицируемым — списком свойств, что дешевле и надёжнее агента.
- Эскалируйте выборочно. Если выигрыш на 5% документов — тратьте множитель на эти 5%.
FAQ
Насколько агентный перевод дороже?
Примерно впятеро по токенам для последовательной связки переводчик-ревьюер-редактор и примерно впятнадцатеро для итеративной петли, по опубликованным замерам. Задержка растёт сопоставимо, а это важно для любого пайплайна, за которым наблюдает пользователь.
Улучшает ли агент-ревьюер качество перевода?
Иногда, и не по умолчанию. В опубликованных сравнениях один вызов LLM обошёл агентные системы по человеческой оценке в пяти случаях из шести. Ревьюер, которому велено искать проблемы, найдёт проблемы и в верном переводе, а стадия редактора дальше по этому совету поступит.
Когда агентный перевод действительно оправдан?
На длинной художественной прозе, где важна согласованность целого произведения, и на юридических текстах, где второй проход можно нацелить на конкретные риски вроде изменённых обязательств. В обоих случаях выигрыш сконцентрирован, а значит, разумнее маршрутизировать такие документы на дорогой путь, чем гонять его на всём.
Чем дешевле заменить агента-ревьюера?
Валидатором: детерминированной проверкой тех свойств, которые вам действительно важны, — числа на месте, термины совпали с глоссарием, знак обязательств не поменялся. Он стоит нисколько за документ, не способен выдумать замечание и ловит те классы дефектов, которые на официальных документах и решают.
Как понять, используется ли агентный пайплайн вообще?
Инструментировать его. У нас это были 668 строк за значением режима, которое API никогда не принимал: в проде он исполнился ноль раз, и никто не заметил. Телеметрия токенов по путям вызова отвечает на этот вопрос за сутки.
Заключение
«Добавим ещё вызовов модели» — это гипотеза, а не архитектура, и проверяется она ценой одного дня: прогоните свой контент через один хорошо составленный вызов и через агентный путь и оцените оба так, как оцениваете качество на самом деле.
Наш собственный опыт — маленькая и неловкая версия того же урока. Пайплайн у нас был, мы его ни разу не запустили, а когда наконец прочитали, чтобы переиспользовать лучшую часть, эта часть оказалась решающей другую задачу. Важным замером было не «лучше ли оно», а «работает ли оно вообще» — и на этот вопрос мы тоже не могли ответить.
Если хотите перевод документов, где дорогие шаги — это те, которые замерили, — попробуйте KTTC.
