Laravel ile AI Gateway Kurulumu: OpenAI + Ollama (Local AI) Tek Adresten Yönetim
Yapay zekâ entegrasyonları artık modern web uygulamalarının vazgeçilmez bir parçası haline geldi. Ancak çoğu projede şu sorun ortaya çıkar:
“Hangi AI sağlayıcısını kullanmalıyım? OpenAI mi, yoksa local (Ollama) mı?”
Bu yazıda, bu sorunu kökten çözen bir mimariyi anlatıyoruz:
👉 Tek bir API (ai.kitmote.com) üzerinden hem OpenAI hem de local AI (Ollama) kullanabilen bir sistem
Bu yapı sayesinde:
- Tek endpoint ile tüm AI işlemleri yönetilir
- Provider değiştirmek sadece ayar değişikliği olur
- Trafik arttığında local AI’ya geçiş kolaylaşır
- SaaS sistemler için multi-tenant AI altyapısı oluşturulur
🧠 Neden AI Gateway?
Klasik yaklaşım:
Bu yaklaşım:
- API key güvenliği sorunları yaratır
- Provider bağımlılığı oluşturur
- Esnek değildir
Bizim yaklaşım:
Yani:
- Tüm AI istekleri tek merkezden geçer
- Provider seçimi backend tarafından yapılır
- Güvenlik ve loglama kontrol altına alınır
🏗️ Sistem Mimarisi
Genel akış şu şekildedir:
↓
ai.kitmote.com (Laravel API)
↓
Middleware (Security Layer)
↓
AI Manager
↓
Provider Resolver
↓
[ OpenAI | Ollama | Fallback ]
↓
Response + Logging
⚙️ Kullanılan Teknolojiler
- Laravel 13 → API & orchestration
- OpenAI API → cloud AI
- Ollama → local AI (GPU gerekmeden çalışabilir)
- MySQL → settings + log
- Pest → test altyapısı
🔌 Provider Mantığı (Core Idea)
Sistemin kalbi şu prensip:
Controller provider’ı bilmez, sadece AI Manager çağırır.
Interface
interface AiProviderInterface{public function generate(AiRequestData $request): AiResponseData;}Provider örnekleri
- OpenAiProvider
- LocalAiProvider (Ollama)
- NullProvider (fallback)
🔄 Provider Switching Algoritması
Sistemin en kritik kısmı:
2. provider available mı kontrol edilir
3. değilse fallback provider’a geçilir
4. hiçbiri yoksa controlled error döner
Pseudo code
if (provider == local) {if (local_available) {return local;}if (fallback == openai) {return openai;}return nullProvider;}if (provider == openai) {return openai;}⚡ OpenAI Entegrasyonu (Cloud AI)
$response = Http::withToken($apiKey)->post('https://api.openai.com/v1/responses', ['model' => 'gpt-4.1-mini','input' => $prompt,]);Avantajları:
- yüksek doğruluk
- stabil performans
- sıfır altyapı maliyeti (başlangıçta)
🖥️ Ollama ile Local AI
Ollama sayesinde:
- GPU olmadan bile local model çalıştırabilirsin
- API endpoint üzerinden erişim sağlar
Laravel tarafında:
Http::post('http://localhost:11434/api/generate', ['model' => 'llama3','prompt' => $prompt,]);Avantajları:
- maliyet yok (API yok)
- veri dışarı çıkmaz
- offline çalışabilir
🧩 Settings Tabanlı Yönetim
Tüm sistem ayarlardan yönetilir:
ai_provider = openai | localai_fallback_provider = openaiai_local_enabled = true/falseai_openai_api_key = xxxBu sayede:
👉 Kod değiştirmeden provider değiştirebilirsin
🔐 Güvenlik Katmanı
Bu sistemde kritik konu:
“Herkes API’yi kullanamasın”
Bu yüzden middleware katmanı:
- API Token kontrolü
- Domain whitelist
- IP whitelist
- Rate limit
📊 Loglama ve Maliyet Takibi
Her AI isteği kayıt altına alınır:
- provider
- model
- input/output token
- response süresi
- maliyet
- domain
Bu sayede:
👉 “Ne kadar harcadım?” sorusuna net cevap alırsın
🚀 Gerçek Dünya Kullanım Senaryosu
Bu yapı özellikle şu sistemlerde çok güçlü:
- CV oluşturma (KitResume tarzı)
- Blog içerik üretimi
- SEO açıklama üretimi
- Chat sistemleri
- SaaS AI servisleri
🔁 Hibrit AI Stratejisi (En kritik kısım)
En doğru yaklaşım:
| Aşama | Kullanım |
|---|---|
| Başlangıç | OpenAI |
| Trafik artınca | Hybrid |
| Büyük ölçek | Local AI |
Yani:
Yarın → OpenAI + Local
Sonra → Local ağırlıklı
🎯 Sonuç
Bu yazıda şunu öğrendik:
- AI Gateway ile tek endpoint yönetimi
- Laravel ile provider abstraction
- OpenAI + Ollama birlikte kullanımı
- fallback ve provider switching mantığı
- SaaS için ölçeklenebilir AI mimarisi
👉 En önemli çıkarım:
AI entegrasyonu sadece “API çağırmak” değil, doğru mimariyi kurmaktır.
Keywords: AI Gateway, OpenAI API, Laravel API
Sıkça Sorulan Sorular
AI Gateway nedir?
<p>AI Gateway, OpenAI veya yerel modeller (Ollama gibi) gibi farklı yapay zekâ sağlayıcılarına gelen istekleri yöneten merkezi bir API katmanıdır.</p>
Ollama GPU olmadan çalışır mı?
<p>Evet, Ollama CPU üzerinde çalışabilir. Ancak performans, GPU kullanıldığında belirgin şekilde artar.</p>
Neden OpenAI API’yi frontend’den direkt çağırmamalıyım?
<p data-start="427" data-end="654">Çünkü API anahtarları gizli tutulmalıdır. Backend üzerinden kullanmak; güvenlik, loglama, rate limit ve provider yönetimi açısından daha doğru bir yaklaşımdır.</p>
Laravel ile birden fazla AI sağlayıcı yönetilebilir mi?
<p>Evet. Provider pattern ve servis katmanı kullanılarak Laravel içinde farklı AI sağlayıcıları arasında dinamik geçiş yapılabilir.</p>
