Gemini и другие модели генеративного ИИ обрабатывают входные и выходные данные с уровнем детализации, называемым токеном .
Для моделей Gemini один токен эквивалентен примерно 4 символам. 100 токенов равны примерно 60-80 английским словам.
О токенах
Токены могут представлять собой отдельные символы, например, z или целые слова, например, cat . Длинные слова разбиваются на несколько токенов. Множество всех токенов, используемых моделью, называется словарем, а процесс разделения текста на токены называется токенизацией .
При включенной плате за использование API Gemini стоимость вызова определяется, в частности, количеством входных и выходных токенов, поэтому знание того, как подсчитывать токены, может быть полезным.
Попробуйте подсчитать количество токенов в Colab.
Вы можете попробовать подсчитать количество токенов, используя Colab.
| | Попробуйте блокнот Colab. | Посмотреть блокнот на GitHub |
Контекстные окна
Модели, доступные через API Gemini, имеют контекстные окна, размер которых измеряется в токенах. Контекстное окно определяет, какой объем входных данных вы можете предоставить и какой объем выходных данных может сгенерировать модель. Размер контекстного окна можно определить, вызвав конечную точку getModels или обратившись к документации моделей .
В следующем примере видно, что модель gemini-2.0-flash имеет ограничение на ввод примерно в 1 000 000 токенов и ограничение на вывод примерно в 8 000 токенов, что означает, что контекстное окно составляет 1 000 000 токенов.
from google import genai
client = genai.Client()
model_info = client.models.get(model="gemini-2.0-flash")
print(f"{model_info.input_token_limit=}")
print(f"{model_info.output_token_limit=}")
# ( e.g., input_token_limit=30720, output_token_limit=2048 )
Подсчет токенов
Все входные и выходные данные API Gemini, включая текст, файлы изображений и другие нетекстовые форматы, токенизируются.
Подсчет токенов можно производить следующими способами:
Подсчет текстовых токенов
from google import genai
client = genai.Client()
prompt = "The quick brown fox jumps over the lazy dog."
# Count tokens using the new client method.
total_tokens = client.models.count_tokens(
model="gemini-2.0-flash", contents=prompt
)
print("total_tokens: ", total_tokens)
# ( e.g., total_tokens: 10 )
response = client.models.generate_content(
model="gemini-2.0-flash", contents=prompt
)
# The usage_metadata provides detailed token counts.
print(response.usage_metadata)
# ( e.g., prompt_token_count: 11, candidates_token_count: 73, total_token_count: 84 )
Подсчет токенов для многоходовых (чат) операций
from google import genai
from google.genai import types
client = genai.Client()
chat = client.chats.create(
model="gemini-2.0-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!")]),
],
)
# Count tokens for the chat history.
print(
client.models.count_tokens(
model="gemini-2.0-flash", contents=chat.get_history()
)
)
# ( e.g., total_tokens: 10 )
response = chat.send_message(
message="In one sentence, explain how a computer works to a young child."
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 25, candidates_token_count: 21, total_token_count: 46 )
# You can count tokens for the combined history and a new message.
extra = types.UserContent(
parts=[
types.Part(
text="What is the meaning of life?",
)
]
)
history = chat.get_history()
history.append(extra)
print(client.models.count_tokens(model="gemini-2.0-flash", contents=history))
# ( e.g., total_tokens: 56 )
Подсчет мультимодальных токенов
Все входные данные в API Gemini токенизируются, включая текст, файлы изображений и другие нетекстовые форматы. Обратите внимание на следующие основные моменты, касающиеся токенизации мультимодальных входных данных в процессе обработки API Gemini:
В Gemini 2.0 изображения, у которых оба измерения <=384 пикселей, учитываются как 258 токенов. Изображения большего размера в одном или обоих измерениях обрезаются и масштабируются по мере необходимости в фрагменты размером 768x768 пикселей, каждый из которых учитывается как 258 токенов. До Gemini 2.0 изображения использовали фиксированное количество токенов — 258.
Видео- и аудиофайлы преобразуются в токены со следующей фиксированной скоростью: видео — 263 токена в секунду, аудио — 32 токена в секунду.
Резолюции СМИ
В Gemini 3 Pro Preview реализовано детальное управление обработкой мультимодального зрения с помощью параметра media_resolution . Параметр media_resolution определяет максимальное количество токенов, выделяемых на каждое входное изображение или видеокадр. Более высокое разрешение улучшает способность модели считывать мелкий текст или идентифицировать мелкие детали, но увеличивает использование токенов и задержку.
Для получения более подробной информации о параметре и о том, как он может влиять на вычисления токенов, см. руководство по разрешению медиаконтента .
Файлы изображений
Пример использования загруженного изображения через File API:
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-2.0-flash", contents=[prompt, your_image_file]
)
)
# ( e.g., total_tokens: 263 )
response = client.models.generate_content(
model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 264, candidates_token_count: 80, total_token_count: 345 )
Пример, предоставляющий изображение в виде встроенных данных:
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")
# Count tokens for combined text and inline image.
print(
client.models.count_tokens(
model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
)
# ( e.g., total_tokens: 263 )
response = client.models.generate_content(
model="gemini-2.0-flash", contents=[prompt, your_image_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 264, candidates_token_count: 80, total_token_count: 345 )
Видео- или аудиофайлы
Аудио- и видеоматериалы конвертируются в токены по следующим фиксированным курсам:
- Видео: 263 токена в секунду
- Аудио: 32 токена в секунду
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")
# Poll until the video file is completely processed (state becomes ACTIVE).
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-2.0-flash", contents=[prompt, your_file]
)
)
# ( e.g., total_tokens: 300 )
response = client.models.generate_content(
model="gemini-2.0-flash", contents=[prompt, your_file]
)
print(response.usage_metadata)
# ( e.g., prompt_token_count: 301, candidates_token_count: 60, total_token_count: 361 )
Системные инструкции и инструменты
Системные инструкции и инструменты также учитываются в общем количестве токенов для ввода.
If you use system instructions, the total_tokens count increases to reflect the addition of system_instruction .
If you use function calling, the total_tokens count increases to reflect the addition of tools .
Попробуйте блокнот Colab.
Посмотреть блокнот на GitHub