Платформа

Конструктор запросов

Как использовать bodybuilder для генерации нескольких параллельных запросов под разные модели.

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

Что это делает

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

Это полезно для:

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

Сам bodybuilder только генерирует тела запросов. Основная нагрузка и тарификация начинаются уже на этапе выполнения сгенерированных запросов.

Базовый пример

Используйте model: "bodybuilder":

const response = await fetch('https://api.alltokens.ru/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'bodybuilder',
    messages: [
      {
        role: 'user',
        content: 'Посчитай до 10 с помощью Claude Sonnet и GPT-5',
      },
    ],
  }),
});

const data = await response.json();
const generatedRequests = JSON.parse(data.choices[0].message.content);
console.log(generatedRequests);

Формат ответа

Обычно bodybuilder возвращает JSON-объект с массивом requests:

{
  "requests": [
    {
      "model": "anthropic/claude-sonnet-4",
      "messages": [
        { "role": "user", "content": "Посчитай до 10" }
      ]
    },
    {
      "model": "openai/gpt-5.1",
      "messages": [
        { "role": "user", "content": "Посчитай до 10" }
      ]
    }
  ]
}

Каждый элемент в requests — это обычное тело запроса, которое потом можно отправить в POST /api/v1/chat/completions.

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

После генерации вы можете выполнить все запросы параллельно.

const builderResponse = await fetch('https://api.alltokens.ru/api/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'bodybuilder',
    messages: [
      {
        role: 'user',
        content: 'Объясни гравитацию с помощью Gemini и Claude',
      },
    ],
  }),
});

const builderData = await builderResponse.json();
const { requests } = JSON.parse(builderData.choices[0].message.content);

const results = await Promise.all(
  requests.map((requestBody) =>
    fetch('https://api.alltokens.ru/api/v1/chat/completions', {
      method: 'POST',
      headers: {
        Authorization: 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(requestBody),
    }).then((response) => response.json()),
  ),
);

results.forEach((result, index) => {
  console.log(requests[index].model);
  console.log(result.choices[0].message.content);
});

Когда это полезно

Сравнение моделей

Например:

Напиши хайку про программирование с помощью Claude Sonnet, GPT-5 и Gemini

Проверка надёжности

Можно запустить один и тот же вопрос на нескольких моделях и сравнить ответы:

Ответь на вопрос "Сколько будет 2+2?" с помощью трёх разных моделей

A/B-тестирование промптов

Можно быстро посмотреть, какая модель лучше справляется с вашей задачей:

Сделай краткое резюме этой статьи с помощью пяти сильных текстовых моделей

Исследование моделей

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

Как он выбирает модели

bodybuilder ориентируется на вашу текстовую инструкцию и старается:

  • понять, какие модели вы имели в виду
  • подобрать актуальные идентификаторы моделей
  • собрать минимально достаточные тела запросов

Если вы называете семейство моделей неформально, bodybuilder обычно пытается подобрать подходящие конкретные ID автоматически.

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

Стоимость

  • генерация тел запросов через bodybuilder не является основным платным прогоном модели под вашу задачу
  • выполнение самих сгенерированных запросов тарифицируется по обычным правилам выбранных моделей

Ограничения

  • входной запрос должен использовать формат messages
  • ответы bodybuilder нужно парсить как JSON перед выполнением
  • сгенерированные тела запросов могут потребовать вашей валидации перед массовым запуском
  • если вам нужна строгая структура, полезно дополнительно проверять requests перед отправкой

Когда лучше не использовать bodybuilder

Лучше обойтись без него, если:

  • вы уже точно знаете, какие модели хотите вызвать
  • вам не нужен параллельный запуск
  • вы хотите полностью вручную контролировать каждое тело запроса

Частые вопросы

alltokens/auto выбирает одну подходящую модель и сразу выполняет запрос. bodybuilder не выполняет задачу напрямую, а сначала генерирует несколько готовых тел запросов под разные модели.

Да. Обычно их выполняют параллельно через Promise.all, asyncio.gather или аналогичный механизм.

Для быстрых экспериментов — обычно да. Для продакшен-сценариев лучше валидировать JSON и проверять выбранные модели перед массовым запуском.

Нет. route preview показывает кандидатов для маршрутизации, а bodybuilder собирает несколько отдельных тел запросов для параллельного запуска.