Flex inference

Gemini Flex API হল একটি ইনফারেন্স টিয়ার যা স্ট্যান্ডার্ড রেটের তুলনায় ৫০% কম খরচে পরিবর্তনযোগ্য লেটেন্সি ও বেস্ট-এফোর্ট উপলভ্যতা প্রদান করে। এটি লেটেন্সি-সহনশীল ওয়ার্কলোডের জন্য ডিজাইন করা হয়েছে যার জন্য সিনক্রোনাস প্রসেসিং প্রয়োজন কিন্তু স্ট্যান্ডার্ড এপিআইয়ের রিয়েল-টাইম পারফর্ম্যান্সের প্রয়োজন নেই।

Flex কীভাবে ব্যবহার করতে হয়

Flex টিয়ার ব্যবহার করতে, আপনার অনুরোধে service_tier হিসেবে flex উল্লেখ করুন। এই ফিল্ডটি বাদ দেওয়া হলে, অনুরোধ ডিফল্ট হিসেবে স্ট্যান্ডার্ড টিয়ার ব্যবহার করে।

Python

from google import genai

client = genai.Client()

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="Analyze this dataset for trends...",
    service_tier='flex'
)
print(interaction.output_text)

জাভাস্ক্রিপ্ট

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

const client = new GoogleGenAI({});

async function main() {
    const interaction = await client.interactions.create({
        model: 'gemini-3.8-flash',
        input: 'Analyze this dataset for trends...',
        service_tier: 'flex'
    });
    console.log(interaction.output_text);
}
await main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.ServiceTier;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;

Client client = new Client();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.8-flash"))
        .input(InteractionsInput.of("Analyze this dataset for trends..."))
        .serviceTier(ServiceTier.FLEX)
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

System.out.println(interaction.outputText().orElse(""));

খুলুন

package main

import (
    "context"
    "fmt"
    "log"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model:       interactions.Model("gemini-3.8-flash"),
            Input:       interactions.NewInteractionsInput("Analyze this dataset for trends..."),
            ServiceTier: interactions.ServiceTierFlex.ToPointer(),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    if res.Interaction.OutputText != nil {
        fmt.Println(*res.Interaction.OutputText)
    }
}

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.8-flash",
      "input": "Analyze this dataset for trends...",
      "service_tier": "flex"
  }'

Flex inference কীভাবে কাজ করে

Gemini Flex ইনফারেন্স, স্ট্যান্ডার্ড API এবং Batch API-এর ২৪-ঘণ্টার টার্নঅ্যারাউন্ডের মধ্যে পার্থক্য দূর করে। এটি ব্যাকগ্রাউন্ড টাস্ক ও সিকোয়েন্সিয়াল ওয়ার্কফ্লোর জন্য সাশ্রয়ী সমাধান প্রদান করতে অফ-পিক, "শেড করা যায়" এমন কম্পিউট ক্যাপাসিটি ব্যবহার করে।

ফিচার ফ্লেক্স অগ্রাধিকার মানক ব্যাচ
দাম ৫০% ছাড় স্ট্যান্ডার্ডের চেয়ে ৭৫-১০০% বেশি সম্পূর্ণ দাম ৫০% ছাড়
লেটেন্সি মিনিট (১–১৫ মিনিট টার্গেট) কম (সেকেন্ড) সেকেন্ড থেকে মিনিট ২৪ ঘণ্টা পর্যন্ত
নির্ভরযোগ্যতা বেস্ট-এফোর্ট (শেডেবল) বেশি (নন-শেডেবল) বেশি / মাঝারি-বেশি বেশি (থ্রুপুটের জন্য)
ইন্টারফেস সিনক্রোনাস সিনক্রোনাস সিনক্রোনাস অসমনিয়ত

প্রধান সুবিধা

  • খরচ সাশ্রয়: প্রোডাকশন মূল্যায়ন, ব্যাকগ্রাউন্ড এজেন্ট ও ডেটা এনরিচমেন্টের ক্ষেত্রে উল্লেখযোগ্য সাশ্রয়।
  • কম সমস্যা: আপনার আগেকার অনুরোধে একটি প্যারামিটার যোগ করুন।
  • সিঙ্ক্রোনাস ওয়ার্কফ্লো: সিকোয়েন্সিয়াল API চেনের জন্য আদর্শ, যেখানে পরবর্তী অনুরোধ আগেরটির আউটপুটের উপর নির্ভর করে, এটি এজেন্টিক ওয়ার্কফ্লোয়ের জন্য ব্যাচের চেয়ে বেশি নমনীয়।

