Her Laravel uygulaması, içgörülerle dolu bir veritabanının üstünde çalışır. Bu ay kaç kullanıcı kaydoldu? Hangi ürünler beklenen performansı gösteremiyor? Bölgeye göre ortalama sipariş değeri nedir? Veriler orada, ancak ona ulaşmak genellikle iki şey anlamına gelir: ham SQL yazmak veya gönderilmesi günler süren özel panolar oluşturmak.
Bu boşluğu kapatmak için LaraGrepi geliştirdim — veritabanınız hakkında doğal İngilizce ile sorular sorup gerçek cevaplar almanızı sağlayan bir Laravel paketi.
Her Geliştiricinin Bildiği Sorun
Her Geliştiricinin Bildiği Sorun
Bir toplantıdasınız. Müşteri soruyor: “Önümüzdeki ay sona erecek aktif abonelik sayımız nedir?” Verinin mevcut olduğunu biliyorsunuz. Hangi tabloların birleştirileceğini de biliyorsunuz. Ancak o soruyu şu anda yanıtlamak için bir terminal açmanız, bir sorgu yazmanız, çalıştırmanız ve belki de bir yazım hatasını düzeltmeniz, tekrar çalıştırmanız gerekiyor.
Şimdi bunu her paydaş için düşünün; herkes veritabanından “hızlı bir sayı” istiyor. Ürün yöneticileri, satış ekipleri, kurucular — hepsinin soruları var ve geliştirici darboğaz haline geliyor.
Bazı ekipler iç panolar oluşturuyor. Bu, tekrar eden sorular için işe yarıyor ama aniden ortaya çıkan sorular için işe yaramıyor. Bu panoları sürdürmek ise zamanla bir maliyet oluşturuyor.
LaraGrep Gerçekte Ne Yapıyor
LaraGrep Gerçekte Ne Yapıyor
LaraGrep, Laravel uygulamanıza bağlanır, veritabanı şemasını okur ve doğal dildeki soruları güvenli, parametreli SQL sorgularına çevirmek için yapay zeka kullanır. Ancak diğer metin-den-SQL araçlarından önemli bir farkı var; sadece bir sorgu oluşturup en iyi ihtimalle sonuç beklemekle kalmaz.
Bir ajan döngüsü kullanır. Yapay zeka bir sorgu çalıştırır, sonuçları görür, ne öğrendiğini düşünür ve başka bir sorgu çalıştırıp çalıştırmamaya ya da nihai cevabı sağlamaya karar verir. Bu, birden fazla adım gerektiren soruları işlemeyi mümkün kılar — tablolar arasında veri birleştirmek, önceki sonuçlara göre filtrelemek, beklenmedik bir sonuç geldiğinde kendini düzeltmek gibi.
“Q4’te Q3’e kıyasla en çok satan ürün kategorimiz nedir?” diye sorduğunuzda, yapay zeka kulis arka planda üç veya dört sorgu çalıştırabilir: önce şemayı anlamak, sonra Q3 rakamlarını çekmek, ardından Q4’ü almak, ve en son karşılaştırmak. Siz sadece nihai cevabı görürsünüz.
Şemanızı Bilen Bir Veri Analisti
Şemanızı Bilen Bir Veri Analisti
LaraGrep’i, tüm veritabanı yapınızı ezberlemiş bir genç veri analisti olarak düşünün. Tablolarınızı, sütunlarınızı, ilişkilerinizi tanımlarsınız ve hatta JSON sütunlarının ne içerdiği hakkında ipuçları verirseniz, yapay zeka tüm o bağlamı kullanarak doğru sorgular yazar.
Table::make('orders')
->description('Customer orders with payment status.')
->columns([
Column::id(),
Column::bigInteger()->unsigned()->description(),
Column::decimal(, 10, 2)->description(),
Column::enum(, [, , ]),
Column::json(
->template([=> , => ]),
Column::timestamp(),
])
->relationships([
Relationship::belongsTo(, ),
])
Sağladığınız bağlam ne kadar fazla olursa, cevaplar o kadar iyi olur. Sütun açıklamaları, enum değerleri, JSON şablonları — bunların hepsi yapay zekanın yalnızca yapıyı değil, verinizin arkasındaki anlamı anlamasına yardımcı olur.
Büyük veritabanları için her şeyi el ile tanımlamanıza bile gerek yok. Şema modunu auto olarak ayarlayın ve LaraGrep doğrudan information_schema ile okuyarak tablo ve sütun yorumlarını açıklama olarak çeker.
Gerçek Kullanım Senaryoları
Gerçek Kullanım Senaryoları
İstemci projeleri için: Müşterinin “Geçen ay 3’ten fazla sipariş veren ama bu hafta giriş yapmayan tüm kullanıcıları göster” dediği bir admin paneli teslim ettiğinizi hayal edin. Anlık cevap. Özel rapor sayfası yok. Jira bile yok. Beklemek yok.
Kendi SaaS projeniz için: Gece yarısı bir faturalama sorununu gideriyorsunuz. Beş tabloyu birleştirmek yerine, “Son 48 saatte başarısız bir ödemesi olan ve aktif bir aboneliği olan Pro planındaki kullanıcılar kimler?” diye soruyorsunuz. LaraGrep, sizin için birleştirme ve filtrelemeleri hallediyor.
Sayılarınızı anlamak için: Veritabanı olan fakat doğru bir şekilde sorgulamak için her zaman zamana sahip olmayan teknik kurucu adayları. “MRR’m nedir?” “Bu çeyrekteki kayıp oranım nedir?” “Organik ve ücretli kullanıcılar arasındaki ilk satın alma süresi nasıl karşılaştırılıyor?” Bu soruların her biri her seferinde 20 dakikalık SQL çağırmamayı gerektirmelidir.
Rapor oluşturmak için: LaraGrep, yapay zekanın tüm akıl yürütmesini tek bir optimize edilmiş SEÇ olup döndürmesi için bir sorgu dışa aktarma moduna sahiptir. Limit yok, bellek kısıtlaması yok. O sorguyu istediğiniz şekilde çalıştırırsınız: cursor() ile akış sağlama, chunk() ile grup işleme, Laravel Excel’e aktarma. Yapay zeka düşünmeyi halleder, siz de yürütmeyi kontrol edersiniz.
Tekrarlayan raporlar için: Tarife sistemi, her başarılı sorgu zincirini otomatik olarak kaydeder. Her Pazartesi soracağınız bir soru buldunuz mu? Tarife ile yeniden başlatın, yapay zeka tarih parametrelerini otomatik olarak ayarlayacaktır. Bunu bir zamanlanmış işe bağlayın ve tek bir panel oluşturmadan otomatik raporlama yaparsınız.
Ollama ile Yerel Tutun
Ollama ile Yerel Tutun
Her proje veritabanı şemalarını dış API’lere gönderemez. Sağlık, finans, devlet sözleşmeleri gibi konular; her şeyi yerinde tutmak için geçerli nedenler vardır.
LaraGrep, kutudan çıktığı gibi Ollama ile çalışır. Yerel örneğinize yönlendirin, bir model seçin ve tüm sorgular makinenizde kalır. Hiçbir veri ağınızı terk etmez. Kurulum yalnızca üç ortam değişkenidir:
LARAGREP_PROVIDER=openai
LARAGREP_API_KEY=ollama
LARAGREP_BASE_URL=http://localhost:11434/v1/chat/completions
LARAGREP_MODEL=qwen3-coder:30b
Yerel modeller, karmaşık çok adımlı akıl yürütmeler için GPT-4o veya Claude’dan daha az yetenekli olabilir. Ancak basit sorgular için — sayımlar, toplamalar, filtrelenmiş aramalar — yeterince iyi çalışırlar. Ve hassas ortamlar için “yerel olarak iyi yeterli”, “bulutta mükemmel” olmaktan iyidir.
Güvenli Tasarım
Güvenli Tasarım
Yapay zekanın SQL yazmasına izin vermek tehlikeli görünüyor ve bu öğeye nasıl yapıldığını öğrenmek gerekir. LaraGrep titiz bir yaklaşım benimser:
Yalnızca SELECT sorguları izin verilir. Herhangi bir değişiklik denemesi, veritabanına ulaşmadan önce reddedilir. Tüm değerler, kullanıcı girdisini ham SQL’ye dahil etmeden parametreli bağlamalar kullanır. Tüm tablo referansları, tanımladığınız şemaya karşı doğrulanır — yapay zeka, hiç açmadığınız tablolara sorgu gönderemez. Yavaş sorguları veritabanınızı kilitlemeden önce öldürmek için ayarlanabilir bir yürütme zaman aşımı vardır. Ve ajan döngüsü, kontrolsüz API maliyetlerinden kaçınmak için bir maksimum iterasyon sayısıyla sınırlandırılmıştır.
Bu, sıfır risk oluşturmaz. Hala veri erişim izinlerini veriyorsunuz, bu nedenle son noktayı kimlik doğrulama middleware ile korumak şarttır. Ancak tehlike yüzeyi, birine bir veritabanı GUI vermekten önemli ölçüde daha küçüktür.
Başlarken
Başlarken
Eğer Laravel 10+ bir uygulamanız ve bir API anahtarınız (veya Ollama) varsa, beş dakika içinde çalışmaya başlayabilirsiniz:
composer require behindsolution/laragrep
php artisan vendor:publish --tag=laragrep-config
php artisan migrate
Tablolarınızı konfigürasyonda tanımlayın, API anahtarınızı .env dosyasında ayarlayın ve bir POST sorgusu gönderin:
curl -X POST http://localhost/laragrep \
-H "Content-Type: application/json" \
-d '{"question": "Bu hafta kaç kullanıcı kaydoldu?"}'
Hepsi bu kadar. Yanıt, doğal dil özetinin yanı sıra, yapay zekanın çalıştırdığı her sorgu gösteren tam bir hata ayıklama izi ile geri gelir.
Projeleriniz İçin Ne Anlama Geliyor
Projeleriniz İçin Ne Anlama Geliyor
Buradaki değişim, aslında yapay zekanın SQL yazması hakkında değil. Veritabanı bilgisinin, ihtiyaç duyduğunuz şeyi kelimelerle tarif edebilen herkes için erişilebilir hale getirilmesidir. Geliştirici, şemayı, güvenliği ve altyapıyı kontrol etmeye devam eder. Ancak cevap almanın zorluğu “SQL ve şemayı bil” den “ne öğrenmek istediğini bil” seviyesine düşer.
Müşteri projeleri sunan ajanslar için bu, haftalarca panel geliştirme gerektirmeyen anında değer katan bir özellikdir. SaaS geliştiricileri için, her seferinde bir SQL istemcisine geçmeden veri ile doğrudan ilişkide kalmanın bir yolu. Teknik bir paydaş olmadan ekipler için, geliştiriciyi rahatsız etmenin bir nedeni daha ortadan kalkar.
Veri her zaman oradaydı. Şimdi ona ulaşmak daha kolay.
LaraGrep açık kaynak olup GitHub’da mevcuttur:
github.com/behindSolution/laragrep
Yıldızlar, sorunlar ve çekme istekleri hoş karşılanır. Projelerinizde kullanıyorsanız, deneyimleriniz hakkında bilgi almak isterim.
Kaynak: Orijinal Makale


