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:

 
Frontend → OpenAI API
 

Bu yaklaşım:

  • API key güvenliği sorunları yaratır
  • Provider bağımlılığı oluşturur
  • Esnek değildir

Bizim yaklaşım:

 
Client → ai.kitmote.com → AI Provider
 

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

https://miro.medium.com/v2/resize%3Afit%3A875/0%2A0YiHfsf_hWAQ9Kw8.png
 
 

Genel akış şu şekildedir:

 
Client Domain

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ı:

 
1. aktif provider = settings tablosundan okunur
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
 
ollama run llama3
 

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 | local
ai_fallback_provider = openai
ai_local_enabled = true/false
ai_openai_api_key = xxx
 

Bu 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
 
Request → Token check → Domain check → IP check → AI
 

📊 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:

 
Bugün → OpenAI
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&acirc; sağlayıcılarına gelen istekleri y&ouml;neten merkezi bir API katmanıdır.</p>

Ollama GPU olmadan çalışır mı?

<p>Evet, Ollama CPU &uuml;zerinde &ccedil;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">&Ccedil;&uuml;nk&uuml; API anahtarları gizli tutulmalıdır. Backend &uuml;zerinden kullanmak; g&uuml;venlik, loglama, rate limit ve provider y&ouml;netimi a&ccedil;ı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&ccedil;inde farklı AI sağlayıcıları arasında dinamik ge&ccedil;iş yapılabilir.</p>

Yorumlar

Log in or sign up to write a comment
Giriş
Sign Up