OpenAI API: подключение, два примера и контроль расходов
Ключ на сервере, выбранная модель, Responses API, обработка ошибок и безопасное выполнение инструментов.
Что именно подключается
Вы обращаетесь к API OpenAI, а не управляете обычным окном ChatGPT. Для проекта нужно проверить поддерживаемый регион, организацию, доступ к модели и условия расчёта расходов. Не считайте любой тариф приложения полным описанием API-биллинга.
Начинайте с официального quickstart. Примеры ниже учебные: они не выполнялись здесь и не содержат реального ключа. Перед запуском проверьте актуальную версию SDK и условия своего аккаунта.
Подготовка
Создайте ключ в разрешённом проекте и храните его на сервере или в защищённой среде. Не вставляйте в браузерный код и Git. Установите официальный пакет openai для Python или Node.js по действующей инструкции.
Перед запуском задайте OPENAI_API_KEY через безопасный механизм среды, а OPENAI_MODEL заполните доступным идентификатором из каталога. Установите бюджет и уведомления. В отладку не выводят секрет и закрытый вход.
Минимальный Python
import os
from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model=os.environ["OPENAI_MODEL"],
input="Объясни, чем факт отличается от предположения.",
max_output_tokens=120,
)
print(response.output_text)
Минимальный Node.js
import OpenAI from "openai";
const client = new OpenAI();
const model = process.env.OPENAI_MODEL;
if (!model) throw new Error("Задайте OPENAI_MODEL");
const response = await client.responses.create({
model,
input: "Объясни, чем факт отличается от предположения.",
max_output_tokens: 120,
});
console.log(response.output_text);
Успешный текстовый ответ проверяет только базовый запрос. Он не доказывает готовность бота к рабочей нагрузке, безопасной обработке данных или внешним действиям.
Контекст и параметры
Историю разговора храните с учётом требований к данным. Передавайте только нужный контекст или используйте предусмотренный API-механизм состояния. Не считайте память бесконечной и бесплатной.
Поддержка параметров зависит от модели. Инструкция задаёт задачу и границы, ограничение вывода помогает контролировать объём, но не заменяет проверку. Не копируйте параметры старой модели без сверки.
Инструменты и расходы
Вызов функции является запросом на действие. Приложение проверяет аргументы, права и актуальное состояние, затем решает, выполнять ли его. Модель не получает право на оплату или запись только потому, что вы описали инструмент.
Стоимость включает применимые входные и выходные единицы, поиск, инструменты и другие статьи режима. Кэширование и пакетная обработка полезны лишь при поддержке и подходящей задаче. Ограничивайте длинную историю и ненужные повторы.
Проверка до рабочего подключения
Сначала убедитесь, что окружение читает настройки без вывода секретов. Для пробного запроса используйте открытый текст и небольшой допустимый объём. При ошибке сохраните код и идентификатор, а не публикуйте весь запрос с ключом.
Затем задайте ограничение расходов и проверьте, кто получает предупреждение. Добавьте сценарий недоступной модели: приложение должно сообщить о проблеме и не подставлять случайную другую модель без согласованного правила.
Для инструмента записи начните с режима без изменения данных. Проверьте аргументы и сопоставьте их с ожидаемыми. Потом отдельно испытайте повтор события и потерю ответа после действия. Прежде чем повторить запись, нужно узнать, создана ли она уже. Наконец, проверьте журнал и порядок удаления данных. Эти шаги относятся к вашему приложению и не выполняются автоматически успешным ответом SDK.
Ошибки и приёмка
Разделяйте неверный запрос, аутентификацию, права, квоты и временный отказ. Для повторов нужны ограничение и задержка, а для внешнего действия проверка фактического состояния. Журнал сохраняет идентификатор без лишних секретов.
Проверьте обычный запрос, неизвестный факт, превышение лимита и отказ зависимости. Связку можно спроектировать через контакты агентства.

