Bir AI chat API’si üzerine temel bir frontend inşa etmek artık oldukça kolay olsa da, gerçekten kullanıcıların karmaşık, kişisel verilerini anlayan bir sistem geliştirmek çok daha zorlayıcıdır. Kan şekeri seviyeleri, özel kalori yakımları, gerçek diyet sınırları gibi bilgileri dikkate almak gerekir; bunlar sadece genel sağlık tavsiyeleriyle geçiştirilemez.
Bu, çözmek istediğim bir bulmacaydı. Acara Plate adında bir projeyi açık kaynak olarak geliştirdim; hedefim kişiselleştirilmiş beslenme sunan bir platform oluşturmaktı. “Sebzelerinizi yiyin” tavsiyesinden öteye geçmek ve bir kişinin benzersiz vücut verileriyle gerçekten çalışabilen bir asistan yaratmak istiyordum. Tek bir dezavantajım vardı; haftalarca altyapı yönetimiyle boğulmak istemiyordum.
Laravel kullanarak bu projeyi geliştirdim ve bir açıdan vektör veritabanı ihtiyacını tamamen bypass ettim. Beklentilerimin ötesinde bir sonuç aldım.
İlk Engelleme: AI’nin Yanlış Bilgi Üretmesini Önlemek
İlk Engelleme: AI’nin Yanlış Bilgi Üretmesini Önlemek
Sağlık alanında inşa etmenin en korkutucu kısmı, bir dil modelinin birinin durumu üzerinde olumsuz etkisi olabilecek yiyecek önerileri uydurmasına izin vermektir. Yanıltıcı bilgiler gerçek bir risk taşıyor. Çözümüm, AI’yi yapılandırılmış bir çerçeve içine koymak oldu. Arkadaşça bir sohbet yürütmek yerine, yazılımım yanıtları belirli ve sert bir formata dönüştürüyor. AI’den yalnızca benim belirlediğim JSON nesne formatında veri döndürmesini istiyorum. Ardından, Laravel backend’im, bir matematik öğretmeni gibi, herhangi bir öneri kullanıcıya ulaşmadan önce her kalori ve gramı kontrol ediyor. Sayılar tutmuyorsa, sistem o planı reddediyor ve AI’ye tekrar denemesini istiyor. Bu, yaratıcı motorun kırılmaz kurallarla yönlendirilmesini sağlamanın bir yolu.
Altyapı İhtiyacını Azaltma: Vektör Veritabanı Gerekmez
Altyapı İhtiyacını Azaltma: Vektör Veritabanı Gerekmez
AI’nin faydalı tavsiyeler verebilmesi için büyük bir bilgi yığınına erişmesi gerekir; bu durumda, tüm USDA gıda veritabanısı gibi. Geleneksel yaklaşım oldukça karmaşık: devasa veri setini parçalarına ayırırsınız, bir vektör veritabanı kurarsınız ve bir sürü veri alma mantığı yazarsınız. Çok fazla iş. Benim yaptığım ise gizli bir kapı bulmak gibiydi. Gemini’nin File Search adında yerleşik bir özelliği var. Ben de devasa USDA dosyalarını doğrudan Gemini ortamına yükledim. Model, veriyi kendi anlayışıyla saklıyor ve üzerinden araştırma yapabiliyor. Kullanıcı demir açısından zengin yiyecekler sorduğunda, AI, sahip olduğu bilgiler arasında tarama yapıyor. Bu durumun büyük bir avantajı var: Bir veritabanı yönetmem gerekmiyor, tüm kurulum bir öğleden sonrayı aldı ve AI, verilerin tam ilişkisini görerek daha iyi bir bağlam sahibi oluyor.
Özel Verilerin Gerçekten Gizli Kalmasını Sağlamak
Özel Verilerin Gerçekten Gizli Kalmasını Sağlamak
Kişisel sağlık verileriyle çalışırken gizlilik bir özellik değil, bir temeldir. Açık kaynak bir proje olmasına rağmen, bu güvenliği sağlamak zorundaydım. Mimari, veri izolasyonunu garanti ediyor, böylece kullanıcılar yalnızca kendi bilgilerini görebiliyor. Ancak önemli bir karar, kullanıcıya seçim hakkı vermekti. Hangi AI sağlayıcısını kullanacaklarını ya da kendi API anahtarlarını sağlama imkanı sunarak hassas detayların gönderildiği yer üzerinde kullanıcıların kontrol sahibi olmalarını sağladım. Arayüz, Inertia ve React (Typescript) kullanılarak bir Progressive Web App olarak inşa edildi; bu da deneyimi daha akıcı hale getiriyor.
Sonuç
Bu süreç, karmaşık bir kurulumun daha akıllı ve güvenli bir şey inşa etmek için gerekli olmadığını gösterdi. Bazen, daha basit bir yolla yeni bir yeteneği kullanmak, çok işten kurtulmanızı sağlar. Küçük bir ekip veya tek bir geliştirici, altyapı labirentinde kaybolmadan yüksek riskli bir AI aracı oluşturabileceğini kanıtlamak istedim.
Kod parçalarını nasıl bir araya getirdiğimi merak ediyorsanız, GitHub deposuna göz atabilir veya canlı demoyu deneyebilirsiniz. AI ile inşa etmenin diğer yollarını bulduysanız, bunları duymaktan memnuniyet duyarım.
Deneyin
Bu projeyi, geliştiricilerin sağlık gibi karmaşık alanlara AI’yi nasıl entegre edeceklerini öğrenmeleri için oluşturdum. Kodun özellikle PrismPHP entegrasyonunun prompt engineering nasıl ele aldığını görmek için göz atmanızı isterim.
📂 GitHub Repo: github.com/acara-app/plate
🚀 Live Demo: plate.acara.app
Eğer bu bilgiler faydalı olduysa, depoya bir yıldız bırakmayı unutmayın! ⭐
Kaynak: Orijinal Makale


