Гибкий вывод

API Gemini Flex — это уровень обработки данных, предлагающий 50% снижение стоимости по сравнению со стандартными тарифами в обмен на переменную задержку и доступность по принципу «наилучших усилий». Он разработан для рабочих нагрузок, устойчивых к задержкам, требующих синхронной обработки, но не нуждающихся в производительности реального времени стандартного API.

Как использовать Flex

Для использования уровня Flex укажите в запросе параметр service_tier как flex . По умолчанию запросы используют стандартный уровень, если это поле опущено.

Python

from google import genai

client = genai.Client()

try:
    interaction = client.interactions.create(
        model="gemini-3-flash-preview",
        input="Analyze this dataset for trends...",
        service_tier='flex'
    )
    print(interaction.steps[-1].content[0].text)
except Exception as e:
    print(f"Flex request failed: {e}")

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

async function main() {
    try {
        const interaction = await client.interactions.create({
            model: 'gemini-3-flash-preview',
            input: 'Analyze this dataset for trends...',
            serviceTier: 'flex'
        });
        console.log(interaction.steps.at(-1).content[0].text);
    } catch (e) {
        console.log(`Flex request failed: ${e}`);
    }
}
await main();

ОТДЫХ

curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -d '{
      "model": "gemini-3-flash-preview",
      "input": "Analyze this dataset for trends...",
      "service_tier": "flex"
  }'

Как работает вывод Flex

Функция Gemini Flex Inference устраняет разрыв между стандартным API и 24-часовым временем обработки данных в рамках пакетного API . Она использует вычислительные мощности в непиковые часы, которые можно «отключать», предоставляя экономичное решение для фоновых задач и последовательных рабочих процессов.

Особенность Флекс Приоритет Стандарт Партия
Цены скидка 50% На 75-100% больше, чем стандартная версия. Полная цена скидка 50%
Задержка Минуты (целевое значение 1–15 минут) Низкий уровень (секунды) Секунды в минуты До 24 часов
Надежность Максимально возможные варианты (можно сбросить) Высокая (не линяет) Высокий / Средне-высокий Высокий (для обеспечения высокой пропускной способности)
Интерфейс Синхронный Синхронный Синхронный Асинхронный

Основные преимущества

  • Экономическая эффективность : существенная экономия на непроизводственных оценках, фоновых агентах и ​​обогащении данных.
  • Простота использования : достаточно добавить всего один параметр к существующим запросам.
  • Синхронные рабочие процессы : идеально подходит для последовательных цепочек API, где следующий запрос зависит от результата предыдущего, что делает его более гибким, чем пакетный режим, для агентных рабочих процессов.

Варианты использования

  • Офлайн-оценка : проведение регрессионных тестов или составление рейтинговых таблиц с участием студентов магистратуры в роли экспертов.
  • Фоновые агенты : Последовательные задачи, такие как обновление CRM, создание профилей или модерация контента, где допустима задержка в несколько минут.
  • Исследования с ограниченным бюджетом : академические эксперименты, требующие большого количества токенов при ограниченном бюджете.

Ограничения скорости

Трафик, передаваемый через Flex Inference, учитывается в общих лимитах скорости ; он не предлагает расширенных лимитов скорости, как Batch API .

Вместимость, которую можно свернуть

Трафик Flex обрабатывается с более низким приоритетом. При резком увеличении стандартного трафика запросы Flex могут быть вытеснены или отброшены для обеспечения пропускной способности для пользователей с высоким приоритетом. Если вам требуется определение приоритета, проверьте параметр «Определение приоритета».

коды ошибок

В случае нехватки ресурсов Flex или перегрузки системы API вернет стандартные коды ошибок:

  • Ошибка 503: Сервис недоступен : система в данный момент перегружена.
  • 429 Слишком много запросов : Ограничения скорости или исчерпание ресурсов.

