> Для получения чистого 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.

# Fusion Router

[Fusion Router](https://api.vega.chat/openrouter/fusion) (`openrouter/fusion`) предоставляет вашей модели доступ к инструменту многомодельного обсуждения. При вызове панель моделей отвечает на ваш запрос параллельно, затем модель‑судья сравнивает их ответы и возвращает структурированный анализ — согласие, противоречия, пробелы в покрытии, уникальные инсайты и слепые зоны. Ваша модель использует этот анализ, чтобы написать лучший окончательный ответ.

## Обзор

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

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

```mermaid
flowchart LR
  request[Your request] --> model[Your model]
  model -- calls openrouter:fusion --> panel[Panel<br />up to 8 models<br />+ web_search + web_fetch]
  panel --> judge[Judge / analysis<br />+ web_search + web_fetch<br />structured JSON]
  judge -- analysis --> model
  model --> answer[Final answer]
```

1. Вы отправляете запрос с `model: "openrouter/fusion"`. Маршрутизатор разрешает псевдоним в реальную модель и прикрепляет инструмент `openrouter:fusion`.  
2. Ваша модель читает подсказку и решает, требует ли задача обсуждения. Если да, она вызывает `openrouter:fusion`. (Используйте `tool_choice: "required"`, чтобы гарантировать вызов.)  
3. **Панель** — набор моделей — отвечает на ваш запрос параллельно, каждая с включёнными `openrouter:web_search` и `openrouter:web_fetch`.  
4. **Судья** получает все ответы панели, с доступом к `openrouter:web_search` и `openrouter:web_fetch`, и сравнивает их — он не объединяет их. Он возвращает структурированный анализ в виде JSON: что согласовано большинством моделей (рассматривается как более надёжный консенсус), где есть разногласия, какие части покрыты только некоторыми моделями, уникальные инсайты отдельных моделей и слепые зоны, которые никто не затронул.  
5. Ваша модель получает анализ и пишет окончательный ответ.

`openrouter:web_search` и `openrouter:web_fetch` включены как в вызовах панели, так и в вызове судьи, поэтому модели могут получать свежие источники во время ответа и анализа.

## Два способа использования

```json title="Model alias (tool auto-injected)"
{
  "model": "openrouter/fusion",
  "messages": [
    { "role": "user", "content": "What are the strongest arguments for and against carbon taxes?" }
  ]
}
```

```json title="Server tool (explicit)"
{
  "model": "~anthropic/claude-opus-latest",
  "messages": [
    { "role": "user", "content": "What are the strongest arguments for and against carbon taxes?" }
  ],
  "tools": [
    { "type": "openrouter:fusion" }
  ]
}
```

Оба варианта используют один и тот же конвейер. Псевдоним модели проще — он автоматически внедряет инструмент, так что вам не нужно его объявлять. Формат серверного инструмента даёт больше контроля (выбираете свою внешнюю модель, комбинируете Fusion с другими инструментами).

В обоих случаях модель решает, когда вызывать `openrouter:fusion`. Для подсказок, не требующих обсуждения, она отвечает напрямую — включая вызов любых других объявленных вами инструментов. Добавьте `tool_choice: "required"`, чтобы принудительно включать Fusion в каждый запрос.

## Быстрый старт

```typescript title="TypeScript SDK"
import { OpenRouter } from '@openrouter/sdk';

const client = new OpenRouter({
  apiKey: '<VEGA_API_KEY>',
});

const completion = await client.chat.send({
  model: 'openrouter/fusion',
  messages: [
    {
      role: 'user',
      content: 'Survey the strongest arguments for and against a carbon tax. Where do experts disagree?',
    },
  ],
});

console.log(completion.choices[0].message.content);
```

```bash title="cURL"
curl https://api.vega.chat/api/v1/chat/completions \
  -H "Authorization: Bearer $VEGA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openrouter/fusion",
    "messages": [
      {"role": "user", "content": "Survey the strongest arguments for and against a carbon tax. Where do experts disagree?"}
    ]
  }'
```

## Конфигурация

Вы можете переопределить панель и судью, явно объявив инструмент с блоком `parameters`. Это необязательно — просто опустите его, и Fusion использует предустановки качества по умолчанию.

```typescript title="TypeScript SDK"
const completion = await client.chat.send({
  model: '~anthropic/claude-opus-latest',
  messages: [
    {
      role: 'user',
      content: 'Compare ridge, lasso, and elastic-net regression. Where does each shine?',
    },
  ],
  tools: [
    {
      type: 'openrouter:fusion',
      parameters: {
        analysis_models: [
          '~anthropic/claude-opus-latest',
          '~openai/gpt-latest',
          '~google/gemini-pro-latest',
        ],
        model: '~openai/gpt-latest',
      },
    },
  ],
});
```

```bash title="cURL"
curl https://api.vega.chat/api/v1/chat/completions \
  -H "Authorization: Bearer $VEGA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "~anthropic/claude-opus-latest",
    "messages": [
      {"role": "user", "content": "Compare ridge, lasso, and elastic-net regression."}
    ],
    "tools": [
      {
        "type": "openrouter:fusion",
        "parameters": {
          "analysis_models": ["~anthropic/claude-opus-latest", "~openai/gpt-latest", "~google/gemini-pro-latest"],
          "model": "~openai/gpt-latest"
        }
      }
    ]
  }'
```

| Поле                     | По умолчанию                                                                                         | Описание                                                                                                                                                               |
| ------------------------ | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `analysis_models`        | Quality preset (`~anthropic/claude-opus-latest`, `~openai/gpt-latest`, `~google/gemini-pro-latest`)   | Модели, образующие панель. Каждая работает параллельно с включёнными `openrouter:web_search` и `openrouter:web_fetch`. Допустимо 1–8 моделей.                           |
| `model`                  | Ваша внешняя модель                                                                                  | Модель‑судья, которая формирует структурированный JSON‑анализ. По умолчанию используется та же модель, что обрабатывает ваш запрос.                                   |
| `max_tool_calls`         | `8`                                                                                                  | Максимальное количество шагов вызова инструмента, которое каждая модель панели и судья могут выполнить в своём цикле `openrouter:web_search`/`web_fetch` до возврата текста. Диапазон 1–16. |
| `max_completion_tokens`  | Значение по умолчанию провайдера                                                                      | Максимальное количество токенов вывода (включая рассуждения) для внутреннего вызова панели/судьи. Позволяет не исчерпать бюджет моделей с тяжёлым рассуждением.          |
| `reasoning`              | Значение по умолчанию провайдера                                                                      | Конфигурация рассуждения, передаваемая в вызовы панели и судьи — объект с необязательными полями `effort` и `max_tokens`.                                                |
| `temperature`            | Значение по умолчанию провайдера                                                                      | Температура сэмплинга (`0`–`2`), передаваемая в вызовы панели и судьи.                                                                                                   |

## Принудительный запуск Fusion для каждого запроса

По умолчанию модель решает, когда вызывать `openrouter:fusion`. Чтобы гарантировать его запуск для каждого запроса, установите `tool_choice: "required"`:

```typescript title="TypeScript SDK"
const completion = await client.chat.send({
  model: 'openrouter/fusion',
  messages: [
    {
      role: 'user',
      content: 'Compare ridge, lasso, and elastic-net regression.',
    },
  ],
  tool_choice: 'required',
});
```

```bash title="cURL"
curl https://api.vega.chat/api/v1/chat/completions \
  -H "Authorization: Bearer $VEGA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openrouter/fusion",
    "messages": [
      {"role": "user", "content": "Compare ridge, lasso, and elastic-net regression."}
    ],
    "tool_choice": "required"
  }'
```

Поскольку `openrouter/fusion` внедряет только один инструмент (`openrouter:fusion`), требование *какого‑то* вызова инструмента фактически заставляет выполнить Fusion. Если ваш запрос также содержит другие инструменты, модель может выбрать один из них вместо Fusion.

## Ответ

Поле `model` в ответе указывает **конкретную модель**, которая обработала запрос — а не псевдоним `openrouter/fusion`:

```json
{
  "id": "gen-...",
  "model": "anthropic/claude-opus-4.5",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "..."
      }
    }
  ]
}
```

Чтобы убедиться, что генерация прошла через Fusion Router, проверьте [метаданные генерации](/docs/api/api-reference/generations/get-generation). Поле `router` будет содержать `openrouter/fusion`:

```json
{
  "data": {
    "id": "gen-...",
    "model": "anthropic/claude-opus-4.5",
    "router": "openrouter/fusion"
  }
}
```

## Стоимость

Fusion выполняет N вызовов панели + 1 вызов судьи в дополнение к вашему обычному запросу. При панели из трёх моделей ожидайте примерно 4–5× стоимости одного завершения того же запроса. Стоимость растёт линейно с размером панели.

## Защита от рекурсии

Внутренние вызовы Fusion передают заголовок `x-openrouter-fusion-depth`. Модели панели и судьи не могут рекурсивно вызывать `openrouter:fusion` — плагин отказывается внедрять инструмент второй раз, ограничивая обсуждение одним уровнем.

## Связанные материалы

* [`openrouter:fusion` server tool](/docs/guides/features/server-tools/fusion)  
* [Fusion plugin](/docs/guides/features/plugins/fusion)  
* [Auto Router](/docs/guides/routing/routers/auto-router)  
* [Pareto Router](/docs/guides/routing/routers/pareto-router)  
* [`/labs/fusion`](/labs/fusion) — интерактивная площадка