Anahtarı ortam değişkeni olarak tanımladıktan sonra PHP cURL ile Responses API’ye basit bir istek gönderilebilir:
<?php
$apiKey = getenv('OPENAI_API_KEY');
$payload = [
'model' => 'gpt-5.4-mini',
'input' => 'Bir PHP projesi için kısa README taslağı hazırla.'
];
$ch = curl_init('https://api.openai.com/v1/responses');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
CURLOPT_TIMEOUT => 60,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException('API isteği başarısız: ' . $response);
}
$data = json_decode($response, true, flags: JSON_THROW_ON_ERROR);
echo $data['output_text'] ?? 'Yanıt metni bulunamadı.';Model adı zaman içinde değişebildiği için üretime geçmeden önce resmi model sayfasından hesabınıza uygun güncel modeli seçmek gerekiyor. Uygulamanın ihtiyacına göre kalite, gecikme ve maliyet arasında denge kurulmalı.
Gerçek projede ayrıca şunları ekliyorum:
- API anahtarını `.env` içinde tutup repodan hariç bırakmak
- Kullanıcı girdisine uzunluk sınırı koymak
- İstek başına timeout belirlemek
- 429 ve geçici 5xx hatalarında kontrollü tekrar denemek
- Harcama ve kullanım limitlerini izlemek
- Kullanıcıya ham API hata gövdesini göstermemek
- İstek ve yanıt loglarında kişisel verileri maskelemek
- Beklenen çıktı biçimi önemliyse structured output kullanmak
API anahtarını son kullanıcıdan gelen istekle doğrudan birleştiren açık proxy endpoint hazırlamak kötüye kullanıma yol açabilir. Kimlik doğrulama, rate limit ve kullanım kotası uygulama tarafında bulunmalı.
Responses API metin üretiminin yanında araç kullanımı ve çok adımlı akışlar için de temel uç nokta olarak kullanılabiliyor. İlk denemede sistemi gereksiz karmaşıklaştırmadan tek bir işlevi güvenilir hale getirmek daha iyi.
Geliştirme ortamında anahtarın yanlışlıkla loga düşmediğini ayrıca kontrol etmek gerekiyor. HTTP istemcisinin debug çıktısı Authorization header’ını yazabilir. Ekip projelerinde kişisel anahtar paylaşmak yerine proje bazlı erişim ve ayrı ortamlar kullanmak daha yönetilebilir. Model yanıtını güvenilmeyen kullanıcı girdisi gibi ele almak; HTML’e basmadan escape etmek ve araç çağrılarını sunucu tarafında doğrulamak da uygulama güvenliğinin parçasıdır.
OpenAI API’yi hangi projede kullanmayı düşünüyorsunuz? PHP’de doğrudan cURL mü tercih ediyorsunuz, yoksa bir SDK üzerinden ilerlemek mi daha rahat geliyor?
Cevaplar
0 yanıt