ChatGPT API: повний посібник
OpenAI API надає доступ до моделей GPT-4o, GPT-4o-mini, o1. Це основа для AI-чатботів, генерації контенту та автоматизації завдань.
Отримання API-ключа
Зареєструйтеся на platform.openai.com, поповніть баланс ($5+) і створіть API-ключ. Зберігайте ключ у змінних оточення.
Перший запит (cURL)
curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer $OPENAI_API_KEY" -d '{
"model": "gpt-4o-mini",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Що таке VPS-хостинг?"}
],
"max_tokens": 500
}' PHP-інтеграція
composer require openai-php/client <?php
require 'vendor/autoload.php';
$client = OpenAI::client($_ENV['OPENAI_API_KEY']);
$response = $client->chat()->create([
'model' => 'gpt-4o-mini',
'messages' => [
['role' => 'system', 'content' => 'Ти помічник підтримки ZevsHost.'],
['role' => 'user', 'content' => 'Як додати домен у cPanel?'],
],
'max_tokens' => 800,
]);
echo $response->choices[0]->message->content; Python-інтеграція
pip install openai from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Поясни, що таке VPS, у 3 реченнях."}],
max_tokens=200
)
print(response.choices[0].message.content) Streaming (потокове виведення)
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Напиши статтю про VPS"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True) Ціни та моделі (2025)
| Модель | Input (1M) | Output (1M) | Застосування |
|---|---|---|---|
| gpt-4o-mini | $0.15 | $0.60 | Чатботи, підтримка |
| gpt-4o | $2.50 | $10.00 | Складні завдання |
| o1-mini | $1.10 | $4.40 | Логіка, код |
Часті помилки API
Коди помилок OpenAI API стандартні для HTTP, але причини за ними не завжди очевидні з тексту відповіді.
401 — Incorrect API key provided
{"error": {"message": "Incorrect API key provided: sk-***", "type": "invalid_request_error"}} Ключ не пройшов перевірку: він відкликаний, скопійований не повністю або вказаний для іншого проєкту організації. Перевірте ключ у розділі API keys на platform.openai.com — відкликані ключі там позначені явно.
429 — Rate limit reached / insufficient_quota
Під кодом 429 приховані дві різні проблеми: перевищення ліміту запитів за хвилину (тимчасово, потрібно повторити із затримкою) і вичерпання оплаченого балансу (insufficient_quota, потребує поповнення). Текст поля type у JSON-відповіді розрізняє ці випадки — їх не можна обробляти однаковою повторною спробою.
Основні коди помилок і реакція на них
| Код | Тип помилки | Що робити |
|---|---|---|
| 401 | invalid_request_error / неправильний ключ | Перевірити і перевипустити ключ |
| 429 | rate_limit_exceeded | Повторити запит з експоненційною затримкою |
| 429 | insufficient_quota | Поповнити баланс, повтор не допоможе |
| 500/503 | server_error | Повторити пізніше, проблема на боці OpenAI |
Коли прямий виклик OpenAI API не підходить
- Дані користувачів не можна передавати за межі вашої інфраструктури — у цьому разі потрібен локальний варіант на кшталт Ollama.
- Потрібна незалежність від одного провайдера — варто одразу закладати абстракцію, як описано в статті про порівняння AI API.
- Бюджет непередбачуваний при пікових навантаженнях — без жорсткого ліміту на max_tokens і моніторингу витрат рахунок може зрости швидше, ніж очікувалося.
- Потрібна гарантія часу відповіді — публічний API не дає SLA щодо затримки, при піковому навантаженні відповідь OpenAI може зайняти помітно більше часу, ніж зазвичай.
Перевірка, що інтеграція працює
curl -s https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY" | head -c 200 Якщо ключ робочий, запит поверне JSON зі списком доступних моделей. Помилка 401 на цьому кроці означає проблему з ключем ще до того, як ви почнете розбиратися з логікою самого чат-запиту — так швидше локалізувати, в якій частині системи стався збій.
Під час проєктування інтеграції варто одразу закласти логування вартості запитів: поле usage у відповіді API містить точну кількість використаних токенів на вхід і вихід. Зберігаючи ці значення разом з ідентифікатором запиту, можна швидко знайти, який саме сценарій використання різко збільшив рахунок, замість того щоб розбиратися постфактум за загальною сумою в особистому кабінеті OpenAI.