Gemini و دیگر مدلهای هوش مصنوعی زایا ورودی و خروجی را در سطح جزئیاتی به نام واحد پردازش میکنند.
برای مدلهای Gemini، یک نشان معادل حدود ۴ نویسه است. ۱۰۰ نشانه تقریباً برابر با ۶۰ تا ۸۰ کلمه انگلیسی است.
درباره دادهواحدها
نشانها میتوانند نویسههای تکی مانند z یا کلمات کامل مانند cat باشند. کلمات طولانی
به چند کد تقسیم میشوند. مجموعه همه نشانهایی که مدل استفاده میکند
واژگان نامیده میشود و فرایند تقسیم نوشتار به نشانها
نشانسازی نامیده میشود.
وقتی صورتحساب فعال باشد، هزینه فراخوانی Gemini API تاحدودی براساس تعداد کدهای ورودی و خروجی تعیین میشود، بنابراین دانستن نحوه شمارش کدها میتواند مفید باشد.
میتوانید شمارش نشانهها را در Colab ما امتحان کنید.
|
|
امتحان کردن دفترچه Colab
|
مشاهده دفترچه در GitHub
|
شمارش دادهواحدها
همه ورودیها و خروجیهای Gemini API، ازجمله نوشتار، فایلهای تصویری، و دیگر حالتهای غیرنوشتاری، نشانگذاری میشوند.
میتوانید به روشهای زیر، تعداد نشانهها را بشمارید:
count_tokensرا با ورودی درخواست فراخوانی کنید.
این متد تعداد کل توکنها را فقط در ورودی برمیگرداند. میتوانید این تماس را قبلاز ارسال ورودی به مدل برای بررسی اندازه درخواستهایتان برقرار کنید.پساز فراخوانی
generate_content، از مشخصهusage_metadataدر شیءresponseاستفاده کنید.
این تعداد کل نشانها را در ورودی و خروجی برمیگرداند:total_token_count.
همچنین تعداد دادهواحدهای ورودی و خروجی را بهصورت جداگانه برمیگرداند:prompt_token_count(دادهواحدهای ورودی) وcandidates_token_count(دادهواحدهای خروجی).اگر از مدل اندیشگر استفاده میکنید، توکنهای استفادهشده درطول فرایند اندیشیدن در
thoughts_token_countبرگردانده میشوند. و اگر از ذخیره کردن بافت در حافظه نهان استفاده میکنید، تعداد دادهواحد ذخیرهشده در حافظه نهان درcached_content_token_countخواهد بود.
شمارش دادهواحدهای نوشتار
اگر count_tokens را با ورودی فقط نوشتاری فراخوانی کنید، تعداد دادهواحد نوشتار را
فقط در ورودی (total_tokens) برمیگرداند. میتوانید این فراخوانی را قبلاز
فراخوانی generate_content انجام دهید تا اندازه درخواستهایتان را بررسی کنید.
گزینه دیگر فراخوانی generate_content و سپس استفاده از مشخصه usage_metadata در شیء response برای دریافت موارد زیر است:
- تعداد دادهواحدهای جداگانه ورودی (
prompt_token_count)، محتوای ذخیرهشده (cached_content_token_count)، و برونداد (candidates_token_count) - تعداد دادهواحد برای فرایند تفکر (
thoughts_token_count) تعداد کل دادهواحدهای ورودی و خروجی (
total_token_count)
Python
from google import genai
client = genai.Client()
prompt = "The quick brown fox jumps over the lazy dog."
total_tokens = client.models.count_tokens(
model="gemini-3.8-flash", contents=prompt
)
print("total_tokens: ", total_tokens)
response = client.models.generate_content(
model="gemini-3.8-flash", contents=prompt
)
print(response.usage_metadata)
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "The quick brown fox jumps over the lazy dog.";
async function main() {
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3.8-flash",
contents: prompt,
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: prompt,
});
console.log(generateResponse.usageMetadata);
}
await main();
رفتن
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
// Convert prompt to a slice of *genai.Content using the helper.
contents := []*genai.Content{
genai.NewContentFromText(prompt, genai.RoleUser),
}
countResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
return err
}
fmt.Println("total_tokens:", countResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
```
شمارش دادهواحدهای چندنوبتی (گپ)
اگر با سابقه گپ با count_tokens تماس بگیرید، تعداد کل نشانههای نوشتار هر نقش در گپ (total_tokens) را برمیگرداند.
گزینه دیگر فراخوانی send_message و سپس استفاده از مشخصه usage_metadata در شیء response برای دریافت موارد زیر است:
- تعداد دادهواحدهای جداگانه ورودی (
prompt_token_count)، محتوای ذخیرهشده (cached_content_token_count)، و برونداد (candidates_token_count) - تعداد دادهواحد برای فرایند تفکر (
thoughts_token_count) - تعداد کل دادهواحدها در هم ورودی و هم برونداد
(
total_token_count)
برای درک اینکه نوبت مکالمه بعدی شما چقدر بزرگ خواهد بود، باید آن را هنگام فراخوانی count_tokens به سابقه اضافه کنید.
Python
from google import genai
from google.genai import types
client = genai.Client()
chat = client.chats.create(
model="gemini-3.8-flash",
history=[
types.Content(
role="user", parts=[types.Part(text="Hi my name is Bob")]
),
types.Content(role="model", parts=[types.Part(text="Hi Bob!")]),
],
)
print(
client.models.count_tokens(
model="gemini-3.8-flash", contents=chat.get_history()
)
)
response = chat.send_message(
message="In one sentence, explain how a computer works to a young child."
)
print(response.usage_metadata)
extra = types.UserContent(
parts=[
types.Part(
text="What is the meaning of life?",
)
]
)
history = [*chat.get_history(), extra]
print(client.models.count_tokens(model="gemini-3.8-flash", contents=history))
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
async function main() {
const history = [
{ role: "user", parts: [{ text: "Hi my name is Bob" }] },
{ role: "model", parts: [{ text: "Hi Bob!" }] },
];
const chat = ai.chats.create({
model: "gemini-3.8-flash",
history: history,
});
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3.8-flash",
contents: chat.getHistory(),
});
console.log(countTokensResponse.totalTokens);
const chatResponse = await chat.sendMessage({
message: "In one sentence, explain how a computer works to a young child.",
});
console.log(chatResponse.usageMetadata);
const extraMessage = {
role: "user",
parts: [{ text: "What is the meaning of life?" }],
};
const combinedHistory = [...chat.getHistory(), extraMessage];
const combinedCountTokensResponse = await ai.models.countTokens({
model: "gemini-3.8-flash",
contents: combinedHistory,
});
console.log(
"Combined history token count:",
combinedCountTokensResponse.totalTokens,
);
}
await main();
رفتن
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
history := []*genai.Content{
{Role: genai.RoleUser, Parts: []*genai.Part({Text: "Hi my name is Bob"})},
{Role: genai.RoleModel, Parts: []*genai.Part({Text: "Hi Bob!"})},
}
chat, err := client.Chats.Create(ctx, "gemini-3.8-flash", nil, history)
if err != nil {
log.Fatal(err)
}
firstTokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", chat.History(false), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(firstTokenResp.TotalTokens)
resp, err := chat.SendMessage(ctx, genai.NewPartFromText("In one sentence, explain how a computer works to a young child."))
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", resp.UsageMetadata)
extra := genai.NewContentFromText("What is the meaning of life?", genai.RoleUser)
hist := chat.History(false)
hist = append(hist, extra)
secondTokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", hist, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(secondTokenResp.TotalTokens)
شمارش دادهواحدهای چندحالته
همه ورودیهای «میانای برنامهسازی کاربردی Gemini» نشانهگذاری میشوند، ازجمله نوشتار، فایلهای تصویری، و دیگر روشهای غیرنوشتاری. به نکات کلیدی سطح بالای زیر درباره نشانهگذاری ورودی چندوجهی درطول پردازش توسط Gemini API توجه کنید:
ورودیهای تصویری که هر دو بعد آنها کمتر از ۳۸۴ پیکسل باشد، ۲۵۸ نشانه درنظر گرفته میشوند. تصاویری که در یک یا هر دو بعد بزرگتر هستند، درصورت نیاز برش داده میشوند و به کاشیهای ۷۶۸×۷۶۸ پیکسلی تبدیل میشوند که هرکدام بهعنوان ۲۵۸ نشانه شمارش میشوند.
فایلهای ویدیویی و صوتی با نرخهای ثابت زیر به توکن تبدیل میشوند: ویدیو با نرخ ۲۶۳ توکن در ثانیه و صدا با نرخ ۳۲ توکن در ثانیه. این نرخ برای پردازش ایستا (پیشفرض) اعمال میشود. برای پردازش عاملگرا، مصرف دادهواحد متفاوت است. مصرف توکن ویدیو براساس حالت پردازش را ببینید.
وضوح رسانه
مدلهای Gemini 3 کنترل دقیقی بر پردازش بینایی چندوجهی با پارامتر media_resolution معرفی میکنند. پارامتر
media_resolution
حداکثر تعداد توکنهای اختصاصدادهشده به هر تصویر ورودی یا فریم ویدیو را تعیین میکند.
وضوح بالاتر توانایی مدل را برای خواندن نوشتار ریز یا شناسایی جزئیات کوچک بهبود میبخشد، اما مصرف توکن و تأخیر را افزایش میدهد.
برای جزئیات بیشتر درباره این پارامتر و نحوه تأثیر آن بر محاسبات توکن، راهنمای وضوح رسانه را ببینید.
فایلهای تصویری
اگر count_tokens را با ورودی نوشتار و تصویر فراخوانی کنید، تعداد دادهواحد ترکیبی نوشتار و تصویر را فقط در ورودی (total_tokens) برمیگرداند. میتوانید این فراخوانی را قبلاز فراخوانی generate_content انجام دهید تا اندازه درخواستهایتان را بررسی کنید. همچنین میتوانید بهصورت اختیاری count_tokens را بهطور جداگانه روی نوشتار و فایل
فراخوانی کنید.
گزینه دیگر، فراخوانی generate_content و سپس استفاده از مشخصه usage_metadata در شیء response برای دریافت موارد زیر است:
- تعداد دادهواحدهای جداگانه ورودی (
prompt_token_count)، محتوای ذخیرهشده (cached_content_token_count)، و برونداد (candidates_token_count) - تعداد دادهواحد برای فرایند تفکر (
thoughts_token_count) - تعداد کل دادهواحدهای ورودی و خروجی
(
total_token_count)
مثالی که از تصویر بارگذاریشده از «میانای برنامهسازی کاربردی فایل» استفاده میکند:
Python
from google import genai
client = genai.Client()
prompt = "Tell me about this image"
your_image_file = client.files.upload(file=media / "organ.jpg")
print(
client.models.count_tokens(
model="gemini-3.8-flash", contents=[prompt, your_image_file]
)
)
response = client.models.generate_content(
model="gemini-3.8-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "Tell me about this image";
async function main() {
const organ = await ai.files.upload({
file: path.join(media, "organ.jpg"),
config: { mimeType: "image/jpeg" },
});
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3.8-flash",
contents: createUserContent([
prompt,
createPartFromUri(organ.uri, organ.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: createUserContent([
prompt,
createPartFromUri(organ.uri, organ.mimeType),
]),
});
console.log(generateResponse.usageMetadata);
}
await main();
رفتن
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
file, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "organ.jpg"),
&genai.UploadFileConfig{
MIMEType : "image/jpeg",
},
)
if err != nil {
log.Fatal(err)
}
parts := []*genai.Part{
genai.NewPartFromText("Tell me about this image"),
genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
tokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Multimodal image token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
نمونهای که تصویر را بهعنوان داده درونخطی ارائه میدهد:
Python
from google import genai
import PIL.Image
client = genai.Client()
prompt = "Tell me about this image"
your_image_file = PIL.Image.open(media / "organ.jpg")
print(
client.models.count_tokens(
model="gemini-3.8-flash", contents=[prompt, your_image_file]
)
)
response = client.models.generate_content(
model="gemini-3.8-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "Tell me about this image";
const imageBuffer = fs.readFileSync(path.join(media, "organ.jpg"));
const imageBase64 = imageBuffer.toString("base64");
const contents = createUserContent([
prompt,
createPartFromBase64(imageBase64, "image/jpeg"),
]);
async function main() {
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3.8-flash",
contents: contents,
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: contents,
});
console.log(generateResponse.usageMetadata);
}
await main();
رفتن
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
imageBytes, err := os.ReadFile("organ.jpg")
if err != nil {
log.Fatalf("Failed to read image file: %v", err)
}
parts := []*genai.Part{
genai.NewPartFromText("Tell me about this image"),
{
InlineData: &genai.Blob{
MIMEType: "image/jpeg",
Data: imageBytes,
},
},
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
tokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Multimodal image token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
فایلهای ویدیویی یا صوتی
صدا و ویدیو هرکدام با نرخهای ثابت زیر به توکن تبدیل میشوند:
- ویدیو: ۲۶۳ دادهواحد در ثانیه
- صوت: ۳۲ دادهواحد در ثانیه
اگر با ورودی نوشتار و ویدیو/صدا با count_tokens تماس بگیرید، تعداد نشانههای ترکیبشده نوشتار و فایل ویدیو/صدا را فقط در ورودی برمیگرداند
(total_tokens). میتوانید قبلاز تماس با generate_content این تماس را برقرار کنید تا
اندازه درخواستهایتان را بررسی کنید. همچنین میتوانید بهطور اختیاری count_tokens را بهطور جداگانه روی نوشتار و فایل فراخوانی کنید.
گزینه دیگر فراخوانی generate_content و سپس استفاده از مشخصه usage_metadata در شیء response برای دریافت موارد زیر است:
- تعداد دادهواحدهای جداگانه ورودی (
prompt_token_count)، محتوای ذخیرهشده (cached_content_token_count)، و برونداد (candidates_token_count) - تعداد دادهواحد برای فرایند تفکر (
thoughts_token_count) تعداد کل دادهواحدهای ورودی و خروجی (
total_token_count).
Python
from google import genai
import time
client = genai.Client()
prompt = "Tell me about this video"
your_file = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
while not your_file.state or your_file.state.name != "ACTIVE":
print("Processing video...")
print("File state:", your_file.state)
time.sleep(5)
your_file = client.files.get(name=your_file.name)
print(
client.models.count_tokens(
model="gemini-3.8-flash", contents=[prompt, your_file]
)
)
response = client.models.generate_content(
model="gemini-3.8-flash", contents=[prompt, your_file]
)
print(response.usage_metadata)
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
const prompt = "Tell me about this video";
async function main() {
let videoFile = await ai.files.upload({
file: path.join(media, "Big_Buck_Bunny.mp4"),
config: { mimeType: "video/mp4" },
});
while (!videoFile.state || videoFile.state.toString() !== "ACTIVE") {
console.log("Processing video...");
console.log("File state: ", videoFile.state);
await sleep(5000);
videoFile = await ai.files.get({ name: videoFile.name });
}
const countTokensResponse = await ai.models.countTokens({
model: "gemini-3.8-flash",
contents: createUserContent([
prompt,
createPartFromUri(videoFile.uri, videoFile.mimeType),
]),
});
console.log(countTokensResponse.totalTokens);
const generateResponse = await ai.models.generateContent({
model: "gemini-3.8-flash",
contents: createUserContent([
prompt,
createPartFromUri(videoFile.uri, videoFile.mimeType),
]),
});
console.log(generateResponse.usageMetadata);
}
await main();
رفتن
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
file, err := client.Files.UploadFromPath(
ctx,
filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"),
&genai.UploadFileConfig{
MIMEType : "video/mp4",
},
)
if err != nil {
log.Fatal(err)
}
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
fmt.Println("Processing video...")
fmt.Println("File state:", file.State)
time.Sleep(5 * time.Second)
file, err = client.Files.Get(ctx, file.Name, nil)
if err != nil {
log.Fatal(err)
}
}
parts := []*genai.Part{
genai.NewPartFromText("Tell me about this video"),
genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
genai.NewContentFromParts(parts, genai.RoleUser),
}
tokenResp, err := client.Models.CountTokens(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Multimodal video/audio token count:", tokenResp.TotalTokens)
response, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", contents, nil)
if err != nil {
log.Fatal(err)
}
usageMetadata, err := json.MarshalIndent(response.UsageMetadata, "", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(usageMetadata))
استفاده از توکن ویدیو براساس حالت پردازش
استفاده از نشانه برای ویدیو به حالت پردازش بستگی دارد:
| حالت پردازش | محاسبه دادهواحد | استفاده معمول |
|---|---|---|
| ثابت (پیشفرض) | بهطور پیشفرض حدود ۱۰۰ واحد/ثانیه (وضوح پایین) یا حدود ۳۰۰ واحد/ثانیه (وضوح بالا). همه فریمها با نرخ ۱ فریم در ثانیه نمونهبرداری شدهاند. | قابل پیشبینی، متناسب با مدتزمان ویدیو. |
| عاملی | بسته به پیچیدگی محتوا متفاوت است. مدل فقط ترانویسی و/یا قابها و/یا صدای موردنیاز برای پاسخ دادن به پیامواره را بار میکند. | تا ۸۸٪ کمتر برای محتوای بلند. |
با پردازش عاملمحور، یک سخنرانی ۱ ساعته که در حالت ایستا از حدود ۱٫۰۸ میلیون کد استفاده میکند، ممکن است بسته به پیامواره و محتوا از حدود ۱۰۸ هزار کد استفاده کند.
برای بررسی استفاده واقعی از نشان برای یک درخواست، از فیلد usage_metadata در پاسخ استفاده کنید. در UsageMetadata، ژتونهای ویدیو عاملگرا در فیلدهای زیر گزارش میشوند:
- پیامواره اولیه (مرجع ویدیو + پیامواره کاربر):
prompt_token_count - درحال فکر کردن درباره پیمایش:
thoughts_token_count - ترانویسی، قابها، و صدا درصورت درخواست بار میشود:
tool_use_prompt_token_count - پاسخ نهایی:
candidates_token_count
تعداد دادهواحدهای اندیشه
وقتی «اندیشیدن» را روشن میکنید، قیمت پاسخ مجموع دادهواحدهای برونداد و دادهواحدهای اندیشیدن است. میتوانید تعداد کل دادهواحدهای اندیشیدن تولیدشده را از فیلد thoughtsTokenCount (یا معادل کیت توسعه نرمافزار) بازیابی کنید.
Python
# ...
print("Thoughts tokens:", response.usage_metadata.thoughts_token_count)
print("Output tokens:", response.usage_metadata.candidates_token_count)
JavaScript
// ...
console.log(`Thoughts tokens: ${response.usageMetadata.thoughtsTokenCount}`);
console.log(`Output tokens: ${response.usageMetadata.candidatesTokenCount}`);
رفتن
// ...
fmt.Println("Thoughts tokens:", response.UsageMetadata.ThoughtsTokenCount)
fmt.Println("Output tokens:", response.UsageMetadata.CandidatesTokenCount)
مدلهای اندیشگر برای بهبود کیفیت پاسخ نهایی، فکرهای کامل تولید میکنند و سپس خلاصههایی را برای ارائه اطلاعات آماری درباره فرایند فکر کردن برونداد میکنند. بنابراین، قیمتگذاری میانای برنامهسازی کاربردی براساس کل توکنهای فکری است که مدل برای ایجاد خلاصه تولید میکند، حتی اگر میانای برنامهسازی کاربردی فقط خلاصه را برونداد کند.
در راهنمای تفکر Gemini میتوانید درباره نحوه پیکربندی تفکر بیشتر بدانید.
پنجرههای بافت
مدلهای دردسترس ازطریق Gemini API دارای پنجرههای زمینهای هستند که
با دادهواحد (توکن) اندازهگیری میشوند. پنجره زمینهای مشخص میکند که چقدر ورودی میتوانید ارائه دهید
و مدل چقدر خروجی میتواند تولید کند. میتوانید اندازه پنجره بافت را با فراخوانی نقطه پایانی models.get یا با نگاه کردن به اسناد مدلها تعیین کنید.
- مدلهای Gemini 4 (
gemini-4-argon): یک پنجره زمینهای ۱ میلیون دادهواحدی (1,048,576دادهواحد) را بین دادهواحدهای ورودی، تفکر، و خروجی همرسانی میکنند. درخواستهای تکی برای جاریسازی (streamGenerateContent) به65,536دادهواحد برونداد و برای غیرجاریسازی (generateContent) به32,768دادهواحد برونداد محدود میشود، یا میتوانید بااستفاده از رمزگشایی طولانی تا1,048,576دادهواحد تولید کنید. اگر دادهواحدهای ورودی شما بهعلاوهmax_output_tokensاز ۱٬۰۴۸٬۵۷۶ دادهواحد بیشتر شود، API بهطور خودکار حد برونداد را به فضای باقیمانده در پنجره بافت (1,048,576منهای دادهواحدهای ورودی شما) محدود میکند. مدلهای Gemini 3 و 2.5: از بودجههای ورودی (
1,048,576واحد) و برونداد (65,536واحد) جداگانه استفاده کنید.
Python
from google import genai
client = genai.Client()
model_info = client.models.get(model="gemini-3.8-flash")
print(f"{model_info.input_token_limit=}")
print(f"{model_info.output_token_limit=}")
JavaScript
import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({});
async function main() {
const modelInfo = await ai.models.get({model: 'gemini-3.8-flash'});
console.log(modelInfo.inputTokenLimit);
console.log(modelInfo.outputTokenLimit);
}
await main();
رفتن
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
modelInfo, err := client.ModelInfo(ctx, "models/gemini-3.8-flash")
if err != nil {
log.Fatal(err)
}
fmt.Println("input token limit:", modelInfo.InputTokenLimit)
fmt.Println("output token limit:", modelInfo.OutputTokenLimit)
امتحان کردن دفترچه Colab
مشاهده دفترچه در GitHub