Начало работыИнструкция
Первый запрос из Google Colab: ключ API в Secrets
Отправьте первый запрос из блокнота Colab, храня ключ в Colab Secrets, и прочитайте ответ и расход токенов.

Содержание
Первый запрос можно отправить из блокнота Colab, ничего не устанавливая на компьютер. Сохраните ключ в Colab Secrets, прочитайте его через userdata., направьте пакет openai на https:/ и выведите choices[0]. и 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, вставьте ключ как значение и включите доступ для блокнота, с которым работаете. Подписи кнопок могут меняться, поэтому ищите значок ключа, а не путь по меню.
Имя выберите сейчас: именно эту строку вы передадите в код. Неверное имя — ошибка, которую легко допустить, и ниже в разделе про ошибки видно, как она выглядит.

Отправьте первый запрос#
Секреты в Colab читает функция google. из модуля colabtools от Google (докстринги на 5 ноября 2026). Установите SDK, прочитайте секрет и отправьте один запрос.
Шаг за шагом
Первый запрос в трёх ячейках
Установите пакет
Запустите в первой ячейке. Флаг -q сокращает вывод, и команда работает независимо от того, стоит ли пакет в среде.
!pip install -q openaiПрочитайте ключ и создайте клиент
Ключ берётся из Secrets. Вставлять его сюда не нужно.
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 не принимаются.
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- (контекст 390K, до 8 192 токенов в ответе) и запустите ячейку ещё раз. Весь список — на странице моделей и цен.
Попробуйте самиПопробуйте: что покажет resp.choices[0].finish_reason ?Показать ответ
Добавьте print(resp. под остальными. Если ответ закончился сам, увидите stop. Поставьте max_tokens=5 и запустите снова: ответ обрежется, и вы увидите length — его остановил лимит, а не модель.
Если ячейка упала#
Ошибки со стороны секретов случаются первыми, ещё до того, как запрос уйдёт из Colab. По исходникам colabtools (на 5 ноября 2026) userdata.get может выбросить три ошибки.

SecretNotFoundError: секрета с таким именем нет. Сверьте строку вuserdata.с именем в панели Secrets буква в букву. Регистр важен.get('. . . ') 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. кладёт его в вывод, а вывод сохраняется вместе с блокнотом.
Быстрая проверка
Где должен лежать API-ключ в блокноте Colab, которым вы делитесь?
Показать ответ
Ответ: В Colab Secrets, читать через userdata.get
Ячейка и её вывод сохраняются в блокноте и уходят вместе с ним; в коде указано только имя секрета.
Дальше можно вставить этот ответ в цикл, чат или небольшой инструмент. Остальное API описано в документации.



