Две модели одного семейства, один и тот же агентный сценарий, и совершенно разные счета. Именно так выглядит выход Gemini 4 Carbon и Gemini 4 Hydrogen в общий доступ, если смотреть на него глазами разработчика, который гоняет по API длинные циклы с инструментами. Carbon думает глубже и стоит дороже, Hydrogen быстрее и дешевле и получил четвёртый уровень размышлений xhigh. Вводная цена Carbon действует до 30 ноября, потом удваивается, так что сравнивать модели нужно сейчас и на собственных данных.

Ниже разобрано, что именно вышло, как устроены цены и уровни размышлений и как собрать скрипт на google-genai для сравнения по латентности и стоимости.

Что Google выпустил в общий доступ десятого и двенадцатого ноября и чем Carbon отличается от Hydrogen по назначению

Carbon впервые появился двадцать восьмого октября, но тогда его получили только специалисты по киберзащите. Общим доступом он стал десятого ноября: модель gemini-4-carbon доступна платным разработчикам в Google AI Studio и в Gemini для бизнеса, а подписчикам AI Ultra она открыта в Antigravity, приложении Gemini и режиме AI Mode в поиске. На бесплатном уровне API Carbon нет.

Hydrogen (gemini-4-hydrogen) вышел в GA двенадцатого ноября и стал единственной моделью семейства на бесплатном уровне с ограничением по частоте запросов. Здесь есть оговорка: Google называет его краткосрочным GA-релизом с минимальным сроком уведомления об отключении в 45 дней. Идентификатор модели в коде лучше держать в настройках.

Параметры у моделей общие. Окно контекста равно 1 048 576 токенов и делится между входом, размышлениями и ответом. Принимаются текст, изображения, аудио, видео и PDF. Максимум на один синхронный ответ составляет 65 536 токенов в потоковом режиме, а у Carbon без потока только 32 768. Неявное кэширование включается от 4 096 токенов.

Назначение Google описывает так. Carbon создан для задач, которые упираются в предел интеллекта модели: поиск первопричины сложной ошибки, архитектурные решения, плотный мультимодальный синтез, аудит безопасности. В агентном программировании компания называет миграции между пакетами и циклы "собрать и проверить" для веб-приложений. Hydrogen нацелен на массовую работу: циклы инструментов, интерактивная правка кода, интерфейсы. Совет самого Google для длинных задач звучит просто: планирует Carbon, исполняет Hydrogen.

В Antigravity Hydrogen доступен платным подписчикам Google AI Pro и Ultra, а режим Orchestrator, переключающийся между Carbon и Hydrogen, поначалу открыт только Ultra. По заявлению Google, он даёт почти такой же успех задач, как Carbon, при расходе квоты ниже на 24 процента. Это цифры вендора, и перепроверять их придётся самостоятельно.

Сколько стоят обе модели и что произойдёт с ценой Carbon после тридцатого ноября

Цены даны в долларах за миллион токенов, порядок такой: вход, кэшированный вход, выход. Размышления тарифицируются как выходные токены.

Carbon на стандартном тарифе до 30 ноября 2026 года стоит $2, $0,10 и $10. С 1 декабря он станет $4, $0,20 и $20, то есть вырастет ровно вдвое. Пакетный и гибкий режимы Carbon, по сторонним обзорам, стоят вдвое дешевле стандарта: $1 и $5 сейчас, $2 и $10 после первого декабря. Google на основной странице цен отдельных тарифов для них пока не публиковала, так что цифры стоит сверить. Hydrogen стоит $1,50, $0,075 и $7,50, причём цена одинакова по всему окну в миллион токенов и никаких изменений для неё не объявлено. Его пакетный режим стоит $0,75 и $3,75.

Из этой таблицы вырастает главный практический вывод: после 1 декабря разрыв между моделями по цене токена увеличится с 1,33 раза до 2,67 раза. Чтобы не считать вручную, стоит завести функцию, которая знает про дату смены тарифа:

from datetime import date

PRICES = {  # доллары за 1M токенов: вход, кэшированный вход, выход
    "gemini-4-hydrogen": (1.50, 0.075, 7.50),
    "gemini-4-carbon": (2.00, 0.10, 10.00),
}
CARBON_FROM_DEC_1 = (4.00, 0.20, 20.00)

def price_for(model, today):
    if model == "gemini-4-carbon" and today >= date(2026, 12, 1):
        return CARBON_FROM_DEC_1
    return PRICES[model]

def cost_usd(model, prompt, cached, output, thoughts, today):
    inp, cache, out = price_for(model, today)
    return ((prompt - cached) * inp + cached * cache
            + (output + thoughts) * out) / 1_000_000

Пример на одном шаге агентного цикла: в запросе 60 000 токенов, из них 40 000 пришли из кэша, модель выдала 3 000 токенов ответа и потратила 12 000 на размышления. Для Hydrogen получается 20 000 по $1,50, 40 000 по $0,075 и 15 000 по $7,50, то есть $0,03 плюс $0,003 плюс $0,1125, итого около $0,1455. Для Carbon по вводной цене выходит $0,04 плюс $0,004 плюс $0,15, то есть $0,194. С первого декабря тот же шаг на Carbon обойдётся в $0,388, а это в 2,67 раза дороже, чем на Hydrogen. Если цикл состоит из сотен шагов, разница в месячном счёте перестаёт быть мелочью.

