OpenAI API: как подключить GPT к своей программе

В этой статье

Если ответ модели должен получать ваш скрипт, сайт или бот, нужен OpenAI API. Программа отправляет входные данные и получает объект ответа; дальше ваш код решает, что показать пользователю. Для первого текстового запроса удобно использовать Responses API и официальный Python SDK.

«API ChatGPT» часто называют именно этот способ интеграции. При этом ChatGPT и API имеют отдельные системы оплаты: подписка в интерфейсе чата не оплачивает запросы программы. Это различие закреплено в справке OpenAI о биллинге.

Amber Market — сервис для оплаты зарубежных сервисов. Подписка ChatGPT из магазина и баланс OpenAI API — разные покупки; не подменяйте одно другим.

Что подготовить для первого запроса

Нужны Python, доступ к проекту на API-платформе OpenAI, его API-ключ и доступная проекту модель. Создание ключа и установка SDK описаны в Developer quickstart. Ключ относится к API-проекту: пароль от ChatGPT вместо него не подходит.

Работайте в отдельной локальной папке. Для Windows PowerShell можно создать окружение и установить пакет без изменения системного Python:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install openai

Команды создают .venv в текущей папке. Если у вас уже есть окружение проекта, используйте его Python. Официальный пакет называется openai.

Минимальный Python-клиент

Сохраните код как first_request.py. Он просит ключ без отображения ввода и получает точный ID модели от вас. Скопируйте ID модели, доступной вашему API-проекту; название тарифного плана вроде Plus здесь не подходит.

from getpass import getpass
from openai import OpenAI

model_id = input("Model ID: ").strip()
if not model_id:
    raise SystemExit("Укажите ID доступной модели.")

api_key = getpass("OpenAI API key: ").strip()
if not api_key:
    raise SystemExit("API-ключ не введён.")

client = OpenAI(api_key=api_key)
response = client.responses.create(
    model=model_id,
    input="Объясни назначение HTTP одним коротким предложением.",
)

print("Response ID:", response.id)
print("Status:", response.status)
if response.output_text:
    print(response.output_text)
else:
    print("Текстовый ответ отсутствует; проверьте статус ответа.")

Запустите его в той же папке:

.\.venv\Scripts\python.exe first_request.py

Здесь model задаёт модель, а input — запрос. Метод responses.create возвращает структурированный ответ; output_text в SDK позволяет получить его текстовую часть. Контракт описан в справочнике Responses API.

Не вставляйте API-ключ прямо в исходник или в клиентский JavaScript сайта. В этом локальном примере он вводится при запуске. Для приложения выберите хранение секрета в окружении или менеджере секретов на стороне, которой вы управляете.

По каким признакам запрос сработал

Сначала проверьте, что программа дошла до строк Response ID и Status. Затем посмотрите текст: он должен отвечать на ваш вопрос, но точная формулировка не обязана повторяться при каждом запуске. Транспортный успех и качество ответа проверяются отдельно.

Если появляется ModuleNotFoundError: No module named 'openai', обычно код запущен другим Python, чем тот, куда установлен пакет. Используйте один и тот же путь .venv\Scripts\python.exe для установки и запуска.

Если ошибка пришла от API, посмотрите её тип и сообщение: проверьте ключ проекта, доступ к указанной модели и состояние API-биллинга. Покупка Plus в такой ситуации не является способом пополнить API. Не отправляйте секретный ключ вместе со скриншотом ошибки.

Как встроить это в приложение

На следующем шаге вынесите вызов в функцию, которая принимает текст и возвращает результат или понятную ошибку. Уже после этого подключайте форму сайта или обработчик сообщения бота. Так вы сможете отдельно проверить, работает ли запрос к модели, не путая его со сбоем кнопки или доставкой сообщения.

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

Источники

Есть следующая задача?Ещё по теме «Работа с API» →