17.07.2026 01:00
#1 (Konu Sahibi)
OpenAI API Anahtarlarını Sunucu Tarafında Maskeleyen Güvenli PHP Chat Proxy Scripti
Modern web geliştirme süreçlerinde, **OpenAI API Anahtarlarını Sunucu Tarafında Maskeleyen Güvenli PHP Chat Proxy Scripti** gibi entegrasyonlar, uygulamalarımıza akıllı özellikler kazandırmanın en hızlı ve güvenli yoludur. Gerek yerel Ollama API'si gerekse OpenAI veya Claude gibi bulut tabanlı API servisleri olsun, arka planda çalışan kod mimarisinin güvenli, hızlı ve ölçeklenebilir olması kullanıcı deneyimi açısından hayati önem taşır.
İstemci tarafındaki güvenlik risklerini (API anahtarlarının sızdırılması vb.) önlemek amacıyla sunucu tarafında bir proxy ara katmanı tasarlamak en iyi pratiktir. PHP tabanlı monolitik mimarilerde SQLite veri deposu ile birleştirilmiş hafif API Proxy kodları hem veritabanı bağlantı gecikmesini sıfıra indirir hem de API anahtarlarını istemci gözünden tamamen maskeler.
### PHP cURL ile Ollama Akışsal (Streaming) API Bağlantısı
Ollama'nın yerel API uç noktasına istek atarak yanıtları akış (stream) şeklinde almak için yazılmış örnek PHP fonksiyonu:
```php
function getOllamaStream($prompt) {
$ch = curl_init('http://localhost:11434/api/generate');
$data = json_encode([
'model' => 'qwen2.5-coder:7b',
'prompt' => $prompt,
'stream' => true
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $data) {
$json = json_decode($data, true);
if (isset($json['response'])) {
echo $json['response'];
flush(); // Yanıtı anında tarayıcıya gönder
}
return strlen($data);
});
curl_exec($ch);
curl_close($ch);
}
```
### Güvenli API Proxy Entegrasyonu ve RAG İş Akışı Adımları
1. **İstemci İstek Yönetimi:** İstemci tarafı (AJAX/Fetch) doğrudan OpenAI'ye değil, kendi sunucunuzdaki `/api/proxy.php` adresine istek göndermelidir.
2. **API Yetkilendirme Kontrolü:** Proxy scriptinde kullanıcının oturum açıp açmadığını ve rate-limit sınırlarını (dakikadaki istek sayısı) kontrol edin.
3. **Vektör Veritabanı ve RAG:** RAG (Retrieval-Augmented Generation) altyapısında dökümanları ChromaDB veya SQLite FTS5 (Full Text Search) kullanarak vektörleştirip saklayın.
4. **Semantik Arama:** Kullanıcı sorusuna en yakın döküman parçalarını vektör arama ile bularak prompt içerisine 'Context' (Bağlam) olarak ekleyin ve LLM'e iletin.
Özetle, monolitik backend sistemlerinde hafif SQLite veritabanı ve güvenli proxy ara katmanları kurarak, sunucu maliyetlerinizi minimumda tutup ultra hızlı ve güvenli yapay zeka entegrasyonları gerçekleştirebilirsiniz. Bu tür hafif monolitik kod yapıları, özellikle SaaS girişimleri ve niş topluluk projeleri için en verimli çözümdür.
İstemci tarafındaki güvenlik risklerini (API anahtarlarının sızdırılması vb.) önlemek amacıyla sunucu tarafında bir proxy ara katmanı tasarlamak en iyi pratiktir. PHP tabanlı monolitik mimarilerde SQLite veri deposu ile birleştirilmiş hafif API Proxy kodları hem veritabanı bağlantı gecikmesini sıfıra indirir hem de API anahtarlarını istemci gözünden tamamen maskeler.
### PHP cURL ile Ollama Akışsal (Streaming) API Bağlantısı
Ollama'nın yerel API uç noktasına istek atarak yanıtları akış (stream) şeklinde almak için yazılmış örnek PHP fonksiyonu:
```php
function getOllamaStream($prompt) {
$ch = curl_init('http://localhost:11434/api/generate');
$data = json_encode([
'model' => 'qwen2.5-coder:7b',
'prompt' => $prompt,
'stream' => true
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch, $data) {
$json = json_decode($data, true);
if (isset($json['response'])) {
echo $json['response'];
flush(); // Yanıtı anında tarayıcıya gönder
}
return strlen($data);
});
curl_exec($ch);
curl_close($ch);
}
```
### Güvenli API Proxy Entegrasyonu ve RAG İş Akışı Adımları
1. **İstemci İstek Yönetimi:** İstemci tarafı (AJAX/Fetch) doğrudan OpenAI'ye değil, kendi sunucunuzdaki `/api/proxy.php` adresine istek göndermelidir.
2. **API Yetkilendirme Kontrolü:** Proxy scriptinde kullanıcının oturum açıp açmadığını ve rate-limit sınırlarını (dakikadaki istek sayısı) kontrol edin.
3. **Vektör Veritabanı ve RAG:** RAG (Retrieval-Augmented Generation) altyapısında dökümanları ChromaDB veya SQLite FTS5 (Full Text Search) kullanarak vektörleştirip saklayın.
4. **Semantik Arama:** Kullanıcı sorusuna en yakın döküman parçalarını vektör arama ile bularak prompt içerisine 'Context' (Bağlam) olarak ekleyin ve LLM'e iletin.
Özetle, monolitik backend sistemlerinde hafif SQLite veritabanı ve güvenli proxy ara katmanları kurarak, sunucu maliyetlerinizi minimumda tutup ultra hızlı ve güvenli yapay zeka entegrasyonları gerçekleştirebilirsiniz. Bu tür hafif monolitik kod yapıları, özellikle SaaS girişimleri ve niş topluluk projeleri için en verimli çözümdür.