Gemini — нативный формат generateContent

Модели Gemini доступны и в OpenAI-совместимом режиме, и в нативном формате Google (/v1beta … :generateContent). Нативный формат открывает то, чего нет в OpenAI-режиме: точный контроль мышления, нативную мультимодальность (изображение/аудио/видео в одном запросе), выполнение кода и детальные поля расхода токенов.

Внимание к base_url Нативный формат использует базу https://megaapi.ru (без /v1), в отличие от OpenAI-совместимого https://megaapi.ru/v1. Ключ — ваш sk-nexus-... (в заголовке x-goog-api-key или query-параметром ?key=).

Когда нужен нативный формат

Если нужен простой текстовый диалог или общий код под несколько провайдеров — берите OpenAI-совместимый режим.

Модели

МодельНазначение
gemini-3.5-flashОсновная рабочая модель, контекст до 1M
gemini-3.1-pro-previewФлагман Pro, самые сложные задачи
gemini-3-flash-previewЛёгкая и быстрая
gemini-3.1-flash-liteСверхдешёвая, высокая нагрузка

У части моделей есть суффиксы -thinking / -nothinking (напр. gemini-3-flash-preview-nothinking) — фиксируют режим мышления без правки тела запроса. Полный список и цены — в каталоге.

Быстрый старт

Рекомендуется официальный единый SDK google-genai:

# pip install google-genai
from google import genai

client = genai.Client(
    api_key="sk-nexus-...",
    http_options={"base_url": "https://megaapi.ru"},
)
response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Представься одной фразой.",
)
print(response.text)
curl "https://megaapi.ru/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: sk-nexus-..." \
  -d '{
    "contents": [{ "parts": [{ "text": "Представься одной фразой." }] }]
  }'

Контроль мышления

Gemini 3 управляет глубиной через thinking_level, серия 2.5 — через thinking_budget (число токенов; 0 отключает мышление). Токены мышления тарифицируются по цене вывода — выше уровень, дороже счёт.

from google.genai import types

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Реши задачу по шагам.",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="high", include_thoughts=True),
    ),
)
УровеньКогда
minimalНизкая задержка, простые задачи (классификация, извлечение)
lowОбычный диалог
highСложное рассуждение и код

Function Calling

Цикл тот же, что у OpenAI, но формат полей полностью другой — смешивать нельзя:

Gemini (нативный)OpenAI
Определениеtools: [{"function_declarations": [...]}]tools: [{"type": "function", ...}]
Вызовfunction_call в part (args — объект)tool_calls (arguments — JSON-строка)
Возврат результатаPart(function_response=...)сообщение role:"tool"
Стратегияtool_config…mode: AUTO/ANY/NONEtool_choice: auto/required/none
Важно: function_call.args у Gemini — структурированный объект, а не JSON-строка; json.loads не нужен. А для Gemini 3 при многоходовом FC возвращайте thought signature вместе с историей.
tools = [{
  "function_declarations": [{
    "name": "get_weather",
    "description": "Текущая погода в городе",
    "parameters": {
      "type": "object",
      "properties": {"city": {"type": "string"}},
      "required": ["city"]
    }
  }]
}]

Неявное кэширование

Канал Gemini автоматически включает неявное кэширование: когда префикс запроса совпадает с недавним и достаточно длинный, попавшая часть тарифицируется со скидкой (до −90%), поле cached_content_token_count возвращается как есть — без правок кода и без меток.

«Есть, но не рассчитывайте» Неявное кэширование — best-effort: попадание не гарантируется, в отличие от детерминированного кэша Claude/OpenAI. Минимальный префикс выше: 4096 токенов (серия 3/3.1/3.5), 2048 (серия 2.5) — короткий системный промпт на Gemini почти не попадает. Бюджет считайте по цене без кэша. Явный cachedContents (серверный ресурс с TTL) на этом канале не поддерживается — используйте неявное.

Попадание видно в usage_metadata.cached_content_token_count (REST: usageMetadata.cachedContentTokenCount) — значение > 0 означает попадание. Для кэш-зависимых высокочастотных сценариев (агенты, RAG, пакетная обработка) выбирайте Claude или OpenAI.

Нативный формат поддерживает официальный поиск Google: инструмент google_search в generateContent — модель реально ходит в интернет и возвращает ответ с источниками.

curl "https://megaapi.ru/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: sk-nexus-..." \
  -d '{
    "contents": [{"parts": [{"text": "Главные новости ИИ за неделю? Дай 3 пункта с источниками."}]}],
    "tools": [{"google_search": {}}]
  }'
Поиск — только в нативном формате В OpenAI-совместимом режиме (/v1/chat/completions) поиск не выполняется — объявление инструмента молча игнорируется (статус 200, ответ по обучающим данным). Признак реального поиска — поле candidates[0].groundingMetadata в ответе (массив webSearchQueries, источники в groundingChunks). Нет этих полей — поиска не было.

Открыть Gemini в Студии → Function Calling Все модели Gemini