Laravel’ın yeni AI SDK’sı, üretim hazır AI özellikleri oluşturmayı şaşırtıcı derecede basit hale getiriyor. Bu yeni SDK, PHP geliştiricileri için önemli bir adım. Aşağıda uygulamanın nasıl oluşturulduğunu ve benzer bir uygulamanın nasıl yapılabileceğini açıklıyorum.
Problemler ve Çözüm
AI entegrasyonu genellikle zahmetli bir süreç olmuştur. Geliştiriciler birden fazla SDK ile çalışmak zorunda kalıyor, API kimlik bilgileri yönetmekte, akış yanıtlarıyla başa çıkmakta ve yedek sistemler oluşturma çabaları içinde kayboluyorlar. Laravel’ın AI SDK’sı bu sorunları mükemmel bir şekilde çözüyor.
Yapacağımız şey:
- ✨ AI Sohbeti
- 🎨 Görüntü Oluşturma
- 🔊 Metinden Sese Dönüşüm
- 🔍 Vektör Arama
- 🎯 Mock Mode — API anahtarlarına gerek olmadan deneme!
- 🔄 Oturum bazlı mod değiştirme
Adım 1: Proje Kurulumu ve Kurulum
Yeni bir proje oluşturarak başlayalım:
laravel new ai-showcase
cd ai-showcaseGerekli bağımlılıkları yükleyin:
composer require laravel/aiYapılandırmayı yayınlayın:
php artisan vendor:publish --tag=ai-configYapılandırma şu şekilde olacak:
return [
'mode' => env('AI_MODE', 'mock'), // 'mock' ya da 'real'
'providers' => [
'gemini' => [
'api_key' => env('GEMINI_API_KEY'),
],
'openai' => [
'api_key' => env('OPENAI_API_KEY'),
],
],
];Adım 2: Gizli Sos — Mock Provider
Bu projeyi özel kılan şey, herkese uygulamayı anında deneme imkanı veren bir Mock Provider’dır.
class MockProvider {
public function text(string $prompt): string {
return "Merhaba! Ben bir mock AI asistanıyım. Sordunuz: {$prompt}";
}Adım 3: Akıllı Mod Değiştirme
Kullanıcıların Mock ve Gerçek modlar arasında sorunsuz geçiş yapabilmesi gerekiyor:
public function handle($request, $next) {
if ($request->session()->has('ai_mode') {
config(['ai.mode' => $request->session()->get('ai_mode')]);
}
return $next($request);
}Adım 4: AI Özelliklerini Geliştirme
Özelliklerinizi AI ile geliştirmeye başlayın:
public function chat(Request $request) {
$request->validate(['message' => 'required|string']);
if (config('ai.mode') === 'mock') {
$response = $this->mockProvider->text($request->message);
} else {
$response = \Laravel\Ai\Facades\Ai::text($request->message);
}
return response()->json(['response' => (string) $response]);
}Adım 5: Gerçek Zamanlı Yayınlama
AI yanıtlarını anında görmenizi sağlayacak bir akış oluşturun:
return response()->stream(function () use ($request) {
$provider = config('ai.mode') === 'mock' ? $this->mockProvider : null;
if ($provider) {
foreach ($provider->streamText($request->prompt) as $chunk) {
echo "data: " . json_encode(['chunk' => $chunk]) . "\n\n";
ob_flush();
flush();
}
} else {
$stream = \Laravel\Ai\Facades\Ai::stream($request->prompt);
foreach ($stream as $chunk) {
echo "data: " . json_encode(['chunk' => (string) $chunk]) . "\n\n";
ob_flush();
flush();
}
}
}, 200, ['Content-Type' => 'text/event-stream']);Adım 6: Vektör Arama ile Anlamlı Arama Kabiliyetleri
Semantik arama için:
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
if ($this->vectorAvailable()) {
$table->vector('embedding', dimensions: 768)->index();
} else {
$table->text('embedding')->nullable();
}
$table->timestamps();
});Adım 7: Hata Yönetimi
Üretim uygulamaları için etkili bir hata yönetimi oluşturmanız önemli:
try {
if ($this->shouldUseMock()) {
$response = $this->mockProvider->text($prompt);
} else {
$response = \Laravel\Ai\Facades\Ai::text($prompt);
}
return response()->json(['success' => true, 'response' => $response]);
} catch (\Exception $e) {
return response()->json(['success' => false, 'error' => $e->getMessage()], 500);
}Adım 8: Her Şeyi Test Etme
class AiShowcaseTest extends TestCase {
public function mock_mode_works_without_api_keys() {
config(['ai.mode' => 'mock']);
$response = $this->postJson('/chat/demo', ['message' => 'Merhaba dünya']);
$response->assertStatus(200)->assertJson(['success' => true, 'mode' => 'mock']);
}
}Önemli Dersler:
- Mock Mode, geliştirme sırasında API maliyetlerini sıfıra indirir.
- Oturum bazlı geçiş, kullanıcıların sunucuyu yeniden başlatmadan mod değiştirmelerine olanak tanır.
- Gerçek zamanlı akış, kullanıcıların anında geri bildirim almalarını sağlar.
- Hata yönetimi, kullanıcı deneyimini asla bozmaz.
Sonuç olarak, Laravel AI SDK, AI ile desteklenen uygulamaları çok daha kolay hale getiriyor. Geliştirme ve üretim süreçlerini bir arada düşünmek önemlidir. Mock modları ve yedekleme sistemleri, profesyonel AI uygulamaları için gereklidir.
Kaynak: Orijinal Makale


