В этой статье
Если локальный скрипт или приложение просит OpenAI API key, ему нужен секрет из платформы OpenAI API. Когда в инструкции пишут «API-ключ ChatGPT», обычно имеют в виду именно его. Пароль от аккаунта, токен сессии ChatGPT и код активации подписки здесь не подходят.
Где находится раздел API Keys
Откройте платформу OpenAI API и войдите в учётную запись с доступом к нужному проекту. Выберите проект, затем в его настройках откройте API keys. Здесь создают личные ключи и управляют уже выпущенными.
Для примера возьмём проект «Черновики» и локальный скрипт summaries.py. Ключ нужно создавать в «Черновиках»: приложение будет использовать доступ этого проекта. Если нужного проекта нет в списке, проверьте выбранную организацию и при необходимости переключитесь на другую свою. Если доступа всё равно нет, обратитесь к владельцу организации. Сам по себе аккаунт OpenAI не даёт доступа к закрытому проекту; это зависит от членства в проекте.
Подписка ChatGPT Plus для создания ключа не нужна. Платные API-запросы и подписка ChatGPT оплачиваются отдельно: Plus не пополняет баланс API. Для коротких текстовых запросов в обычном чате можно использовать ChatGPT Free с его условиями доступа, но бесплатный чат не означает бесплатный API.
Если вам нужен именно платный чат, Amber Market — сервис оплаты зарубежных сервисов — помогает оформить месячный ChatGPT Plus на своём аккаунте через менеджера. Заказ можно оплатить через СБП. Для оформления аккаунт должен быть на Free без действующей подписки; продление доступно после её окончания. Актуальные условия и итоговую стоимость проверьте перед оплатой. Эта услуга не выдаёт API-ключ и не пополняет баланс API.
Как создать личный ключ своего проекта
В разделе API keys начните создание пользовательского ключа. Задайте понятное имя — например, summaries-local. Через месяц по такой записи легче понять, какой программе выдан доступ.
Выберите права по операциям приложения. У пользовательского ключа есть три варианта:
All— все разрешения ключа в пределах доступного ему проекта.Restricted— разрешения задаются по отдельным ресурсам.Read Only— доступ для чтения.
Для summaries.py, который генерирует краткие пересказы, одного чтения недостаточно: нужен доступ к ресурсу, через который скрипт запрашивает генерацию. При Restricted сверяйте разрешения с используемым методом API. Универсальной галочки для всех клиентов нет: набор прав зависит от ресурса, как описано в справке OpenAI о разрешениях ключей.
Завершите создание и сразу сохраните полный секрет в менеджере паролей или другом защищённом хранилище. Полный API-ключ показывается только при создании. Позже в списке можно найти его запись и имя, но нельзя повторно раскрыть всю строку — об этом сказано в справке о поиске API-ключа.
Как передать ключ приложению
Для собственного backend или локального скрипта сохраните секрет в защищённых настройках программы либо её окружения под именем OPENAI_API_KEY. Схема настройки выглядит так:
Имя: OPENAI_API_KEY
Значение: YOUR_OPENAI_API_KEY
YOUR_OPENAI_API_KEY — фиктивный маркер; в своей программе укажите созданный секрет. Если ключ просит сторонний сервис, сначала выясните, какие запросы он будет выполнять и кто получит доступ к ключу. Это разрешение расходовать API-ресурсы вашего проекта.
Рекомендации OpenAI по безопасности ключей требуют хранить секрет вне клиентского кода и репозитория. Для веб-приложения запрос отправляет backend, а ключ хранится в настройках его процесса или менеджере секретов. В клиентском HTML и JavaScript секрет доступен посетителю страницы.
Если локальный скрипт запускается из терминала, можно передать ключ на один запуск через скрытый ввод. Сохраните рядом с summaries.py файл run_summaries.py. Пример использует только стандартную библиотеку Python 3:
import os
import subprocess
import sys
import warnings
from getpass import GetPassWarning, getpass
warnings.simplefilter("error", GetPassWarning)
env = os.environ.copy()
env["OPENAI_API_KEY"] = getpass("OpenAI API key: ").strip()
if not env["OPENAI_API_KEY"]:
raise RuntimeError("OPENAI_API_KEY is not set")
print("OPENAI_API_KEY задана")
subprocess.run([sys.executable, "summaries.py"], env=env, check=True)
Из папки с обоими файлами выполните python run_summaries.py — или python3 run_summaries.py, если так называется Python 3 в вашей системе. Введите ключ в появившемся приглашении. Ввод скрыт, секрет не попадает в текст команды и передаётся окружению дочернего процесса. Этот способ не сохраняет ключ между запусками; постоянное значение задают в защищённых настройках среды запуска.
Сам summaries.py должен читать эту настройку. В Python проверка наличия выглядит так:
import os
api_key = os.environ.get("OPENAI_API_KEY")
if not api_key:
raise RuntimeError("OPENAI_API_KEY is not set")
print("Настройка OPENAI_API_KEY прочитана")
Такая проверка подтверждает только наличие значения. Не выводите сам api_key: полный секрет не нужен ни в консоли, ни в логах, ни на скриншоте.
Теперь выполните один обычный запрос приложения к тому ресурсу, для которого вы выдали права. Если запрос ещё не написан, переходите к первому запросу OpenAI API из Python. Успешный ответ подтвердит, что приложение прочитало рабочий ключ и получило доступ к нужной операции.
При ошибке прав сверяйте выбранный проект, ресурс запроса и разрешения ключа. Новый ключ с теми же правами в том же проекте сам по себе эту ошибку не исправит. Для 429 и insufficient_quota есть отдельный разбор лимитов и квоты OpenAI API: такая ошибка не означает, что секрет создан неправильно.
Как заменить потерянный ключ
Если секрет сохранился в вашем защищённом хранилище, возьмите его оттуда. Если осталась только запись summaries-local в разделе API keys, восстановить по ней полную строку нельзя. Создайте замену:
- В проекте «Черновики» создайте новый пользовательский ключ
summaries-local-2с нужными правами. - Обновите
OPENAI_API_KEYв настройках приложения и перезапустите процесс, чтобы он прочитал новое значение. При запуске черезrun_summaries.pyвведите новый секрет. - Выполните обычный запрос и убедитесь, что приложение получает успешный ответ от нужного ресурса.
- После успешной проверки отзовите старый ключ
summaries-localв разделеAPI keys.
Это порядок плановой замены: сначала переключается приложение, затем отключается старый секрет.
При известной утечке старый ключ отзывают сразу. Если он попал в Git, публичный лог или клиентский код, не ждите проверки замены. Приложения, которые ещё используют отозванный ключ, перестанут работать. Затем создайте новый, обновите настройки всех использующих его приложений и проверьте их запросы.