Firebase Genkit, akışlarınızı Firebase'e dağıtmanıza yardımcı olan bir eklenti içerir Cloud Functions. Örnek olarak bu sayfa size, Google Yapay Zeka'nın örnek akışını Firebase'e dağıtıyoruz.
Bir akışı Cloud Functions işlevi olarak dağıtma
Gerekli araçları yükleyin:
Node.js sürüm 20 veya üstünü kullandığınızdan emin olun (
node --version
onay işareti) kaldırın.Firebase CLI'ı yükleyin.
Firebase konsolunu kullanarak yeni bir Firebase projesi oluşturun veya mevcut bir projeyi seçin.
Projeyi, Cloud dağıtımı için gerekli olan Blaze planına yükseltin İşlevler.
Firebase CLI ile giriş yapın:
firebase login
firebase login --reauth # alternative, if necessary
firebase login --no-localhost # if running in a remote shell
Yeni bir proje dizini oluşturun:
export PROJECT_ROOT=~/tmp/genkit-firebase-project1
mkdir -p $PROJECT_ROOT
Klasördeki Genkit ile bir Firebase projesi başlatın:
cd $PROJECT_ROOT
firebase init genkit
- Daha önce oluşturduğunuz projeyi seçin.
- Kullanmak istediğiniz model sağlayıcıyı seçin.
Kalan istemler için varsayılanları kabul edin.
genkit
aracı, kendi AI akışlarınızı geliştirmeye başlamanıza yardımcı olacak birkaç örnek kaynak dosyası ekleyebilirsiniz. Ancak bu eğiticinin geri kalanında yalnızca örnek akışı dağıtacaksınız.API kimlik bilgilerini Cloud Functions işlevinizde kullanılabilir hale getirin. Aşağıdakilerden birini yapın: seçtiğiniz model sağlayıcıya bağlı olarak aşağıdaki adımları uygulayın:
Gemini (Google Yapay Zeka)
Google Yapay Zeka'nın bölgenizde kullanılabildiğinden emin olun.
Şu öğe için bir API anahtarı oluşturun: Gemini API, Google AI Studio'yu kullanıyor.
API anahtarınızı Cloud Secret Manager'da depolayın:
firebase functions:secrets:set GOOGLE_GENAI_API_KEY
Bu adım, API anahtarınızın yanlışlıkla sızdırılmasını önlemek için önemlidir. Bu izin, sayaçlı olabilecek bir hizmete erişim izni verir.
Hassas yapılandırma bilgilerini depolama ve bunlara erişme başlıklı makaleyi inceleyin. inceleyin.
src/index.ts
dosyasını düzenleyin ve mevcut içe aktarma işlemlerinden sonra aşağıdakileri ekleyin:import {defineSecret} from "firebase-functions/params"; const googleAIapiKey = defineSecret("GOOGLE_GENAI_API_KEY");
Ardından, akış tanımında, Cloud Functions işlevinin şu gizli anahtar değerine erişin:
export const menuSuggestionFlow = onFlow( { name: "menuSuggestionFlow", // ... httpsOptions: { secrets: [googleAIapiKey], // Add this line. }, }, async (subject) => { // ... } );
Artık bu işlevi dağıttığınızda API anahtarınız Cloud Secret Manager'da mevcuttur ve Cloud Functions üzerinden kullanılabilir. bahsedeceğim.
Gemini (Vertex AI)
Cloud Console'da Vertex AI API'yi etkinleştirme .
IAM'de sayfasında, Varsayılan Compute hizmet hesabına Vertex AI Kullanıcısı rolüne sahip olmanız gerekir.
Bu eğitim için ayarlamanız gereken tek sır model içindir ancak genel olarak her hizmet için benzer bir işlem yapmanız gerekir. size yardımcı olur.
Akışınıza bir web uygulamasından erişecekseniz (bunu sonraki bölümde)
httpsOptions
parametresinde bir CORS politikası ayarlayın:export const menuSuggestionFlow = onFlow( { name: "menuSuggestionFlow", // ... httpsOptions: { cors: true, // Add this line. }, }, async (subject) => { // ... } );
Üretim uygulamaları için muhtemelen daha kısıtlayıcı bir politika isteyebilirsiniz ancak sağlayacağız.
İsteğe bağlı: Geliştirici kullanıcı arayüzündeki adımlarınızı deneyin:
API kimlik bilgilerini yerel olarak kullanılabilir hale getirin. Aşağıdakilerden birini yapın: seçtiğiniz model sağlayıcıya bağlı olarak:
Gemini (Google Yapay Zeka)
GOOGLE_GENAI_API_KEY
ortam değişkenini anahtarınıza ayarlayın:export GOOGLE_GENAI_API_KEY=<your API key>
Gemini (Vertex AI)
Bazı ek ortam değişkenleri ayarlayın ve Kurulum için
gcloud
aracı uygulama varsayılan kimlik bilgileri yerel olarak:export GCLOUD_PROJECT=<your project ID>
export GCLOUD_LOCATION=us-central1
gcloud auth application-default login
Kullanıcı arayüzünü başlatın:
cd $PROJECT_ROOT/functions
genkit start
Geliştiricinin kullanıcı arayüzünde (http://localhost:4000/) akışı çalıştırın:
menuSuggestionFlow'u tıklayın.
Input JSON sekmesinde model için bir konu sağlayın:
"AI app developers"
Auth JSON sekmesinde, simüle edilmiş bir kimlik doğrulama nesnesi sağlayın:
{ "uid": 0, "email_verified": true }
Çalıştır'ı tıklayın.
Şimdiye kadar her şey beklendiği gibi çalışıyorsa akışı dağıtabilirsiniz:
cd $PROJECT_ROOT
firebase deploy --only functions
Akışı bir Cloud Functions işlevi olarak dağıttınız. Ancak bu işlemi
akış nedeniyle dağıtıldığı uç noktanıza curl
veya benzeri bir
izin verilmez. Güvenli bir şekilde nasıl yapabileceklerinizi öğrenmek için sonraki bölüme geçin.
akışa erişebilirsiniz.
Dağıtılan akışı deneyin
Dağıttığınız her akışın bir yetkilendirme politikası belirlemesi son derece önemlidir. Yok: Birincisi, pahalı olabilecek üretken yapay zeka akışlarınızı herkes.
Varsayılan örnek akışı, aşağıdaki gibi bir yetkilendirme politikasına sahiptir:
firebaseAuth((user) => {
if (!user.email_verified) {
throw new Error('Verified email required to run flow');
}
});
Bu politika, firebaseAuth()
yardımcısını kullanarak yalnızca kayıtlı kullanıcılara erişim izni verir
uygulamanızın kullanıcıları doğrulanmış e-posta adresleriyle İstemci tarafında ise
Authorization: Bearer
başlığını, uygun bir Firebase kimliği jetonuna ayarlayın.
politikanızı ihlal eder. Cloud Functions istemci SDK'ları
çağrılabilir işlev
birçok yöntem var.
Akış uç noktanızı denemek için aşağıdaki minimum örnek web'i dağıtabilirsiniz uygulama:
Proje ayarları bölümünde, yeni bir web uygulaması ekleyin. Hosting'i de ayarladınız.
Kimlik Doğrulama bölümünde "Google" sağlayıcısını etkinleştirin. inceleyeceğiz.
Proje dizininizde, dağıtacağınız Firebase Hosting'i ayarlayın örnek uygulama:
cd $PROJECT_ROOT
firebase init hosting
Tüm istemler için varsayılanları kabul edin.
public/index.html
değerini şununla değiştirin:<!doctype html> <html> <head> <title>Genkit demo</title> </head> <body> <div id="signin" hidden> <button id="signinBtn">Sign in with Google</button> </div> <div id="callGenkit" hidden> Subject: <input type="text" id="subject" /> <button id="suggestMenuItem">Suggest a menu theme</button> <p id="menuItem"></p> </div> <script type="module"> import { initializeApp } from 'https://www.gstatic.com/firebasejs/10.10.0/firebase-app.js'; import { getAuth, onAuthStateChanged, GoogleAuthProvider, signInWithPopup, } from 'https://www.gstatic.com/firebasejs/10.10.0/firebase-auth.js'; import { getFunctions, httpsCallable, } from 'https://www.gstatic.com/firebasejs/10.10.0/firebase-functions.js'; const firebaseConfig = await fetch('/__/firebase/init.json'); initializeApp(await firebaseConfig.json()); async function generateMenuItem() { const menuSuggestionFlow = httpsCallable( getFunctions(), 'menuSuggestionFlow' ); const subject = document.querySelector('#subject').value; const response = await menuSuggestionFlow(subject); document.querySelector('#menuItem').innerText = response.data; } function signIn() { signInWithPopup(getAuth(), new GoogleAuthProvider()); } document .querySelector('#signinBtn') .addEventListener('click', signIn); document .querySelector('#suggestMenuItem') .addEventListener('click', generateMenuItem); const signinEl = document.querySelector('#signin'); const genkitEl = document.querySelector('#callGenkit'); onAuthStateChanged(getAuth(), (user) => { if (!user) { signinEl.hidden = false; genkitEl.hidden = true; } else { signinEl.hidden = true; genkitEl.hidden = false; } }); </script> </body> </html>
Web uygulamasını ve Cloud Functions işlevini dağıtın:
cd $PROJECT_ROOT
firebase deploy
deploy
komutuyla yazdırılan URL'yi ziyaret ederek web uygulamasını açın. Uygulama
bir Google hesabıyla oturum açmanızı gerektirir. Bu işlemin ardından
uç nokta istekleri.
Firebase Local Emulator Suite kullanarak geliştirme
Firebase, yerel geliştirme için bir emülatör paketi sunar. Bu paketi Genkit ile kullanabilirsiniz.
Genkit'i Firebase Emulator Suite ile kullanmak için Firebase emülatörlerini şu şekilde başlatın:
GENKIT_ENV=dev firebase emulators:start --inspect-functions
Bu işlem, kodunuzu emülatörde çalıştırır ve Genkit çerçevesini geliştirme modunda çalıştırır. Bu durumda, Genkit yansıma API'si başlatılır ve kullanıma sunulur (ancak geliştirici kullanıcı arayüzü gösterilmez).
Ardından, Firebase Emulator'da çalışan kodunuza bağlamak için --attach
seçeneğiyle Genkit Dev kullanıcı arayüzünü başlatın:
genkit start --attach http://localhost:3100 --port 4001
Yeni geliştirilenler arayüzünde Firestore'daki izleri görmek için Denetle sekmesine gidip "Dev/Prod" seçeneğini açık duruma getirebilirsiniz anahtarı. "Üretim" seçeneğine ayarlandığında firestore'dan izler yükleyecek.