Есть ещё одна дата. Первого января 2027 года модель Gemini 3.8 Flash, сейчас продающаяся по акционным $0,75 и $3,75, поднимется до $1,50 и $7,50, то есть сравняется с Hydrogen.

Как работают уровни размышлений и что даёт новый xhigh у Hydrogen

У Hydrogen теперь четыре уровня: low, medium, high и xhigh, а по умолчанию стоит high. У Carbon уровней три: low, medium и high, по умолчанию medium. Уровень xhigh есть только у Hydrogen. Параметр называется thinking_level, а прежние способы управления не работают: thinking_budget и значение MINIMAL возвращают ошибку 400. Для Python требуется google-genai версии не ниже 2.34.0.

Независимый индекс интеллекта показывает, что именно покупает каждый уровень. Для Hydrogen: low даёт 27 баллов за $0,29 и 1,3 минуты на задачу, medium 41 балл за $0,80 и 3,7 минуты, high 51 балл за $1,87 и 8,3 минуты, xhigh 54 балла за $3,16 и около 13,5 минуты. Для Carbon: low набирает 54 балла за $5,22, medium 58 баллов за $4,68, high 60 баллов за $5,48 и 28,1 минуты. Стоимость задачи в этой таблице посчитана по стандартным ценам на момент снимка, и если снимок сделан до подорожания, после первого декабря цифры Carbon нужно умножать на два.

Если разделить цену на баллы, картина проясняется. Hydrogen low стоит около $0,011 за балл, medium около $0,020, high около $0,037, xhigh около $0,059. Carbon high обходится примерно в $0,091 за балл. Переход с high на xhigh у Hydrogen добавляет три балла и поднимает цену на 69 процентов, а время на 63 процента. По данным стороннего обзора, xhigh при этом выдаёт около 304 миллионов выходных токенов на весь индекс против примерно 110 миллионов у high, то есть почти втрое больше.

Любопытнее всего сравнение Hydrogen xhigh и Carbon low. Оба дают по 54 балла, но Hydrogen xhigh стоит $3,16 против $5,22 и занимает 13,5 минуты против 24,7. А вот время до первого токена ответа у Hydrogen xhigh составляет 37,77 секунды, у Carbon low только 13,61. Выходит, что дешевле и быстрее в целом не значит отзывчивее в начале: для интерактивного интерфейса это важная разница, а для фонового агента совсем неважная.

Какой скрипт честно сравнит Carbon и Hydrogen на одном агентном сценарии с замером задержки и стоимости

Честное сравнение держится на пяти правилах, и скрипт ниже построен вокруг них:

  1. один и тот же запрос и один и тот же автоматический критерий успеха для всех моделей;
  2. несколько повторов на каждую пару модель и уровень, потому что один прогон случаен;
  3. замер времени до первого токена ответа и общего времени, а токены берутся из метаданных ответа;
  4. стоимость считается по своей таблице цен с датой, а не по ощущениям;
  5. итоговая метрика это стоимость на один успешный результат, а не на запуск.

Последнее правило важнее остальных. Модель, которая стоит вдвое дешевле, но проходит тесты в половине случаев, на деле стоит столько же, сколько дорогая и надёжная. Названия полей метаданных взяты из google-genai, но в версии 2.x их стоит сверить с документацией, а значения уровней, судя по примерам, пишутся заглавными буквами:

import re, statistics, subprocess, sys, tempfile, time
from datetime import date
from google import genai
from google.genai import types

client = genai.Client()  # ключ берётся из GEMINI_API_KEY
PROMPT = open("task.txt", encoding="utf-8").read()
TESTS = open("tests.py", encoding="utf-8").read()

def check(answer):
    m = re.search(r"```python\n(.*?)```", answer, re.S)
    if not m:
        return False
    with tempfile.NamedTemporaryFile("w", suffix=".py", delete=False) as f:
        f.write(m.group(1) + "\n" + TESTS)
    r = subprocess.run([sys.executable, f.name], capture_output=True, timeout=60)
    return r.returncode == 0

def run_once(model, level):
    cfg = types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level=level),
        max_output_tokens=65_536,
    )
    t0, first, parts, usage = time.perf_counter(), None, [], None
    for chunk in client.models.generate_content_stream(
            model=model, contents=PROMPT, config=cfg):
        if chunk.text:
            first = first or time.perf_counter() - t0
            parts.append(chunk.text)
        usage = chunk.usage_metadata or usage
    total = time.perf_counter() - t0
    cost = cost_usd(model, usage.prompt_token_count or 0,
                    usage.cached_content_token_count or 0,
                    usage.candidates_token_count or 0,
                    usage.thoughts_token_count or 0, date.today())
    return first, total, cost, check("".join(parts))