যেসব ক্ষেত্রে ব্যবহার করা যাবে

  • অফলাইন মূল্যায়ন: "LLM-কে-বিচারক-হিসেবে" ব্যবহার করে রিগ্রেশন টেস্ট বা লিডারবোর্ড চালানো।
  • ব্যাকগ্রাউন্ড এজেন্ট: CRM আপডেট, প্রোফাইল তৈরি করা বা কন্টেন্ট মডারেশনের মতো ক্রমিক টাস্ক যেখানে কয়েক মিনিটের বিলম্ব গ্রহণযোগ্য।
  • বাজেট-সীমিত গবেষণা: সীমিত বাজেটে প্রচুর টোকেন ভলিউম প্রয়োজন এমন একাডেমিক পরীক্ষা।

রেট লিমিট

ফ্লেক্স ইনফারেন্স ট্রাফিক আপনার সাধারণ রেট লিমিটের মধ্যে গণনা করা হয়; এটি ব্যাচ API-এর মতো বর্ধিত রেট লিমিট অফার করে না।

বাদ দেওয়া যায় এমন ক্যাপাসিটি

ফ্লেক্স ট্রাফিককে কম অগ্রাধিকার দেওয়া হয়। সাধারণ ট্রাফিকে হঠাৎ বৃদ্ধি হলে, বেশি অগ্রাধিকার পাওয়া ব্যবহারকারীদের জন্য ক্যাপাসিটি নিশ্চিত করতে, Flex অনুরোধ আগে থেকেই বাতিল বা সরিয়ে দেওয়া হতে পারে। আপনি যদি হাই-প্রPriority ইনফারেন্স খুঁজছেন, তাহলে অগ্রাধিকার ভিত্তিক ইনফারেন্স চেক করুন

সমস্যার কোড

ফ্লেক্স ক্যাপাসিটি উপলভ্য না থাকলে বা সিস্টেম ব্যস্ত থাকলে, API স্ট্যান্ডার্ড সমস্যার কোড রিটার্ন করবে:

  • 503 পরিষেবা উপলভ্য নেই: সিস্টেম বর্তমানে তার ক্যাপাসিটির সর্বাধিক সীমায় পৌঁছে গেছে।
  • 429 অনেক বেশি অনুরোধ: রেট সীমা বা রিসোর্স শেষ হয়ে যাওয়া।

ক্লায়েন্টের দায়িত্ব

  • কোনও সার্ভার-সাইড ফলব্যাক নেই: অপ্রত্যাশিত চার্জ এড়াতে, Flex-এর ক্যাপাসিটি পূর্ণ হয়ে গেলে, সিস্টেম অটোমেটিক Flex অনুরোধকে Standard টিয়ারে আপগ্রেড করবে না।
  • আবার চেষ্টা করা: আপনাকে অবশ্যই এক্সপোনেনশিয়াল ব্যাকঅফ সহ নিজস্ব ক্লায়েন্ট-সাইড আবার চেষ্টা করার লজিক প্রয়োগ করতে হবে।
  • টাইম-আউট: Flex অনুরোধগুলি সারিতে থাকতে পারে বলে, আমরা ক্লায়েন্ট-সাইড টাইম-আউট বাড়িয়ে ১০ মিনিট বা তার বেশি করার পরামর্শ দিই, যাতে অপূর্ণাঙ্গ কানেকশন ক্লোজার এড়ানো যায়।

টাইম-আউট উইন্ডো অ্যাডজাস্ট করা

আপনি REST API ও ক্লায়েন্ট লাইব্রেরির জন্য অনুরোধ পিছু টাইম-আউট কনফিগার করতে পারবেন। সবসময় নিশ্চিত করুন যে আপনার ক্লায়েন্ট-সাইড টাইমআউট, সার্ভারের প্রত্যাশিত ধৈর্য্য উইন্ডো (যেমন, Flex ওয়েট কিউয়ের জন্য ৬০০ সেকেন্ড+) কভার করে। SDK-তে টাইম-আউট ভ্যালু মিলি সেকেন্ডে দিতে হয়।

প্রতিটি অনুরোধের জন্য টাইম-আউট

Python

from google import genai

client = genai.Client(http_options={"timeout": 900000})

interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="why is the sky blue?",
    service_tier="flex",
)

জাভাস্ক্রিপ্ট

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

const client = new GoogleGenAI({});

async function main() {
    const interaction = await client.interactions.create({
        model: "gemini-3.8-flash",
        input: "why is the sky blue?",
        service_tier: "flex",
    }, {timeout: 900000});
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.ServiceTier;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import com.google.genai.types.HttpOptions;

Client client =
    Client.builder()
        .httpOptions(HttpOptions.builder().timeout(900000).build())
        .build();

CreateModelInteraction params =
    CreateModelInteraction.builder()
        .model(Model.of("gemini-3.8-flash"))
        .input(InteractionsInput.of("why is the sky blue?"))
        .serviceTier(ServiceTier.FLEX)
        .build();

Interaction interaction =
    client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();

খুলুন

package main

import (
    "context"
    "log"
    "time"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, &genai.ClientConfig{
        HTTPOptions: genai.HTTPOptions{
            Timeout: genai.Ptr(15 * time.Minute),
        },
    })
    if err != nil {
        log.Fatal(err)
    }

    res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
        Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
            Model:       interactions.Model("gemini-3.8-flash"),
            Input:       interactions.NewInteractionsInput("why is the sky blue?"),
            ServiceTier: interactions.ServiceTierFlex.ToPointer(),
        }),
    })
    if err != nil {
        log.Fatal(err)
    }
    _ = res
}

