استنتاج انعطافپذیر
رابط برنامهنویسی Gemini Flex یک لایه استنتاج است که در مقایسه با نرخهای استاندارد، 50 درصد کاهش هزینه ارائه میدهد و در عوض، تأخیر متغیر و دسترسیپذیری با بهترین تلاش را ارائه میدهد. این رابط برای بارهای کاری مقاوم در برابر تأخیر طراحی شده است که نیاز به پردازش همزمان دارند اما به عملکرد بلادرنگ رابط برنامهنویسی استاندارد نیازی ندارند.
نحوه استفاده از فلکس
برای استفاده از لایه Flex، در درخواست خود service_tier به صورت flex مشخص کنید. به طور پیشفرض، اگر این فیلد حذف شود، درخواستها از لایه استاندارد استفاده میکنند.
پایتون
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}")
جاوا اسکریپت
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"
}'
نحوهی عملکرد استنتاج فلکس
استنتاج Gemini Flex شکاف بین API استاندارد و گردش کار 24 ساعته Batch API را پر میکند. این سیستم از ظرفیت محاسباتی "قابل کاهش" و خارج از اوج مصرف استفاده میکند تا یک راهحل مقرونبهصرفه برای وظایف پسزمینه و گردشهای کاری متوالی ارائه دهد.
| ویژگی | فلکس | اولویت | استاندارد | دستهای |
|---|---|---|---|---|
| قیمتگذاری | ۵۰٪ تخفیف | ۷۵ تا ۱۰۰ درصد بیشتر از استاندارد | قیمت کامل | ۵۰٪ تخفیف |
| تأخیر | دقیقه (هدف ۱ تا ۱۵ دقیقه) | پایین (ثانیه) | ثانیه به دقیقه | تا ۲۴ ساعت |
| قابلیت اطمینان | بهترین تلاش (قابل کاهش) | زیاد (غیرقابل ریزش) | زیاد / متوسط-زیاد | بالا (برای توان عملیاتی) |
| رابط | همزمان | همزمان | همزمان | ناهمزمان |
مزایای کلیدی
- بهرهوری هزینه : صرفهجویی قابل توجه در ارزیابیهای غیرتولیدی، عوامل پسزمینه و غنیسازی دادهها.
- اصطکاک کم : به سادگی یک پارامتر واحد به درخواستهای موجود خود اضافه کنید.
- گردشهای کاری همزمان : برای زنجیرههای متوالی API که در آنها درخواست بعدی به خروجی درخواست قبلی بستگی دارد، ایدهآل است و آن را برای گردشهای کاری عاملی، انعطافپذیرتر از Batch میکند.
موارد استفاده
- ارزیابیهای آفلاین : اجرای آزمونهای رگرسیون یا جدول امتیازات «LLM به عنوان داور».
- عوامل پسزمینه : وظایف متوالی مانند بهروزرسانیهای CRM، ایجاد پروفایل یا مدیریت محتوا که در آنها دقایق تأخیر قابل قبول است.
- تحقیقات با بودجه محدود : آزمایشهای دانشگاهی که به حجم بالای توکن با بودجه محدود نیاز دارند.
محدودیتهای نرخ
ترافیک استنتاج Flex جزو محدودیتهای نرخ عمومی شما محسوب میشود؛ این سرویس مانند Batch API محدودیتهای نرخ توسعهیافته ارائه نمیدهد.
ظرفیت قابل تخلیه
ترافیک Flex با اولویت پایینتری مدیریت میشود. اگر افزایش ناگهانی در ترافیک استاندارد وجود داشته باشد، ممکن است درخواستهای Flex از دسترس خارج شوند یا حذف شوند تا ظرفیت برای کاربران با اولویت بالا تضمین شود. اگر به دنبال استنتاج با اولویت بالا هستید، استنتاج اولویت را بررسی کنید.
کدهای خطا
وقتی ظرفیت Flex در دسترس نباشد یا سیستم شلوغ باشد، API کدهای خطای استاندارد را برمیگرداند:
- ۵۰۳ سرویس در دسترس نیست : سیستم در حال حاضر ظرفیت کامل دارد.
- ۴۲۹ درخواستهای بیش از حد : محدودیتهای نرخ یا اتمام منابع.
مسئولیت مشتری
- بدون نیاز به پشتیبانگیری از سمت سرور : برای جلوگیری از هزینههای غیرمنتظره، سیستم در صورت پر بودن ظرفیت Flex، درخواست Flex را به طور خودکار به سطح استاندارد ارتقا نمیدهد.
- تلاشهای مجدد : شما باید منطق تلاش مجدد سمت کلاینت خود را با backoff نمایی پیادهسازی کنید.
- وقفهها : از آنجا که درخواستهای Flex ممکن است در صف انتظار بمانند، توصیه میکنیم وقفههای سمت کلاینت را به 10 دقیقه یا بیشتر افزایش دهید تا از بسته شدن زودهنگام اتصال جلوگیری شود.
تنظیم پنجرههای تایماوت
شما میتوانید برای REST API و کتابخانههای کلاینت، زمانهای انتظار به ازای هر درخواست را پیکربندی کنید. همیشه مطمئن شوید که زمان انتظار سمت کلاینت شما، بازه زمانی مورد نظر سرور را پوشش میدهد (مثلاً بیش از ۶۰۰ ثانیه برای صفهای انتظار Flex). SDKها مقادیر زمان انتظار را بر حسب میلیثانیه در نظر میگیرند.
مهلتهای زمانی به ازای هر درخواست
پایتون
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}")
جاوا اسکریپت
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 از کار میافتد، در اینجا مثالی از پیادهسازی اختیاری منطق تلاش مجدد برای ادامه با درخواستهای ناموفق آورده شده است:
پایتون
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)
جاوا اسکریپت
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();
قیمتگذاری
استنتاج فلکس با قیمت ۵۰٪ از API استاندارد و به ازای هر توکن محاسبه میشود.
مدلهای پشتیبانیشده
مدلهای زیر از استنتاج Flex پشتیبانی میکنند:
| مدل | استنتاج انعطافپذیر |
|---|---|
| جمینی ۳.۱ فلش-لایت | ✔️ |
| پیشنمایش Gemini 3.1 Flash-Lite | ✔️ |
| پیشنمایش Gemini 3.1 Pro | ✔️ |
| پیشنمایش فلش جمینی ۳ | ✔️ |
| جمینی ۲.۵ پرو | ✔️ |
| فلش جمینی ۲.۵ | ✔️ |
| جمینی ۲.۵ فلش-لایت | ✔️ |
قدم بعدی چیست؟
- استنتاج اولویت برای تأخیر بسیار کم.
- توکنها : توکنها را درک کنید.