Auto Exacto — это этап маршрутизации, который автоматически оптимизирует порядок поставщиков для всех запросов, включающих инструменты. Он запускается по умолчанию при каждом запросе вызова инструмента и не требует настройки.

Как это работает

Если ваш запрос включает инструменты, Auto Exacto меняет порядок доступных поставщиков для выбранной вами модели, используя комбинацию реальных сигналов производительности:
  • Пропускная способность — показатели количества токенов в секунду в реальном времени (отображаются на вкладке Производительность любой страницы модели).
  • Уровень успешных вызовов инструментов – насколько надежно каждый поставщик выполняет вызовы инструментов (также отображается на вкладке “Производительность”).
  • Эталонные данные — результаты собственного эталонного инструментария LLMSTORE, который постоянно сравнивает эндпоинты подходящих поставщиков. См. раздел «Что работает эталонный жгут»](#what-the-benchmark-harness-runs) для точных тестов и параметров, а также Где найти результаты где публикуются результаты.
Поставщики, которые не справляются с этими сигналами, теряют приоритет, а поставщики с хорошей репутацией перемещаются в начало списка.

Как измеряется вероятность успешного вызова инструментов

Сигнал об успешности вызова инструмента извлекается из показателя Частота ошибок при вызове инструмента, который также отображается на вкладке «Производительность» любой страницы модели. Для каждого запроса, включающего инструменты, LLMSTORE проверяет каждый вызов инструмента, возвращенный моделью, и проверяет его на соответствие схемам, предоставленным вызывающей стороной.

Валидатор

Вызов инструмента arguments проверяются на соответствие соответствующим tools[].function.parameters схема с использованием @cfworker/json-schema, прикрепленный к Проекту схемы JSON 7:
Инструменты, чьи Схема parameters отсутствует или не может скомпилироваться, рассматриваются как не имеющие схемы и всегда считаются допустимыми, поэтому метрика является консервативной, когда схемы на стороне вызывающего абонента имеют неверный формат.

Механизм регулярных выражений

@cfworker/json-schema делегаты pattern и Параметры patternProperties к встроенной реализации регулярных выражений среды выполнения. В среде LLMSTORE это собственный JavaScript. RegExp (V8/ECMA-262). Сверху нет прокладки, соответствующей ECMA-262, поэтому семантика регулярных выражений JavaScript в некоторых крайних случаях отличается от диалекта регулярных выражений, заданного схемой JSON.

Классификация по вызовам инструментов

Каждый вызов инструмента попадает в одну из трех категорий ошибок или считается действительным:
  • InvalidJsonJSON.parse(arguments) бросает.
  • UnknownNamefunction.name отсутствует в запросе tools[].
  • SchemaMismatch — валидатор возвращает результат valid: false против разрешенной схемы.

Агрегация на уровне запроса

Запрос помечается как ошибочный, если любой вызов его инструмента попадает в одну из трех категорий, указанных выше. Частота ошибок вызовов инструментов, отображаемая для каждой эндпоинта в день, затем вычисляется на уровне запросов — и числитель, и знаменатель представляют собой количество запросов, а не количество отдельных вызовов инструментов:
Другими словами: из всех запросов, в которых модель завершилась вызовом инструмента, в какой части был хотя бы один вызов инструмента, который попал в один из трех сегментов ошибок. Запрос с пятью вызовами инструментов и одним недопустимым вызовом считается одним ошибочным запросом, а не одним из пяти.

Предостережения

— ключевые слова представлены только в проекте схемы JSON 2019-09 или 2020-12 (например, unevaluatedProperties, $dynamicRef) не применяются в соответствии с Проектом 7.
  • Семантика регулярных выражений JavaScript отличается от диалекта регулярных выражений ECMA-262, на который формально ссылается схема JSON, поэтому pattern могут вести себя иначе, чем строгая реализация схемы JSON.

Что работает эталонный жгут

Сигнал эталонного теста поступает из собственной системы эталонного тестирования LLMSTORE, которая выполняется по регулярному графику для каждой эндпоинта поставщика, обслуживающей зарегистрированную модель. В настоящее время для маршрутизации Auto Exacto используются два теста:
  • GPQA Diamond – научные вопросы с несколькими вариантами ответов для выпускников. Эталонный тест фиксирует температуру на 0.5 (соответствует эталонной конфигурации openbench), детерминированно перемешивает варианты ответов для каждого вопроса и по умолчанию запускает 10 эпох (повторяющиеся проходы по набору данных).
  • Tau2-Bench Airline – эталонный тест агентного вызова инструментов, в котором симулятор пользователя LLM управляет многоэтапными диалогами с инструментами домена авиакомпании, с двоичным вознаграждением за окончательное состояние базы данных, проверки золотого действия и коммуникационной информации. Эталонный тест фиксирует температуру на 0, и по умолчанию работает 1 эпоху.

Как выполняются забеги

  • Каждый запуск теста фиксирует конкретную эндпоинт поставщика, поэтому каждый результат относится только к одной эндпоинту без резервного варианта. В качестве базового выполняется дополнительный незакрепленный запуск по маршрутизации по умолчанию LLMSTORE. — предустановки, требующие инструментов, пропускаются на эндпоинтах без поддержки инструментов. — оценки, используемые для маршрутизации, представляют собой текущие оценки каждой эндпоинта, агрегированные за скользящий 32-дневный период. — для подсчета запуски должны соответствовать минимальному размеру выборки (в настоящее время не менее 50 вопросов GPQA и 45 задач Tau2), поэтому частичные или неудачные запуски не влияют на маршрутизацию.
Перетасовка опций GPQA намеренно отличается от openbench: openbench повторно заполняет каждую запись, поэтому правильный ответ всегда B, в то время как этот жгут перетасовывается по индексу, поэтому его показатели GPQA нельзя напрямую сравнивать с оценками, опубликованными в openbench.

Как устанавливается порог производительности

У каждой модели и типа эталонного теста есть базовый уровень: медиана оценок по каждой эндпоинту в течение первых примерно 21 дня бенчмаркинга для этой модели и типа бенчмарка. Порог снижения ранга равен базовому уровню минус . Текущий скользящий балл эндпоинта сравнивается с этим порогом. Каждое окно открывается с первым квалификационным результатом для данной модели и типа теста, поэтому разные типы тестов для одной и той же модели могут иметь разные окна. Пока окно все еще находится в разработке, его базовый уровень является предварительным: он пересчитывается на основе всех квалификационных результатов, собранных на данный момент, поэтому каждый новый квалификационный результат для этого типа эталонного теста, включая результат от другого поставщика, может изменить пороговое значение. Как только это окно закрывается, базовый уровень в его нынешнем виде не допускает результатов последующих тестов, и пороговое значение больше не перемещается при изменении текущего показателя другого поставщика.

Где найти результаты

Результаты тестов являются общедоступными:
  • Страницы модели — карточка AutoExacto Benchmarks на странице каждой зарегистрированной модели показывает оценки каждого поставщика (а, если поставщики используют несколько эндпоинтов, каждую эндпоинт) в том же скользящем окне, которое используется для маршрутизации.
  • ​​Вкладка «Производительность» — пропускная способность и частота ошибок вызова инструментов для каждой эндпоинта находятся на вкладке «Производительность» каждой страницы модели.

Результаты

Мы заметили заметные улучшения в tau-bench оценки и показатели успешного вызова инструментов, когда Auto Exacto активен.

Отказ от участия

Без Auto Exacto маршрутизация LLMSTORE по умолчанию в основном взвешена по цене — запросы распределяются между поставщиками с явным предпочтением более низкой стоимости. Auto Exacto меняет это для запросов на вызов инструментов, изменяя порядок поставщиков на основе сигналов качества, а не цены. Если вы хотите восстановить предыдущее поведение с учетом цены для запросов на вызов инструментов, вы можете отказаться, явно отсортировав по цене, используя любой из следующих методов:
  • provider.sort параметр — установить sort чтобы "price" в provider объект тела вашего запроса. См. Сортировка поставщиков для подробностей.
  • :floor виртуальный вариант — добавить :floor к любой пуле модели (например. openai/gpt-4o:floor) для сортировки по цене. См. Ярлык минимальной цены.
  • Сортировка по умолчанию в настройках аккаунта — установите сортировку поставщика по умолчанию по цене в настройках аккаунта , чтобы применить сортировку цен ко всем запросам.
Любой из них обойдет Auto Exacto и вернется к стандартному заказу поставщика, взвешенному по цене.