> Для получения чистого Markdown любой страницы добавьте .md к URL страницы.  
> Для полного индекса документации см. https://api.vega.chat/docs/llms.txt.  
> Для полного содержания документации см. https://api.vega.chat/docs/llms-full.txt.  
> Для интеграции AI‑клиентов (Claude Code, Cursor и др.) подключитесь к MCP‑серверу по адресу https://api.vega.chat/docs/_mcp/server.

# Auto Exacto

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

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

Когда ваш запрос включает инструменты, Auto Exacto переупорядочивает доступных провайдеров для выбранной модели, используя комбинацию реальных сигнальных показателей производительности:

* **Throughput** — метрики токенов в секунду в реальном времени (видны на вкладке [Performance](/aimodels) любой страницы модели).  
* **Tool‑calling success rate** — насколько надёжно каждый провайдер завершает вызовы инструментов (также видно на вкладке Performance).  
* **Benchmark data** — внутренние результаты оценок, которые мы активно собираем. Эти данные скоро будут публично доступны, но пока их нет на сайте.

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

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

Сигнал успешности вызова инструмента выводится из метрики **Tool Call Error Rate**, которая также видна на вкладке Performance любой страницы модели. Для каждого запроса, включающего инструменты, VEGA проверяет каждый вызов инструмента, возвращённый моделью, и валидирует его против схем, предоставленных вызывающим.

### Validator

Аргументы вызова инструмента `arguments` проверяются против соответствующей схемы `tools[].function.parameters` с помощью [`@cfworker/json-schema`](https://www.npmjs.com/package/@cfworker/json-schema), зафиксированной на **JSON Schema Draft 7**:

```ts
new Validator(parameters, '7')
```

Инструменты, у которых схема `parameters` отсутствует или не компилируется, рассматриваются как не имеющие схемы и всегда считаются валидными, поэтому метрика консервативна, когда схемы со стороны вызывающего некорректны.

### Regex engine

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

### Классификация каждого вызова инструмента

Каждый вызов инструмента попадает в одну из трёх категорий ошибок или считается валидным:

* **`InvalidJson`** — `JSON.parse(arguments)` бросает исключение.  
* **`UnknownName`** — `function.name` отсутствует в массиве `tools[]` запроса.  
* **`SchemaMismatch`** — валидатор возвращает `valid: false` относительно разрешённой схемы.

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

Запрос помечается как ошибочный, если **любой** из его вызовов инструмента попадает в одну из трёх вышеуказанных категорий. Показатель Tool Call Error Rate, отображаемый для каждой конечной точки за день, вычисляется на уровне **запроса** — и числитель, и знаменатель представляют собой количество запросов, а не количество отдельных вызовов инструмента:

```
requests_with_tool_call_errors / requests_where_finish_reason_is_tool_calls
```

Иными словами: из всех запросов, где модель завершилась выдачей вызовов инструментов, какая доля имела хотя бы один вызов, попавший в одну из трёх категорий ошибок. Запрос с пятью вызовами инструмента и одной ошибкой считается одним ошибочным запросом, а не «один из пяти».

### Ограничения

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

## Результаты

Мы наблюдали заметные улучшения в оценках [tau‑bench](https://github.com/sierra-research/tau-bench) и в показателях успешности вызова инструментов, когда Auto Exacto активен. Более детальные результаты бенчмарков будут опубликованы по мере публичного доступа к нашим данным оценки.

## Отключение

Без Auto Exacto стандартная маршрутизация VEGA в основном основана на [price‑weighted](/docs/guides/routing/provider-selection#price-based-load-balancing-default-strategy) — запросы распределяются между провайдерами с сильным предпочтением более низкой стоимости. Auto Exacto меняет это для запросов с вызовами инструментов, переупорядочивая провайдеров на основе сигналов качества вместо цены.

Если вы хотите вернуть прежнее поведение с учётом цены для запросов с вызовами инструментов, можете отключить Auto Exacto, явно сортируя по цене одним из следующих способов:

* **Параметр `provider.sort`** — установите `sort` в `"price"` в объекте `provider` тела вашего запроса. См. [Provider Sorting](/docs/guides/routing/provider-selection#provider-sorting) для деталей.  
* **Виртуальный вариант `:floor`** — добавьте `:floor` к любой модели (например `openai/gpt-4o:floor`), чтобы сортировать по цене. См. [Floor Price Shortcut](/docs/guides/routing/provider-selection#floor-price-shortcut).  
* **Сортировка по умолчанию в настройках аккаунта** — задайте сортировку провайдеров по цене в ваших [настройках аккаунта](/dashboard), чтобы применять сортировку по цене ко всем запросам.

Любой из этих методов обойдёт Auto Exacto и вернёт стандартный порядок провайдеров, основанный на цене.