Gemini — нативный формат generateContent
Модели Gemini доступны и в OpenAI-совместимом режиме, и в нативном формате Google
(/v1beta … :generateContent). Нативный формат открывает то, чего нет в
OpenAI-режиме: точный контроль мышления, нативную мультимодальность (изображение/аудио/видео
в одном запросе), выполнение кода и детальные поля расхода токенов.
https://megaapi.ru (без /v1),
в отличие от OpenAI-совместимого https://megaapi.ru/v1. Ключ — ваш sk-nexus-...
(в заголовке x-goog-api-key или query-параметром ?key=).
Когда нужен нативный формат
- Полный контроль мышления:
thinking_level(Gemini 3) /thinking_budget(2.5), резюме мыслей, thought signatures. - Нативная мультимодальность: изображения/аудио/видео внутри
parts, управление стоимостью черезmedia_resolution— см. Vision. - Выполнение кода: инструмент
code_execution— Python в песочнице. - Детальный расход:
thoughts_token_count,cached_content_token_count.
Если нужен простой текстовый диалог или общий код под несколько провайдеров — берите 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 | Сложное рассуждение и код |
- Резюме мыслей:
include_thoughts=Trueвернёт part'ы сthought=True. - Thought signatures: у Gemini 3 — зашифрованное состояние рассуждения. В многоходовых сценариях (особенно с function calling) поле
thought_signatureиз ответа нужно возвращать как есть, иначе цепочка рассуждения прервётся. Официальный SDK делает это автоматически; в «ручном» REST не теряйте поле.
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/NONE | tool_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 возвращается как есть — без правок кода и без меток.
cachedContents (серверный ресурс с TTL) на этом канале не поддерживается — используйте неявное.
Попадание видно в usage_metadata.cached_content_token_count (REST:
usageMetadata.cachedContentTokenCount) — значение > 0 означает попадание.
Для кэш-зависимых высокочастотных сценариев (агенты, RAG, пакетная обработка) выбирайте Claude или OpenAI.
Веб-поиск (Grounding with Google Search)
Нативный формат поддерживает официальный поиск 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": {}}]
}'
/v1/chat/completions) поиск не выполняется —
объявление инструмента молча игнорируется (статус 200, ответ по обучающим данным).
Признак реального поиска — поле candidates[0].groundingMetadata в ответе
(массив webSearchQueries, источники в groundingChunks). Нет этих полей — поиска не было.
Открыть Gemini в Студии → Function Calling Все модели Gemini