درک و شمارش نشان‌ها

‫Gemini و دیگر مدل‌های هوش مصنوعی زایا ورودی و خروجی را در سطح جزئیاتی به نام واحد پردازش می‌کنند.

برای مدل‌های Gemini، یک نشان معادل حدود ۴ نویسه است. ‫۱۰۰ نشانه تقریباً برابر با ۶۰ تا ۸۰ کلمه انگلیسی است.

درباره داده‌واحدها

نشان‌ها می‌توانند نویسه‌های تکی مانند z یا کلمات کامل مانند cat باشند. کلمات طولانی به چند کد تقسیم می‌شوند. مجموعه همه نشان‌هایی که مدل استفاده می‌کند واژگان نامیده می‌شود و فرایند تقسیم نوشتار به نشان‌ها نشان‌سازی نامیده می‌شود.

وقتی صورت‌حساب فعال باشد، هزینه فراخوانی Gemini API تاحدودی براساس تعداد کدهای ورودی و خروجی تعیین می‌شود، بنابراین دانستن نحوه شمارش کدها می‌تواند مفید باشد.

می‌توانید شمارش نشانه‌ها را در Colab ما امتحان کنید.

مشاهده در ai.google.dev امتحان کردن دفترچه 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)