আবার চেষ্টা করার সুবিধা প্রয়োগ করা

যেহেতু 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.8-flash",
                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:
                print("Flex exhausted, falling back to Standard...")
                return client.interactions.create(
                    model="gemini-3.8-flash",
                    input="Analyze this batch statement."
                )

interaction = call_with_retry()
print(interaction.output_text)

জাভাস্ক্রিপ্ট

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.8-flash",
        input: "Analyze this batch statement.",
        service_tier: '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.8-flash",
          input: "Analyze this batch statement.",
        });
      }
    }
  }
}

async function main() {
    const interaction = await callWithRetry();
    console.log(interaction.output_text);
}

await main();

Java

import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.ServiceTier;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;

Client client = new Client();

int maxRetries = 3;
int baseDelay = 5;
Interaction interaction = null;

for (int attempt = 0; attempt < maxRetries; attempt++) {
  try {
    CreateModelInteraction flexParams =
        CreateModelInteraction.builder()
            .model(Model.of("gemini-3.8-flash"))
            .input(InteractionsInput.of("Analyze this batch statement."))
            .serviceTier(ServiceTier.FLEX)
            .build();
    interaction =
        client.interactions.create(CreateInteractionRequestBody.of(flexParams)).interaction().get();
    break;
  } catch (Exception e) {
    if (attempt < maxRetries - 1) {
      int delay = baseDelay * (1 << attempt); // Exponential Backoff
      System.out.println("Flex busy, retrying in " + delay + "s...");
      Thread.sleep(delay * 1000L);
    } else {
      System.out.println("Flex exhausted, falling back to Standard...");
      CreateModelInteraction standardParams =
          CreateModelInteraction.builder()
              .model(Model.of("gemini-3.8-flash"))
              .input(InteractionsInput.of("Analyze this batch statement."))
              .build();
      interaction =
          client
              .interactions
              .create(CreateInteractionRequestBody.of(standardParams))
              .interaction()
              .get();
    }
  }
}

if (interaction != null) {
  System.out.println(interaction.outputText().orElse(""));
}

খুলুন

package main

import (
    "context"
    "fmt"
    "log"
    "time"

    "google.golang.org/genai"
    "google.golang.org/genai/interactions/models/interactions"
    "google.golang.org/genai/interactions/models/operations"
)

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, nil)
    if err != nil {
        log.Fatal(err)
    }

    maxRetries := 3
    baseDelay := 5
    var interaction *interactions.Interaction

    for attempt := 0; attempt < maxRetries; attempt++ {
        res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
            Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
                Model:       interactions.Model("gemini-3.8-flash"),
                Input:       interactions.NewInteractionsInput("Analyze this batch statement."),
                ServiceTier: interactions.ServiceTierFlex.ToPointer(),
            }),
        })
        if err == nil {
            interaction = res.Interaction
            break
        }

        if attempt < maxRetries-1 {
            delay := baseDelay * (1 << attempt) // Exponential Backoff
            fmt.Printf("Flex busy, retrying in %ds...\n", delay)
            time.Sleep(time.Duration(delay) * time.Second)
        } else {
            fmt.Println("Flex exhausted, falling back to Standard...")
            stdRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
                Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
                    Model: interactions.Model("gemini-3.8-flash"),
                    Input: interactions.NewInteractionsInput("Analyze this batch statement."),
                }),
            })
            if err != nil {
                log.Fatal(err)
            }
            interaction = stdRes.Interaction
        }
    }

    if interaction != nil && interaction.OutputText != nil {
        fmt.Println(*interaction.OutputText)
    }
}

দাম

Flex ইনফারেন্সের দাম স্ট্যান্ডার্ড API-এর ৫০% এবং টোকেন পিছু বিল করা হয়।

মানানসই মডেল

নিম্নলিখিত মডেলগুলি Flex ইনফারেন্স সমর্থন করে:

মডেল Flex inference
Gemini 3.8 Flash ✔️
Gemini 3.6 Flash ✔️
Gemini 3.5 Flash-Lite ✔️
Gemini 3.1 Flash-Lite ✔️
Gemini 3.1 Pro প্রিভিউ ✔️
Gemini 3 Flash প্রিভিউ ✔️
Gemini 2.5 Pro ✔️
Gemini 2.5 Flash ✔️
Gemini 2.5 Flash-Lite ✔️

এর পরে কী করতে হবে