Назад в блог

Начало работыИнструкция

Первый запрос из Google Colab: ключ API в Secrets

Отправьте первый запрос из блокнота Colab, храня ключ в Colab Secrets, и прочитайте ответ и расход токенов.

Автор: CheapTokens TeamОпубликовано 4 мин чтения

Ячейка Google Colab читает ключ из Colab Secrets и вызывает API CheapTokens
Содержание
  1. Что понадобится
  2. Положите ключ в Colab Secrets
  3. Отправьте первый запрос
  4. Сколько стоит запрос
  5. Если ячейка упала
  6. Делимся и меняем ключ

Первый запрос можно отправить из блокнота Colab, ничего не устанавливая на компьютер. Сохраните ключ в Colab Secrets, прочитайте его через userdata.get(...), направьте пакет openai на https://api.cheaptokens.dev/v1 и выведите choices[0].message.content и usage. Ключа в ячейке нет, поэтому, делясь блокнотом, вы не делитесь ключом.

Именно ради этого всё и затевается. Допустим, вы закончили блокнот и отправили ссылку однокурснику. Если ключ вставлен в ячейку, он теперь у него. Если ключ в Secrets, он получит код и ничего больше.

Эта статья продолжает первый запрос через обычный requests. Новое здесь одно: где лежит ключ и как его читает блокнот. То же самое на ноутбуке — в статье про хранение ключа в переменной окружения.

Что понадобится#

  • Аккаунт Google и новый блокнот на colab.research.google.com.
  • API-ключ CheapTokens и пополненный баланс. Ключи и баланс лежат в аккаунте, точные шаги есть в документации.
  • Пять минут.

API совместим с OpenAI Chat Completions, поэтому обычный пакет openai для Python работает, если указать другой base_url. В README openai-python (на 5 ноября 2026) указаны Python 3.10 или выше и pip install openai.

Положите ключ в Colab Secrets#

В левой боковой панели блокнота есть значок ключа — он открывает панель Secrets. Добавьте новый секрет, назовите его CHEAPTOKENS_KEY, вставьте ключ как значение и включите доступ для блокнота, с которым работаете. Подписи кнопок могут меняться, поэтому ищите значок ключа, а не путь по меню.

Имя выберите сейчас: именно эту строку вы передадите в код. Неверное имя — ошибка, которую легко допустить, и ниже в разделе про ошибки видно, как она выглядит.

Было и стало: ключ в ячейке и ключ через userdata.get
Слева ключ лежит в ячейке и уходит вместе с блокнотом. Справа в ячейке только имя секрета.

Отправьте первый запрос#

Секреты в Colab читает функция google.colab.userdata.get(name) из модуля colabtools от Google (докстринги на 5 ноября 2026). Установите SDK, прочитайте секрет и отправьте один запрос.

Шаг за шагом

Первый запрос в трёх ячейках

Установите пакет

Запустите в первой ячейке. Флаг -q сокращает вывод, и команда работает независимо от того, стоит ли пакет в среде.

python
!pip install -q openai

Прочитайте ключ и создайте клиент

Ключ берётся из Secrets. Вставлять его сюда не нужно.

python
from google.colab import userdata
from openai import OpenAI

client = OpenAI(
    api_key=userdata.get('CHEAPTOKENS_KEY'),
    base_url='https://api.cheaptokens.dev/v1',
)

Отправьте запрос и выведите результат

Укажите полный id модели с префиксом разработчика. Короткие id не принимаются.

python
resp = client.chat.completions.create(
    model='deepseek-ai/DeepSeek-V4-Flash-0731',
    messages=[{'role': 'user', 'content': 'Explain a token in one sentence.'}],
    max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)

Первый print покажет ответ модели. Второй выведет два числа: сколько токенов вы отправили и сколько написала модель. Это и есть весь счёт за запрос, поэтому мы печатаем его каждый раз.

Сколько стоит запрос#

Вы платите за токены, так что смотрите на вторую строку вывода. Допустим, короткий вопрос вроде нашего занимает около 40 токенов на входе, а ответ — 150 токенов на выходе. Такой запрос обойдётся в $0.000016 по текущей цене, а тысяча таких — в $0.0156. Подставьте вместо 40 и 150 два числа, которые напечатал ваш блокнот.

DeepSeek-V4-Flash взят по умолчанию не случайно: контекст 380K, до 32 768 токенов в ответе и одна цена в любое время суток, без пиковых часов. Баланс один на все модели, поэтому модель в этой ячейке можно сменить, не трогая остальное. Попробуйте zai-org/GLM-5.3-Flash (контекст 390K, до 8 192 токенов в ответе) и запустите ячейку ещё раз. Весь список — на странице моделей и цен.

Попробуйте самиПопробуйте: что покажет resp.choices[0].finish_reason?Показать ответ

Добавьте print(resp.choices[0].finish_reason) под остальными. Если ответ закончился сам, увидите stop. Поставьте max_tokens=5 и запустите снова: ответ обрежется, и вы увидите length — его остановил лимит, а не модель.

Если ячейка упала#

Ошибки со стороны секретов случаются первыми, ещё до того, как запрос уйдёт из Colab. По исходникам colabtools (на 5 ноября 2026) userdata.get может выбросить три ошибки.

Ошибка Colab: SecretNotFoundError
SecretNotFoundError: имя в коде не совпадает ни с одним секретом.
  • SecretNotFoundError: секрета с таким именем нет. Сверьте строку в userdata.get('...') с именем в панели Secrets буква в букву. Регистр важен.
  • NotebookAccessError: секрет есть, но у этого блокнота нет к нему доступа. Включите переключатель доступа в панели Secrets и перезапустите ячейку.
  • TimeoutException: Colab не ответил на запрос секрета. В тексте ошибки сказано, что секреты можно получить только при запуске кода из интерфейса Colab, поэтому запускайте ячейку в самом блокноте Colab, а не в экспортированном скрипте.

Если секрет загрузился, а запрос всё равно падает, дело на стороне API. 401 значит, что ключ неверный или не передан, а 404 обычно указывает на неверный базовый URL или id модели. Оба случая разобраны в статье ошибка API 401 или 404: ключ, base URL, id модели, а список моделей через GET /v1/models показывает, как скопировать точный id.

Делимся и меняем ключ#

Поделитесь блокнотом — и вместе с ним уйдёт код с userdata.get; ключа нет ни в одной ячейке и ни в одном выводе, так что утекать нечему. Тому, кто откроет блокнот, нужен собственный секрет с тем же именем, иначе он получит SecretNotFoundError (см. выше).

Если вы создали новый ключ, обновите значение в панели Secrets; код остаётся прежним, потому что в нём только имя секрета.

Одна привычка всё равно нужна: никогда не печатайте ключ. Ячейка print(userdata.get('CHEAPTOKENS_KEY')) кладёт его в вывод, а вывод сохраняется вместе с блокнотом.

Быстрая проверка

Где должен лежать API-ключ в блокноте Colab, которым вы делитесь?

Показать ответ

Ответ: В Colab Secrets, читать через userdata.get

Ячейка и её вывод сохраняются в блокноте и уходят вместе с ним; в коде указано только имя секрета.

Дальше можно вставить этот ответ в цикл, чат или небольшой инструмент. Остальное API описано в документации.