Ответственность клиента

  • Отсутствие резервного варианта на стороне сервера : Во избежание непредвиденных расходов система не будет автоматически переводить запрос Flex на стандартный уровень, если пропускная способность Flex исчерпана.
  • Повторные попытки : Вам необходимо реализовать собственную логику повторных попыток на стороне клиента с экспоненциальной задержкой.
  • Тайм-ауты : Поскольку запросы Flex могут задерживаться в очереди, мы рекомендуем увеличить тайм-ауты на стороне клиента до 10 минут или более, чтобы избежать преждевременного разрыва соединения.

Настройте временные окна ожидания

Вы можете настроить тайм-ауты для каждого запроса в REST API и клиентских библиотеках. Всегда убедитесь, что ваш клиентский тайм-аут охватывает предполагаемое окно терпения сервера (например, 600 секунд и более для очередей ожидания Flex). SDK ожидают значения тайм-аута в миллисекундах.

Тайм-ауты для каждого запроса

Python

from google import genai

client = genai.Client()

try:
    interaction = client.interactions.create(
        model="gemini-3-flash-preview",
        input="why is the sky blue?",
        service_tier="flex",
        http_options={"timeout": 900000}
    )
except Exception as e:
    print(f"Flex request failed: {e}")

JavaScript

import { GoogleGenAI } from '@google/genai';

const client = new GoogleGenAI({});

async function main() {
    try {
        const interaction = await client.interactions.create({
            model: "gemini-3-flash-preview",
            input: "why is the sky blue?",
            serviceTier: "flex",
            httpOptions: {timeout: 900000}
        });
    } catch (e) {
        console.log(`Flex request failed: ${e}`);
    }
}

await main();

Реализовать повторные попытки

Поскольку Flex допускает сброс и завершается с ошибкой 503, вот пример реализации логики повторных попыток для продолжения обработки неудачных запросов:

Python

import time
from google import genai

client = genai.Client()

def call_with_retry(max_retries=3, base_delay=5):
    for attempt in range(max_retries):
        try:
            return client.interactions.create(
                model="gemini-3-flash-preview",
                input="Analyze this batch statement.",
                service_tier="flex",
            )
        except Exception as e:
            if attempt < max_retries - 1:
                delay = base_delay * (2 ** attempt) # Exponential Backoff
                print(f"Flex busy, retrying in {delay}s...")
                time.sleep(delay)
            else:
                # Fallback to standard on last strike (Optional)
                print("Flex exhausted, falling back to Standard...")
                return client.interactions.create(
                    model="gemini-3-flash-preview",
                    input="Analyze this batch statement."
                )

# Usage
interaction = call_with_retry()
print(interaction.steps[-1].content[0].text)

JavaScript

import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({});

async function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function callWithRetry(maxRetries = 3, baseDelay = 5) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    try {
      console.log(`Attempt ${attempt + 1}: Calling Flex tier...`);
      const interaction = await ai.interactions.create({
        model: "gemini-3-flash-preview",
        input: "Analyze this batch statement.",
        serviceTier: 'flex',
      });
      return interaction;
    } catch (e) {
      if (attempt < maxRetries - 1) {
        const delay = baseDelay * (2 ** attempt);
        console.log(`Flex busy, retrying in ${delay}s...`);
        await sleep(delay * 1000);
      } else {
        console.log("Flex exhausted, falling back to Standard...");
        return await ai.interactions.create({
          model: "gemini-3-flash-preview",
          input: "Analyze this batch statement.",
        });
      }
    }
  }
}

async function main() {
    const interaction = await callWithRetry();
    console.log(interaction.steps.at(-1).content[0].text);
}

await main();

Цены

Стоимость Flex Inference составляет 50% от стоимости стандартного API и рассчитывается за токен.

Поддерживаемые модели

Следующие модели поддерживают вывод Flex:

Модель Гибкий вывод
Фонарик Gemini 3.1 ✔️
Предварительная версия Gemini 3.1 Flash-Lite ✔️
Gemini 3.1 Pro Preview ✔️
Предварительный просмотр Gemini 3 Flash ✔️
Gemini 2.5 Pro ✔️
Вспышка Gemini 2.5 ✔️
Фонарь Gemini 2.5 Flash-Lite ✔️

Что дальше?