Cara membuat akun OpenAI, mendapatkan API Key, menyimpannya dengan aman di environment variable, dan menguji koneksi API OpenAI pertama kali menggunakan PHP.
Daftar Isi
- TL;DR (Ringkasan Cepat)
- Mendapatkan API Key OpenAI & Panduan Registrasi Dashboard
- Membuat API Key
- Panduan Belajar AI Agent & PHP: Menyimpan Credential .env secara Aman
- Prosedur Pengujian API Key OpenAI untuk Belajar AI Agent & PHP
- Header Tambahan Enterprise: OpenAI-Organization & OpenAI-Project
- Alternatif: Menggunakan Library Official PHP SDK (openai-php/client)
- Pengenalan Real-Time Response Streaming (Server-Sent Events)
- Troubleshooting Error HTTP cURL (401 Unauthorized & 429 Too Many Requests)
- Troubleshooting cURL Error 60 (SSL Certificate Problem)
- Strategi Fallback API Key: High Availability AI Agent
- Bagaimana Cara Mengintegrasikan Library vlucas/phpdotenv di PHP?
- Integrasi OPENAI_API_KEY pada Framework Laravel (config/services.php)
- Bagaimana Skema Limit Biaya (Usage Limits & Budget Guardrails) Bekerja?
- FAQ & Troubleshooting API Key OpenAI
Terakhir diperbarui:
TL;DR (Ringkasan Cepat)
- Buat akun di platform.openai.com dan top-up minimal kredit.
- Generate API Key di menu API Keys dan simpan di file
.env. - Gunakan model
gpt-4o-miniuntuk development karena paling hemat biaya. - Uji koneksi dengan request
curlatau kode PHP sederhana.
Mendapatkan API Key OpenAI & Panduan Registrasi Dashboard
- Buka platform.openai.com
- Klik Sign Up dan daftar menggunakan email atau akun Google/Microsoft.
- Verifikasi nomor telepon Anda.
- Setelah login, pergi ke menu Billing dan tambahkan payment method.
- Top-up saldo minimal $5 untuk mulai menggunakan API (cukup untuk ribuan percobaan dengan model mini).
Perbandingan Model OpenAI: gpt-4o-mini vs gpt-4o
| Model OpenAI | Input Price / 1M Tokens | Output Price / 1M Tokens | Context Window | Rekomendasi Penggunaan |
|---|---|---|---|---|
| gpt-4o-mini | $0.150 | $0.600 | 128,000 Tokens | Rekomendasi Utama untuk prototyping, development, dan belajar AI Agent PHP (~60x lebih hemat biaya). |
| gpt-4o | $2.500 | $10.000 | 128,000 Tokens | Model flagship enterprise untuk tugas analisis multimodal kompleks di lingkungan produksi. |
Membuat API Key
- Login ke platform.openai.com
- Klik menu API Keys di sidebar kiri.
- Klik tombol Create new secret key.
- Beri nama key Anda (misal: "php-ai-agent-dev").
- Salin API Key yang muncul — ini adalah satu-satunya kesempatan untuk melihatnya!
Video 4.1: Panduan visual cara mendaftar akun, top-up billing, dan membuat secret API Key di platform OpenAI.
Panduan Belajar AI Agent & PHP: Menyimpan Credential .env secara Aman
Simpan API Key di file .env Anda, bukan hard-coded di kode PHP:
# .env
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxx
OPENAI_MODEL=gpt-4o-mini
OPENAI_MAX_TOKENS=4096
Diagram 4.1: Aliran data dari file credential .env menuju Script PHP, request cURL SSL, dan respons OpenAI API Gateway.
Source Code Test API Key — test-api.php
Unduh atau clone langsung file test-api.php dan contoh integrasi SDK dari repositori resmi GitHub php-ai-agent-tutorial.
Prosedur Pengujian API Key OpenAI untuk Belajar AI Agent & PHP
Buat file test-api.php untuk memverifikasi bahwa koneksi ke API OpenAI berhasil:
<?php
require_once __DIR__ . '/config/config.php';
$config = require __DIR__ . '/config/config.php';
$apiKey = $config['openai_api_key'];
if (empty($apiKey)) {
die("Error: OPENAI_API_KEY belum diisi di .env\n");
}
$payload = json_encode([
'model' => $config['openai_model'],
'messages' => [
['role' => 'user', 'content' => 'Halo! Balas dengan: Koneksi berhasil.'],
],
'max_tokens' => 50,
]);
$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey,
],
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
if ($curlError) {
die("cURL Error: $curlError\n");
}
if ($httpCode !== 200) {
die("HTTP Error $httpCode: $response\n");
}
$data = json_decode($response, true);
$message = $data['choices'][0]['message']['content'] ?? 'Tidak ada respons';
echo "✅ Koneksi API OpenAI berhasil!\n";
echo "📝 Respons AI: $message\n";
echo "💰 Token digunakan: " . $data['usage']['total_tokens'] . "\n";
Header Tambahan Enterprise: OpenAI-Organization & OpenAI-Project
Pada arsitektur enterprise multi-project atau tim pengembang berskala besar, Anda dapat memisahkan alokasi pengeluaran dan kuota rate limit dengan mengirimkan HTTP Header opsional OpenAI-Organization dan OpenAI-Project:
// Contoh pada cURL Native PHP:
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey,
'OpenAI-Organization: org-xxxxxxxxxxxxxxxxxxxxxxxx',
'OpenAI-Project: proj_xxxxxxxxxxxxxxxxxxxxxxxx',
],
// Contoh pada SDK Client (openai-php/client):
$client = OpenAI::factory()
->withApiKey($apiKey)
->withOrganization('org-xxxxxxxxxxxxxxxxxxxxxxxx')
->withProject('proj_xxxxxxxxxxxxxxxxxxxxxxxx')
->make();
Untuk mempelajari rincian spesifikasi header dan panduan integrasi tingkat lanjut, silakan baca dokumentasi resmi di Dokumentasi API OpenAI Platform.
# Jalankan test
php test-api.php
# Output yang diharapkan:
# ✅ Koneksi API OpenAI berhasil!
# 📝 Respons AI: Koneksi berhasil.
# 💰 Token digunakan: 25
Alternatif: Menggunakan Library Official PHP SDK (openai-php/client)
Selain pendekatan native cURL, Anda juga dapat menggunakan library openai-php/client berbasis Composer untuk kemudahan sintaksis berorientasi objek (Object-Oriented Syntax):
composer require openai-php/client nyholm/psr7
<?php
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->safeLoad();
$apiKey = $_ENV['OPENAI_API_KEY'] ?? '';
if (empty($apiKey)) {
die("Error: OPENAI_API_KEY belum terkonfigurasi di file .env!\n");
}
$client = OpenAI::client($apiKey);
$response = $client->chat()->create([
'model' => $_ENV['OPENAI_MODEL'] ?? 'gpt-4o-mini',
'messages' => [
['role' => 'user', 'content' => 'Halo! Balas dengan: Koneksi via SDK openai-php/client berhasil.'],
],
'max_tokens' => 50,
]);
echo "✅ Respons SDK: " . $response->choices[0]->message->content . "\n";
echo "💰 Token digunakan: " . $response->usage->totalTokens . "\n";
Pengenalan Real-Time Response Streaming (Server-Sent Events)
Selain menerima seluruh respon sekaligus (blocking request), Anda dapat mengaktifkan mode Streaming Token Real-Time menggunakan parameter 'stream' => true. Dengan teknik ini, kata per kata dari AI akan langsung ditampilkan ke layar pengguna secara instan tanpa menunggu seluruh kalimat selesai diproses.
Pelajari implementasi lengkap penanganan streaming response cURL pada materi selanjutnya: Tutorial Bab 5: Membuat AI Chat Sederhana & Streaming Response PHP.
// Contoh potongan parameter Streaming pada cURL Payload:
$payload = json_encode([
'model' => 'gpt-4o-mini',
'messages' => [['role' => 'user', 'content' => 'Ceritakan kisah singkat.']],
'stream' => true, // Mengaktifkan Server-Sent Events (SSE)
]);
Tabel Pemetaan Error OpenAI API & cURL PHP
| Kode Error | Deskripsi Masalah | Penyebab Utama | Solusi Ringkas & Tindakan |
|---|---|---|---|
| HTTP 401 | Unauthorized | API Key tidak valid, salah ketik, atau belum diisi di file .env. |
Periksa file .env & salin ulang API Key tanpa spasi tambahan. |
| HTTP 429 | Too Many Requests / Quota Exceeded | Saldo billing OpenAI $0 atau request melebihi Rate Limit (RPM/TPM). | Top-up saldo minimum $5 di platform Billing OpenAI & atur limit kuota. |
| cURL Code 60 | SSL Certificate Problem | PHP CLI lokal belum mengonfigurasi sertifikat CA issuer SSL. | Unduh cacert.pem & daftarkan path sertifikat di php.ini. |
Troubleshooting Error HTTP cURL (401 Unauthorized & 429 Too Many Requests)
Saat menguji koneksi API OpenAI pada aplikasi PHP, Anda mungkin menemui error HTTP berikut:
- HTTP Error 401 (Unauthorized): API Key tidak valid, salah ketik, atau belum diset di file
.env. Pastikan tidak ada spasi di awal/akhir string key. - HTTP Error 429 (Too Many Requests / Quota Exceeded): Saldo billing OpenAI kosong, belum top-up kredit minimum ($5), atau pengiriman request melebihi Rate Limit (RPM/TPM). Tambahkan saldo di menu Billing platform OpenAI.
Troubleshooting cURL Error 60 (SSL Certificate Problem)
Pada lingkungan sistem operasi Windows atau server PHP lokal (seperti XAMPP / Laragon), Anda mungkin menemui error cURL berikut saat mengeksekusi test-api.php:
cURL Error: SSL certificate problem: unable to get local issuer certificate (Code 60)
Penyebab error ini adalah PHP CLI belum memiliki sertifikat CA (Certificate Authority) untuk mengonfirmasi enkripsi SSL/TLS OpenAI API. Cara mengatasinya secara permanen:
- Unduh file sertifikat CA terbaru
cacert.pemdari situs resmi cURL: curl.se/ca/cacert.pem. - Simpan file
cacert.pemtersebut di direktori instalasi PHP Anda (contoh:C:\php83\extras\ssl\cacert.pematauC:\laragon\bin\php\php-8.3.0\extras\ssl\cacert.pem). - Buka file konfigurasi
php.ini, cari dan perbarui direktif berikut:curl.cainfo = "C:\php83\extras\ssl\cacert.pem" openssl.cafile = "C:\php83\extras\ssl\cacert.pem" - Simpan file
php.inidan restart Web Server / Terminal Command Prompt Anda.
Strategi Fallback API Key: High Availability AI Agent
Dalam aplikasi produksi, kegagalan request ke OpenAI API akibat HTTP 429 (Rate Limit Exceeded) atau 503 (Server Outage) tidak boleh menyebabkan aplikasi AI Agent PHP Anda crash (single point of failure). Terapkan strategi Multi-Provider Failover dengan mencoba Provider cadangan (seperti Groq, Anthropic Claude, atau Local Ollama):
<?php
function sendAiPrompt(string $prompt): string
{
$providers = [
'openai' => ['url' => 'https://api.openai.com/v1/chat/completions', 'key' => $_ENV['OPENAI_API_KEY'] ?? '', 'model' => 'gpt-4o-mini'],
'groq' => ['url' => 'https://api.groq.com/openai/v1/chat/completions', 'key' => $_ENV['GROQ_API_KEY'] ?? '', 'model' => 'llama-3.1-8b-instant'],
'ollama' => ['url' => 'http://localhost:11434/v1/chat/completions', 'key' => 'ollama', 'model' => 'llama3'],
];
foreach ($providers as $name => $config) {
if (empty($config['key'])) continue;
$ch = curl_init($config['url']);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_POSTFIELDS => json_encode([
'model' => $config['model'],
'messages' => [['role' => 'user', 'content' => $prompt]],
]),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $config['key'],
],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$data = json_decode($response, true);
echo "ℹ️ Respons berhasil dilayani oleh provider: [$name]\n";
return $data['choices'][0]['message']['content'] ?? '';
}
}
throw new Exception("Seluruh AI Provider (OpenAI, Groq, Ollama) mengalami outage!");
}
Bagaimana Cara Mengintegrasikan Library vlucas/phpdotenv di PHP?
Untuk mengelola file .env di lingkungan produksi secara rapi dan aman, instal library standar ekosistem PHP vlucas/phpdotenv via Composer:
composer require vlucas/phpdotenv
<?php
require_once __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->safeLoad();
$apiKey = $_ENV['OPENAI_API_KEY'] ?? '';
if (empty($apiKey)) {
die("Error: OPENAI_API_KEY belum terkonfigurasi di file .env!\n");
}
Integrasi OPENAI_API_KEY pada Framework Laravel (config/services.php)
Jika Anda membangun AI Agent menggunakan framework Laravel, daftarkan OPENAI_API_KEY di dalam file konfigurasi config/services.php untuk mendukung fitur config caching di lingkungan produksi:
// config/services.php
return [
'openai' => [
'key' => env('OPENAI_API_KEY'),
'model' => env('OPENAI_MODEL', 'gpt-4o-mini'),
'project' => env('OPENAI_PROJECT_ID'),
],
];
Akses konfigurasi API Key secara aman di Controller atau Service Class Laravel menggunakan helper config():
$apiKey = config('services.openai.key');
$model = config('services.openai.model');
Bagaimana Skema Limit Biaya (Usage Limits & Budget Guardrails) Bekerja?
Untuk mencegah lonjakan tagihan akibat kebocoran API Key atau loop tanpa batas pada AI Agent PHP Anda, terapkan skema limit biaya 3 lapis berikut:
- Hard Limit (Platform OpenAI): Batas maksimum pengeluaran bulanan (misal $10/bulan). Jika tercapai, OpenAI akan memblokir request API secara otomatis.
- Soft Limit (Platform OpenAI): Batas peringatan email (misal $5/bulan) yang dikirimkan OpenAI saat pengeluaran mendekati ambang batas.
- PHP Token Budgeting: Tentukan
max_tokens(misal 500 token) pada setiap payload cURL untuk membatasi konsumsi token per response.
FAQ & Troubleshooting API Key OpenAI
Bagaimana cara mengatasi HTTP Error 401 (Unauthorized) pada OpenAI API?
Error 401 terjadi jika API Key tidak valid, salah ketik, atau belum dikonfigurasi di file .env. Pastikan API Key disalin dengan benar tanpa spasi tambahan di awal atau akhir string.
Bagaimana cara mengatasi HTTP Error 429 (Too Many Requests / Quota Exceeded)?
Error 429 terjadi jika saldo billing OpenAI habis (kredit $0) atau request melebihi Rate Limit (RPM/TPM). Lakukan top-up saldo minimum $5 pada menu Billing di platform.openai.com.
Bagaimana cara mencegah tagihan OpenAI yang membengkak?
Terapkan Hard Limit dan Soft Limit bulanan pada dashboard OpenAI Billing, serta tetapkan parameter max_tokens pada setiap payload request cURL di PHP.
Referensi Resmi & Dokumentasi Otoritatif (E-E-A-T)
- OpenAI API Reference Documentation — Spesifikasi resmi REST API & Chat Completions endpoint.
- PHP Official cURL Manual (php.net) — Dokumentasi resmi fungsi client Client-URL PHP.
- W3C / HTML Living Standard: Server-Sent Events (SSE) — Spesifikasi protokol event-stream untuk real-time AI token response.
Poin Kunci Bab 4
API Key adalah "kunci brankas" untuk layanan AI Anda. Perlakukan dengan sangat hati-hati. Gunakan rotation key secara berkala dan set spending limit di dashboard OpenAI untuk menghindari tagihan tidak terduga.