Wnioskowanie Flex

Gemini Flex API to warstwa wnioskowania, która oferuje 50% obniżkę kosztów w porównaniu ze stawkami standardowymi w zamian za zmienne opóźnienie i dostępność bez gwarancji. Jest ona przeznaczona do zbiorów zadań tolerujących opóźnienia, które wymagają przetwarzania synchronicznego, ale nie potrzebują wydajności w czasie rzeczywistym oferowanej przez standardowy interfejs API.

Jak korzystać z Flex

Aby korzystać z warstwy Flex, w żądaniu określ service_tier jako flex. Jeśli to pole zostanie pominięte, żądania będą domyślnie korzystać z warstwy standardowej.

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();

REST

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"
  }'

Jak działa wnioskowanie Flex

Wnioskowanie Gemini Flex wypełnia lukę między standardowym interfejsem API a 24-godzinnym czasem realizacji interfejsu Batch API. Wykorzystuje moc obliczeniową poza godzinami szczytu, którą można wyłączyć, aby zapewnić ekonomiczne rozwiązanie do zadań wykonywanych w tle i sekwencyjnych przepływów pracy.

Funkcja Flex Priorytet Standardowe Wsad
Ceny 50% rabatu 75–100% więcej niż w przypadku warstwy standardowej Bilet normalny 50% rabatu
Opóźnienie Minuty (docelowo 1–15 min) Niskie (sekundy) Od sekund do minut Do 24 godzin
Niezawodność Bez gwarancji (możliwość wyłączenia) Wysoka (bez możliwości wyłączenia) Wysoka / średnio wysoka Wysoka (w przypadku przepustowości)
Interfejs Synchroniczna Synchroniczna Synchroniczna Asynchroniczny

Główne korzyści

  • Oszczędność kosztów: znaczne oszczędności w przypadku ocen innych niż produkcyjne, agentów działających w tle i wzbogacania danych.
  • Niewielkie utrudnienia: wystarczy dodać jeden parametr do istniejących żądań.
  • Synchroniczne przepływy pracy: idealne w przypadku sekwencyjnych łańcuchów interfejsów API, w których kolejne żądanie zależy od wyniku poprzedniego, co sprawia, że jest bardziej elastyczne niż w przypadku wsadowych przepływów pracy agentów.

Przypadki użycia

  • Oceny offline: przeprowadzanie testów regresyjnych lub tworzenie tabel wyników „LLM-as-a-judge”.
  • Agenci działający w tle: sekwencyjne zadania, takie jak aktualizacje CRM, tworzenie profili lub moderowanie treści, w których dopuszczalne są kilkuminutowe opóźnienia.
  • Badania z ograniczonym budżetem: eksperymenty akademickie, które wymagają dużej liczby tokenów przy ograniczonym budżecie.

Ograniczenia liczby żądań

Ruch związany z wnioskowaniem Flex jest wliczany do ogólnych ograniczeń liczby żądań. Nie oferuje on rozszerzonych limitów liczby żądań, takich jak interfejs Batch API.

Możliwość wyłączenia

Ruch Flex jest traktowany z niższym priorytetem. Jeśli nastąpi wzrost ruchu standardowego, żądania Flex mogą zostać wywłaszczone lub usunięte, aby zapewnić moc obliczeniową użytkownikom o wysokim priorytecie. Jeśli szukasz wnioskowania o wysokim priorytecie, zapoznaj się z wnioskowaniem priorytetowym.

Kody błędów

Gdy moc obliczeniowa Flex jest niedostępna lub system jest przeciążony, interfejs API zwraca standardowe kody błędów:

  • Błąd 503 (usługa niedostępna): system jest obecnie przeciążony.
  • 429 Zbyt wiele żądań: przekroczenie limitów liczby żądań lub wyczerpanie zasobów.

Odpowiedzialność klienta

  • Brak rezerwowego rozwiązania po stronie serwera: aby zapobiec nieoczekiwanym opłatom, system nie będzie automatycznie uaktualniać żądania Flex do warstwy standardowej, jeśli moc obliczeniowa Flex jest wyczerpana.
  • Ponowne próby: musisz zaimplementować własną logikę ponawiania prób po stronie klienta z wzrastającym czasem do ponowienia.
  • Limity czasu: ponieważ żądania Flex mogą znajdować się w kolejce, zalecamy zwiększenie limitów czasu po stronie klienta do co najmniej 10 minut, aby uniknąć przedwczesnego zamknięcia połączenia.

Dostosowywanie limitów czasu

Limity czasu dla poszczególnych żądań możesz skonfigurować w interfejsie REST API i bibliotekach klienta. Zawsze upewnij się, że limit czasu po stronie klienta obejmuje zamierzony czas oczekiwania serwera (np. 600 s lub więcej w przypadku kolejek oczekiwania Flex). Pakiety SDK oczekują wartości limitu czasu w milisekundach.

Limity czasu dla poszczególnych żądań

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();

Wdrażanie ponownych prób

Ponieważ Flex można wyłączyć i zwraca błędy 503, poniżej znajdziesz przykład opcjonalnego wdrożenia logiki ponawiania prób, aby kontynuować nieudane żądania:

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();

Ceny

Wnioskowanie Flex jest wyceniane na 50% standardowego interfejsu API i rozliczane za token.

Obsługiwane modele

Wnioskowanie Flex jest obsługiwane przez te modele:

Model Wnioskowanie Flex
Gemini 3.1 Flash-Lite ✔️
Gemini 3.1 Flash-Lite (wersja testowa) ✔️
Gemini 3.1 Pro (wersja testowa) ✔️
Gemini 3 Flash (wersja testowa) ✔️
Gemini 2.5 Pro ✔️
Gemini 2.5 Flash ✔️
Gemini 2.5 Flash-Lite ✔️

Co dalej?