Yükleniyor...

Firebase AI ve Machine Learning: Adım Adım Uygulama Rehberi

Yazar: Burak Balkı | Kategori: AI & Machine Learning | Okuma Süresi: 10 dk

Firebase ML ve Vertex AI kullanarak modern uygulamalara yapay zeka özelliklerinin nasıl entegre edileceğini anlatan kapsamlı teknik rehber. Görüntü işleme, m...

## Firebase AI ve Machine Learning Ekosistemine Giriş Modern uygulama geliştirme süreçlerinde yapay zeka (AI) ve makine öğrenimi (ML), kullanıcı deneyimini kişiselleştirmek ve otomatize etmek için vazgeçilmez bileşenler haline gelmiştir. **Firebase**, Google Cloud'un güçlü altyapısını geliştirici dostu bir arayüzle sunarak, karmaşık ML modellerini mobil ve web uygulamalarına entegre etmeyi kolaylaştırır. Bu rehberde, Firebase'in sunduğu AI yeteneklerini, **Vertex AI** entegrasyonundan **Cloud Firestore Vector Search** özelliklerine kadar adım adım inceleyeceğiz. Firebase ML, geliştiricilere iki temel yol sunar: Cihaz üzerinde (on-device) çalışan hafif modeller ve bulut tabanlı (cloud-based) yüksek performanslı modeller. Bu esneklik, düşük gecikme süresi gerektiren işlemler ile yüksek işlem gücü gerektiren karmaşık analizler arasında denge kurmanıza olanak tanır. ## Firebase Projesi Oluşturma ve Yapılandırma AI özelliklerini kullanmaya başlamadan önce, projenizin Firebase CLI ve gerekli SDK'lar ile yapılandırılması gerekir. İlk adım olarak Firebase konsolu üzerinden bir proje oluşturun ve yerel ortamınızda Firebase'i başlatın. ```bash # Firebase CLI yükleme npm install -g firebase-tools # Firebase girişi ve proje başlatma firebase login firebase init ``` Projenizi başlattıktan sonra, web veya mobil platformunuza uygun SDK'yı ekleyin. Aşağıdaki örnek, bir web projesi için temel konfigürasyonu göstermektedir: ```javascript import { initializeApp } from "firebase/app"; import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview"; const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "your-app.firebaseapp.com", projectId: "your-app-id", storageBucket: "your-app.appspot.com", messagingSenderId: "sender-id", appId: "app-id" }; const app = initializeApp(firebaseConfig); ``` ## Firebase ML Kit: Cihaz Üzerinde İşleme **ML Kit**, ağ bağlantısına ihtiyaç duymadan cihaz üzerinde çalışan hazır modeller sunar. Bu, özellikle gizlilik odaklı uygulamalar ve anlık geri bildirim gerektiren (örneğin barkod tarama veya yüz algılama) senaryolar için idealdir. ### Görüntü Etiketleme (Image Labeling) Bir görseldeki nesneleri tanımlamak için ML Kit'in görüntü etiketleme özelliğini kullanabiliriz. İşte temel bir implementasyon: ```javascript // Not: ML Kit genellikle mobil SDK'larda (Android/iOS) daha yaygındır. // Web tarafında benzer işlevler için Cloud Vision API kullanılır. import { getFunctions, httpsCallable } from "firebase/functions"; const functions = getFunctions(app); const labelImage = httpsCallable(functions, 'labelImage'); labelImage({ imageUri: 'gs://bucket/image.jpg' }) .then((result) => { const labels = result.data.labels; labels.forEach(label => console.log(label.description, label.score)); }); ``` ## Vertex AI for Firebase: Üretken Yapay Zeka Google'ın en gelişmiş modelleri olan **Gemini**, artık Firebase üzerinden doğrudan erişilebilirdir. **Vertex AI for Firebase**, istemci tarafında (client-side) güvenli bir şekilde üretken AI modellerini çağırmanıza imkan tanır. ### Gemini Pro ile Metin Oluşturma Uygulamanıza bir sohbet botu veya içerik oluşturucu eklemek için aşağıdaki yapıyı kullanabilirsiniz: ```javascript const vertexAI = getVertexAI(app); const model = getGenerativeModel(vertexAI, { model: "gemini-1.5-flash" }); async function generateContent(prompt) { const result = await model.generateContent(prompt); const response = await result.response; const text = response.text(); console.log(text); } generateContent("Firebase ve AI entegrasyonunun avantajlarını 3 maddede açıkla."); ``` ## Firestore Vector Search: AI Destekli Arama Klasik anahtar kelime araması yerine, anlam bazlı arama yapmak için **Vector Search** kullanılır. Firestore, metinleri (embeddings) vektör formatında saklayarak benzerlik araması yapmanıza olanak tanır. ### Vektör Verisi Ekleme ve Sorgulama Öncelikle verilerinizi vektör haline getirmeli ve Firestore'a kaydetmelisiniz: ```javascript import { getFirestore, doc, setDoc, vectorValue } from "firebase/firestore"; const db = getFirestore(app); async function saveDocumentWithVector(id, content, vectorArray) { await setDoc(doc(db, "documents", id), { text: content, embedding: vectorValue(vectorArray) // Vektör dizisi }); } ``` Sorgulama aşamasında `findNearest` metodunu kullanarak en yakın sonuçları getirebiliriz: ```javascript import { query, collection, orderBy, limit } from "firebase/firestore"; const documentsRef = collection(db, "documents"); const q = query( documentsRef, orderBy("embedding", "vector_distance", { referenceValue: vectorValue(queryVector), distanceMeasure: "COSINE" }), limit(5) ); ``` ## Firebase Cloud Functions ile AI İş Akışları AI işlemleri genellikle yoğun kaynak tüketir. Bu işlemleri istemci tarafında yapmak yerine **Cloud Functions** üzerinde asenkron olarak çalıştırmak performansı artırır. ### Otomatik Metin Çevirisi Örneği Firestore'a yeni bir belge eklendiğinde tetiklenen ve metni otomatik çeviren bir fonksiyon: ```typescript import { onDocumentCreated } from "firebase-functions/v2/firestore"; import { TranslationServiceClient } from "@google-cloud/translate"; const translateClient = new TranslationServiceClient(); export const translateComment = onDocumentCreated("comments/{commentId}", async (event) => { const data = event.data?.data(); const text = data?.text; const [response] = await translateClient.translateText({ parent: `projects/your-project-id/locations/global`, contents: [text], mimeType: 'text/plain', targetLanguageCode: 'en', }); return event.data?.ref.update({ translatedText: response.translations?.[0].translatedText }); }); ``` ## Firebase Extensions ile AI Otomasyonu Kod yazmadan AI özelliklerini entegre etmenin en hızlı yolu **Firebase Extensions** kullanmaktır. Popüler AI eklentileri şunlardır: | Eklenti Adı | İşlevi | Sağlayıcı | | :--- | :--- | :--- | | Multimodal Embeddings | Görsel ve metinleri vektöre dönüştürür | Google Cloud | | Language Tasks | Metin özetleme, çeviri ve duygu analizi | Vertex AI | | Image Captioning | Görsellere otomatik açıklama yazar | Vertex AI | | Semantic Search | Firestore'da anlam tabanlı arama sağlar | Google Cloud | ## Özel Machine Learning Modellerini Dağıtma Eğer kendi **TensorFlow Lite** modelinizi eğittiyseniz, bu modeli Firebase üzerinden dinamik olarak dağıtabilirsiniz. Bu, uygulama boyutunu küçültür ve modeli uygulama güncellemesi yapmadan güncellemenize olanak tanır. ```javascript // Model indirme ve başlatma örneği (Swift/Kotlin benzeri mantık) import FirebaseMLModelDownloader const conditions = ModelDownloadConditions(wifiRequired: true) ModelDownloader.modelDownloader().getModel(name: "my_custom_model", downloadType: .localModelUpdateInBackground, conditions: conditions) { result in // Model hazır } ``` ## Güvenlik ve Veri Gizliliği AI modellerine gönderilen verilerin güvenliği için **Firebase Security Rules** ve **App Check** kullanılmalıdır. Özellikle API anahtarlarının istemci tarafında kötüye kullanımını engellemek için App Check kritik öneme sahiptir. ```firestore service cloud.firestore { match /databases/{database}/documents { match /embeddings/{docId} { allow read: if request.auth != null; allow write: if false; // Sadece Admin SDK (Cloud Functions) yazabilir } } } ``` ## Performans Optimizasyonu ve Maliyet Yönetimi 1. **Önbelleğe Alma (Caching):** AI yanıtlarını Firestore veya Realtime Database üzerinde önbelleğe alarak tekrarlanan maliyetleri önleyin. 2. **Model Boyutu:** On-device modellerde `TFLite` kullanarak model boyutunu 5MB'ın altında tutmaya çalışın. 3. **Batch Processing:** Çoklu veri işlemlerini tek bir Cloud Function çağrısında birleştirin. 4. **Monitoring:** Google Cloud Console üzerinden API kotalarını ve harcamaları takip edin. ## Sık Yapılan Hatalar ve Çözüm Yolları * **Hata:** API anahtarının yetkisiz kullanımı. * **Çözüm:** Google Cloud Console üzerinden API anahtarını sadece Firebase servislerine kısıtlayın. * **Hata:** Cloud Functions zaman aşımı (Timeout). * **Çözüm:** AI işlemleri uzun sürdüğü için fonksiyon süresini `runWith({timeoutSeconds: 300})` ile artırın. * **Hata:** Yüksek faturalandırma. * **Çözüm:** Ücretsiz kota sınırlarını takip edin ve Vertex AI için `Flash` modellerini (daha ucuz) tercih edin. ## Sık Sorulan Sorular **1. Firebase ML tamamen ücretsiz mi?** Cihaz içi (on-device) özellikler ücretsizdir ancak Cloud tabanlı API'lar (Vertex AI, Vision API) belirli bir kotadan sonra ücrete tabidir. **2. Kendi modelimi Firebase'e yükleyebilir miyim?** Evet, TensorFlow Lite formatındaki özel modellerinizi Firebase Console üzerinden yükleyip uygulamalarınıza dağıtabilirsiniz. **3. Vertex AI ve ML Kit arasındaki fark nedir?** ML Kit hazır, cihaz içi çözümler sunar. Vertex AI ise Google'ın en güçlü bulut tabanlı üretken AI modellerine erişim sağlar. **4. İnternet olmadan AI özelliklerini kullanabilir miyim?** Sadece ML Kit'in on-device modelleri ve önceden indirilmiş özel TFLite modelleri çevrimdışı çalışabilir. **5. Verilerim AI modellerini eğitmek için kullanılıyor mu?** Vertex AI for Firebase kullanımında, verileriniz varsayılan olarak Google'ın temel modellerini eğitmek için kullanılmaz. ## Özet ve Sonuç Firebase, AI ve Machine Learning dünyasına girmek isteyen geliştiriciler için uçtan uca bir platform sunmaktadır. **Vertex AI** ile üretken yapay zeka entegrasyonu, **Firestore Vector Search** ile akıllı aramalar ve **ML Kit** ile cihaz içi hızlı çözümler oluşturmak artık her zamankinden daha kolay. Bu rehberdeki adımları takip ederek, uygulamanızı statik bir yapıdan dinamik ve akıllı bir deneyime dönüştürebilirsiniz.