FRIDA vs Jev vs QWEN 3.6 35B?
Агент магазина на LangGraph перед каждым ответом решает, какой ветке отдать реплику клиента: приветствие, товары, заказы, доставка или прощание. Ошибка роутера — агент отвечает не про то. Роутеры-судьи FRIDA-Decisions и TypeSafe Jev принимают запрос одного формата, а промпт для него можно собрать двумя способами: подход frida и подход jev. Оба промпта прогоняем через обоих судей на одном датасете длинных диалогов с резкими сменами темы и сравниваем точность, устойчивость к дрейфу и скорость. LLM Qwen — модель другого класса: в сравнении подходов не участвует, у неё свой системный промпт, она показана как эталон.
Большие цифры — лучшая точность роутера среди прогонов на текущей версии
датасета. Они обновляются сами, когда в data/runs.db появляется новый прогон.
Пять веток и реплики с историей
Каждая реплика клиента — отдельный тестовый пример: история диалога до неё, само сообщение и эталонная ветка. Роутер должен выбрать ветку по текущему сообщению, даже если до этого двадцать реплик шла другая тема.
Стратегии контекста
У FRIDA лимит 512 токенов state, а диалоги длинные. Поэтому сравниваем, какую часть истории класть в запрос. Каждая стратегия — отдельный прогон, датасет тот же.
| Стратегия | Что уходит в модель | Зачем |
|---|---|---|
full | текущее сообщение + вся история | максимум контекста; FRIDA режет до 512 токенов сама |
last_n | текущее + последние 8 реплик | короткое окно свежего контекста |
current_only | только текущее сообщение | базовая линия: что вообще даёт история |
State для промпта frida собирается раскладкой current_first:
текущее сообщение первым, история от свежих реплик к старым. FRIDA режет state справа, поэтому при
переполнении теряется самое давнее, а не классифицируемое сообщение.
Что получает каждая модель
Запросы ниже собраны тем же кодом, что и в прогоне (router.py, llm_router.py),
для выбранной реплики датасета. FRIDA и Jev получают один и тот же запрос по выбранному промпту (Jev — плюс
поле model). LLM-эталон получает свой системный промпт и state сообщением пользователя.
Диалог до этой реплики
Промпт FRIDA против промпта Jev
FRIDA и Jev принимают запрос одного формата (state + вопрос route типа
choice), но «родной» способ его написать у них разный. Промпт frida — state строкой
и короткие описания веток. Промпт jev написан по документации TypeSafe: state объектом с полями,
инструкция-вопрос со ссылкой на поле, у веток what / not_for / examples.
Чем отличаются
Подход FRIDA · промпт frida | Подход Jev · промпт jev | |
|---|---|---|
| state | одна строка с подписями «Клиент:» / «Оператор:» | объект {current_message, history: [{speaker, text}]} |
| порядок истории | текущее сообщение первым, история от свежих к старым — под обрезку справа | история по порядку, текущее сообщение — отдельное поле |
| инструкция | команда: «Определи, к какой ветке…» | вопрос со ссылкой на поле: «К какой теме относится current_message?» |
| ветки | строка-перечень признаков | что это, чем это не является (границы с соседями), примеры |
| под кого писался | FRIDA: текущее сообщение не теряется при обрезке до 512 токенов | Jev: по документации TypeSafe (State, Primitives, Choice) |
Один и тот же запрос двумя способами
Реплика и стратегия — с предыдущего слайда:
Промпт frida
Промпт jev
Кому какой промпт подходит
Точность FRIDA и Jev на каждом промпте, по стратегиям; берётся последний полный прогон каждой комбинации.
Один промпт — два судьи и эталон
Выберите подход к промпту и стратегию: для FRIDA и Jev берётся последний полный прогон этой комбинации (или идущий прямо сейчас). LLM-эталон от промпта не зависит — у него всегда свой системный промпт. Другой прогон можно выбрать в списке под моделью.
Точность
Доля верно выбранных веток; ошибки вызова не считаются.
Скорость одного вызова, мс
Сплошная часть — медиана, светлая — до p95.
По веткам и при смене темы
Те же три прогона в разрезе: точность по каждой ветке, на репликах с резкой сменой темы (drift) против обычных и самые частые промахи.
Точность по веткам
Дрейф темы против обычных реплик
Частые промахи (ожидали → выбрали)
Реплика за репликой
Каждый квадрат — одна реплика датасета: зелёный — модель выбрала верную ветку, красный — промах, серый — прогона по этой реплике нет. Точка сверху — смена темы. Нажмите на квадрат, чтобы увидеть сообщение и ответы всех трёх моделей.
Выберите реплику на карте.
Все комбинации на одном экране
Точность последнего полного прогона для каждой комбинации промпта и стратегии. Нажмите на строку, чтобы открыть её на слайде результатов.
Как обновить данные
Запустите прогон в соседнем терминале — страница подхватит его сама, по мере записи items:
python src/run_experiment.py run --router qwen --strategy fullpython src/run_experiment.py run --router frida --strategy current_onlypython src/run_experiment.py run --router jev --strategy full --prompt jev