Журнал · Rit.work

История диалога не должна решать за локального агента

AO-DA разделяет принятие решения и ответ в образе персонажа, защищая логику локального LLM-агента от длинной и вводящей в заблуждение истории.

Rit.work
Студия разработки
8 октября 2026 г.3 мин чтения

Материал подготовлен автоматически по первоисточникам: ссылки на них — в конце статьи.

Локальный LLM-агент сохранил решение задачи неизменным при длинной и вводящей в заблуждение истории диалога. В нерецензированном препринте Masaaki Nakatsu и Reno Wang, где все числа рассчитали сами авторы, разделённая схема удерживала логику, тогда как единый проход опускался до нижней границы оценки. Для продукта это аргумент передавать историю слою формулировки ответа, но не слою, который принимает проверяемое решение.

Логика и образ персонажа получают разные входы

Архитектура AO-DA запускает два пути вывода на одной базовой модели с квантованием INT4. Между путями меняются LoRA-адаптеры: один настраивает модель на решение задачи, другой — на речь выбранного персонажа.

Логический путь получает только текущую реплику и наблюдаемые сигналы, например состояние пользователя и цель сессии. Он возвращает промежуточное состояние Micro-State: структурированный объект с оценкой ситуации, рекомендуемым действием, ограничениями, уровнем риска и данными для проверки происхождения решения.

Второй путь получает Micro-State вместе с полной историей разговора. Его задача — выразить уже принятое решение голосом Goku или Makima, не меняя обязательные действия. История помогает сохранить характер и связность диалога, но больше не служит входными данными для логического вывода.

Изоляцию обеспечивает не удачная формулировка запроса, а маршрутизация данных. В опыте логический запрос Llama занимал постоянные 180 токенов, тогда как смешанный запрос разрастался до 1 203 токенов. При неизменной текущей реплике логический путь возвращал побайтно одинаковый результат на всех уровнях загрязнения.

Micro-State также работает как граница между генеративной моделью и обычным кодом. В испытательном стенде правила выводили обязательные действия и уровень риска из наблюдаемых сигналов, а результат модели дополнял их. Поэтому AO-DA — не просто последовательность из двух запросов, а сочетание модели, проверяемой схемы и детерминированной политики.

Единый контекст ломал сначала формат, затем содержание

Проверка включала 480 запусков на Apple M2 с Llama-3.1-8B-Instruct и Gemma-3-4B-it. Использовали задачи о восстановлении перед выступлением и рисках продвижения токена, образы Goku и Makima, а также историю с прежними ошибочными советами, длинными репликами и примерами речи персонажа.

Главная метрика учитывала обязательные действия и понятия, запрещённые советы и способность вернуть заданную структуру. У единого прохода оценка Llama упала с 0,669 до 0,150, а Gemma — с 0,487 до той же нижней границы. Деградация шла последовательно по мере добавления загрязняющего контекста.

Основной сбой происходил на границе формата. На высоких уровнях загрязнения Llama не возвращала пригодную для разбора структуру в 80–95% запусков, а Gemma теряла её во всех запусках. При оценке полного необработанного текста падение было меньше: модель иногда продолжала упоминать правильные действия, но уже не помещала их в поля, на которые рассчитывал агент.

Отдельный опыт намеренно нарушал архитектуру и передавал историю логическому пути. Специализированный адаптер и отдельный формат всё ещё помогали Llama, причём разница была статистически значима. На Gemma оба варианта разрушались, поэтому адаптер сам по себе не заменяет жёсткую изоляцию входа.

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

Когда менять архитектуру продукта

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

Историю при этом не обязательно удалять. Её можно оставить слою, который объясняет решение, поддерживает тон и учитывает предыдущие формулировки. Состояние разрешается кешировать: при смене персонажа агент повторно генерирует только ответ, не пересчитывая логику.

Цена разделения — ещё один последовательный запуск модели. На первом ходе Llama задержка выросла с 18,2 до 28,2 секунды. Для интерактивного продукта это заметная плата, поэтому промежуточное состояние полезно переиспользовать, а независимые от модели правила — выполнять обычным кодом.

Если логике действительно нужна полная переписка, механически отрезать историю нельзя. Тогда команде понадобится отдельный этап, который извлекает из неё проверяемые факты и передаёт их логическому пути без реплик персонажа, старых советов и стилистических примеров.

Работа не даёт оснований считать небольшую модель устойчивой только благодаря специализированному адаптеру. Практический вывод строже: границу контекста нужно закрепить в оркестрации, а структурированный результат — проверять до того, как слой персонажа превратит его в свободный текст.

Источники

Пауза в чтении

Похоже на вашу задачу?

Расскажите, что собираете. За полчаса разложим на этапы и назовём сроки — это бесплатно и ни к чему не обязывает.

Rit.work

Студия разработки

Собираем мобильные приложения и помогаем командам получать от AI реальную пользу. Основатель и команда, работаем удалённо — с клиентами в России и за рубежом.

← Ко всем материалам
Понравилось? Обсудим вашу задачу