CASES = [("gemini-4-carbon", "MEDIUM"), ("gemini-4-carbon", "HIGH"),
         ("gemini-4-hydrogen", "HIGH"), ("gemini-4-hydrogen", "XHIGH")]
N = 5
for model, level in CASES:
    runs = [run_once(model, level) for _ in range(N)]
    ok = sum(r[3] for r in runs)
    spent = sum(r[2] for r in runs)
    print(model, level,
          f"первый токен {statistics.median(r[0] or 0 for r in runs):.1f} с,",
          f"всего {statistics.median(r[1] for r in runs):.1f} с,",
          f"успех {ok}/{N},",
          f"за успех ${spent / ok:.3f}" if ok else "успехов нет")

Скрипт предполагает, что функция cost_usd из предыдущего раздела лежит в том же модуле. Код, который написала модель, выполняется в подпроцессе, поэтому запускать проверку нужно в песочнице или контейнере, а не на рабочей машине. Для агентного цикла с инструментами run_once заменяют циклом, который складывает метаданные по всем шагам, а успех проверяют по итоговому состоянию, например по тестам в репозитории.

Как читать результаты замера и почему места в чужих рейтингах нельзя переносить на свой сценарий

Рейтинги полезны как карта местности, но не как маршрут. Один из трекеров, снятый ещё 28 октября, ставит Carbon на второе место из 162 моделей с 84,0 балла в категории программирования, а общий балл Hydrogen там 79,1. Другие агрегаторы приводят иные цифры, и при переносе чисел между карточками легко смешать разные модели и разные индексы. У таблиц разные шкалы, наборы моделей и даты, поэтому числа из разных источников сравнивать нельзя.

С заявлениями вендора история та же. Google сообщает, что Carbon занимает первое место на CursorBench 4.0, в WANDR от Perplexity и в AutomationBench от Zapier при стоимости задачи более чем вдвое ниже, чем у следующей внешней модели, а на агентном мультимодальном тесте он второй. Для Hydrogen в карточке модели указан результат 57,0 процента на Terminal-Bench 4.1 против 18,2 процента у Gemini 3.8 Flash. Независимое измерение на Terminal-Bench 4.0 даёт Hydrogen 54 процента, а Claude Sonnet 5.5 64 процента, и сама карточка Google признаёт, что строки разных таблиц напрямую сравнивать нельзя. Из этого следует разумное правило: пока на вашем коде не проведён замер, любое место в рейтинге остаётся гипотезой.

Теперь о том, как прочитать вывод скрипта. Первым смотрят на долю успеха: если Hydrogen high проходит тесты четыре раза из пяти, а Carbon medium пять из пяти, различие в одну попытку на выборке из пяти ещё ничего не доказывает. Поэтому серьёзное сравнение требует десятков повторов на каждую пару, а пять запусков годятся только для первой прикидки. Вторым смотрят на стоимость успеха. Третьим на время до первого токена, если у задачи есть живой пользователь, и на общее время, если пользователя нет.

Полезно заранее решить, при каких условиях выбор меняется. Допустим, Hydrogen high стоит $0,40 за запуск при 80 процентах успеха, а Carbon medium $0,70 при 100 процентах. Тогда успех на Hydrogen обходится в $0,50 и всё ещё дешевле, а после первого декабря, когда Carbon подорожает до $1,40, разрыв станет почти трёхкратным. Если же ошибка Hydrogen портит файлы или требует ручной проверки, цена повтора растёт и расчёт может перевернуться.

Какую схему маршрутизации между Carbon и Hydrogen разумно проверить первой

Самая очевидная схема повторяет совет Google: Carbon планирует и разбирает самые трудные места, Hydrogen выполняет шаги. Планирование занимает малую долю токенов, а исполнение большую, поэтому дорогая модель получает тот участок, где её сила нужнее всего, а доля её расходов в общем счёте остаётся небольшой.

В коде такая схема сводится к двум вызовам с разными моделями и уровнями. Сначала Carbon на уровне high получает постановку задачи и возвращает план из небольших шагов с критериями проверки. Затем Hydrogen на уровне high исполняет каждый шаг, а уровень xhigh включается только для шагов, помеченных планировщиком как трудные. Если шаг не прошёл проверку дважды, он возвращается к Carbon с описанием провала. Так дорогой уровень платит за себя там, где без него не обойтись, а остальная работа идёт по дешёвому тарифу.

Для фоновых задач стоит проверить пакетный и гибкий режимы, у Hydrogen они вдвое дешевле стандарта, у Carbon по сторонним данным тоже. Бесплатный уровень Hydrogen годится для прототипов, но данные оттуда Google использует для улучшения своих продуктов, поэтому клиентские данные туда отправлять не следует.

До 30 ноября у Carbon есть окно вводной цены, и его удобно использовать для замеров. После первого декабря каждый вызов Carbon должен оправдывать двойной тариф ощутимым приростом успеха на вашем сценарии, а Hydrogen разумно держать основным вариантом, пока замеры не покажут обратное.