1. Başlamadan önce
Bu codelab'de, üretken yapay zekayı uygulamanıza entegre etmek için Genkit'i kullanmayı öğreneceksiniz. Genkit, üretime hazır yapay zeka destekli uygulamalar oluşturmanıza, dağıtmanıza ve izlemenize yardımcı olan açık kaynaklı bir çerçevedir.
Genkit, uygulama geliştiriciler için tasarlanmıştır. Tanıdık kalıplar ve paradigmalarla güçlü yapay zeka özelliklerini uygulamalarınıza kolayca entegre etmenize yardımcı olur. Dünya genelinde milyonlarca geliştirici tarafından kullanılan araçları geliştirme konusundaki deneyimimizden yararlanarak Firebase ekibi tarafından geliştirilmiştir.
Ön koşullar
- Firestore, Node.js ve TypeScript hakkında bilgi sahibi olmak.
Neler öğreneceksiniz?
- Firestore'un gelişmiş vektör benzerliği arama özellikleriyle daha akıllı uygulamalar oluşturma
- Genkit'i kullanarak uygulamalarınızda üretken yapay zekayı nasıl pratik bir şekilde uygulayacağınızı öğrenin.
- Çözümünüzü dağıtıma ve entegrasyona hazırlayın.
Gerekenler
- Google Chrome gibi istediğiniz bir tarayıcı
- Kod düzenleyici ve terminal içeren bir geliştirme ortamı
- Firebase projenizin oluşturulması ve yönetilmesi için bir Google Hesabı
2. Kullanılan web uygulamasını ve bulut hizmetlerini inceleme
Bu bölümde, bu codelab ile oluşturacağınız web uygulamasını inceleyecek ve kullanacağınız bulut hizmetleri hakkında bilgi edineceksiniz.
Web uygulaması
Bu codelab'de, Pusula adlı bir uygulamanın kod tabanında çalışacaksınız. Bu uygulama, tatil planlama uygulamasıdır. Kullanıcılar bir varış noktası seçebilir, varış noktasındaki etkinliklere göz atabilir ve gezileri için bir seyahat planı oluşturabilir.
Bu codelab'de, uygulamanın ana sayfasıyla kullanıcı etkileşimini artırmayı amaçlayan iki yeni özelliği uygulayacaksınız. Her iki özellik de üretken yapay zeka tarafından desteklenir:
- Uygulama şu anda statik bir hedef listesi gösteriyor. Bu değeri dinamik hale getireceksiniz.
- Kullanıcı bağlılığını artırmak için otomatik olarak doldurulmuş bir seyahat planı uygulayacaksınız.
Kullanılan hizmetler
Bu codelab'de birçok Firebase ve Cloud hizmeti ile özelliğini kullanacaksınız. Bunların başlangıç kodunun çoğu sizin için sağlanmıştır. Aşağıdaki tabloda, kullanacağınız hizmetler ve bunları kullanma nedenleriniz yer almaktadır.
Hizmet | Kullanım nedeni |
Üretken yapay zekayı Node.js / Next.js uygulamasına dahil etmek için Genkit'i kullanıyorsunuz. | |
Verileri Cloud Firestore'da depolarsınız. Bu veriler daha sonra vektör benzerliği araması için kullanılır. | |
Yapay zeka özelliklerinize güç katmak için Vertex AI'daki temel modelleri (ör. Gemini) kullanırsınız. | |
Dinamik Next.js web uygulamanızı (GitHub deposuna bağlı) sunmak için isteğe bağlı olarak yeni ve kolaylaştırılmış Firebase App Hosting'i kullanabilirsiniz. |
3. Geliştirme ortamınızı kurma
Node.js sürümünüzü doğrulama
- Terminalinizde Node.js'in 20.0.0 veya sonraki bir sürümünün yüklü olduğunu doğrulayın:
node -v
- Node.js 20.0.0 veya daha yeni bir sürümünüz yoksa en son LTS sürümünü indirip yükleyin.
Codelab'in kaynak kodunu alma
GitHub hesabınız varsa:
- github.com/FirebaseExtended/codelab-ai-genkit-rag adresindeki şablonumuzu kullanarak yeni bir depo oluşturun.
- Yeni oluşturduğunuz codelab'in GitHub deposunun yerel bir klonunu oluşturun:
git clone https://github.com/<your-github-handle>/codelab-ai-genkit-rag
Git yüklü değilse veya yeni bir depo oluşturmak istemiyorsanız:
GitHub deposunu ZIP dosyası olarak indirin.
Klasör yapısını inceleme
Yerel makinenizde klonlanmış depoyu bulun ve klasör yapısını inceleyin:
Klasör | Açıklama |
| Firestore koleksiyonunuzu hızlıca önceden doldurmak için yardımcı komut satırı aracı |
*diğer her şey | Next.js web uygulaması kodu |
Kök klasörde, basitleştirilmiş talimatlar kullanarak web uygulamasını çalıştırmak için hızlı başlangıç sunan bir README.md
dosyası bulunur. Ancak ilk kez öğreniyorsanız en kapsamlı talimatları içerdiğinden bu codelab'i (hızlı başlangıç yerine) tamamlamanız gerekir.
Bu codelab'de belirtilen talimatlara göre kodu doğru şekilde uyguladığınızdan emin değilseniz çözüm kodunu end
git dalında bulabilirsiniz.
Firebase CLI'yı yükleme
- Firebase CLI'nin yüklü olduğunu ve sürümünün 13.6 veya daha yeni olduğunu doğrulayın:
firebase --version
- Firebase CLI yüklüyse ancak sürümü 13.6 veya daha yüksek değilse güncelleyin:
npm update -g firebase-tools
- Firebase CLI yüklü değilse yükleyin:
npm install -g firebase-tools
İzin hataları nedeniyle Firebase CLI'yı güncelleyemiyor veya yükleyemiyorsanız npm belgelerine bakın ya da başka bir yükleme seçeneği kullanın.
Firebase'e giriş yapın.
- Terminalinizde Firebase'de oturum açın:
Terminalinizde Firebase'e zaten giriş yaptığınız belirtiliyorsa bu codelab'in Firebase projenizi ayarlama bölümüne geçebilirsiniz.firebase login
- Terminalinizde, Firebase'in veri toplamasını isteyip istemediğinize bağlı olarak
Y
veyaN
girin. (Bu codelab için her iki seçenek de kullanılabilir) - Tarayıcınızda Google Hesabınızı seçin ve İzin ver'i tıklayın.
Google Cloud'un gcloud CLI'sini yükleme
- gcloud CLI'yı yükleyin.
- Terminalinizde Google Cloud'a giriş yapın:
gcloud auth login
4. Firebase projenizi oluşturma
Bu bölümde, bir Firebase projesi oluşturacak ve bu projede bir Firebase web uygulaması kaydedeceksiniz. Ayrıca, bu codelab'in ilerleyen bölümlerinde örnek web uygulaması tarafından kullanılan birkaç hizmeti de etkinleştireceksiniz.
Bu bölümdeki tüm adımlar Firebase konsolunda gerçekleştirilir.
Firebase projesi oluşturma
- Önceki adımda kullandığınız Google Hesabı ile Firebase konsolunda oturum açın.
- Yeni bir proje oluşturmak için düğmeyi tıklayın ve ardından bir proje adı girin (örneğin,
Compass Codelab
).
- Devam'ı tıklayın.
- İstenirse Firebase şartlarını inceleyip kabul edin ve Devam'ı tıklayın.
- (İsteğe bağlı) Firebase konsolunda yapay zeka yardımını etkinleştirin ("Firebase'de Gemini" olarak adlandırılır).
- Bu codelab için Google Analytics'e ihtiyacınız yoktur. Bu nedenle, Google Analytics seçeneğini devre dışı bırakın.
- Proje oluştur'u tıklayın, projenizin hazırlanmasını bekleyin ve ardından Devam'ı tıklayın.
Firebase projenize web uygulaması ekleme
- Firebase projenizde Proje Genel Bakış ekranına gidin ve
Web'i tıklayın.
- Uygulama takma adı metin kutusuna
My Compass Codelab App
gibi hatırlanabilir bir uygulama takma adı girin. Bu codelab'in son adımında isteğe bağlı olarak bir barındırma hizmeti ayarlayacağınız için Firebase Hosting'i ayarlama onay kutusunu işaretlemeden bırakabilirsiniz. - Uygulamayı kaydet > Konsola git'i tıklayın.
Güzel! Yeni Firebase projenize bir web uygulaması kaydettiniz.
Firebase fiyatlandırma planınızı yükseltme
Genkit ve Vertex AI'ı (ve bunların temelini oluşturan bulut hizmetlerini) kullanmak için Firebase projenizin kullandıkça öde (Blaze) fiyatlandırma planında olması gerekir. Bu da projenin bir Cloud Billing hesabına bağlı olduğu anlamına gelir.
- Cloud Faturalandırma hesabı için kredi kartı gibi bir ödeme yöntemi gerekir.
- Firebase ve Google Cloud'u yeni kullanmaya başladıysanız 300 ABD doları değerinde kredi ve ücretsiz deneme Cloud Faturalandırma hesabı için uygun olup olmadığınızı kontrol edin.
- Bu codelab'i bir etkinliğin parçası olarak yapıyorsanız düzenleyicinize Cloud kredisi olup olmadığını sorun.
Vertex AI fiyatlandırması hakkında daha fazla bilgi edinin.
Projenizi Blaze planına yükseltmek için şu adımları uygulayın:
- Firebase konsolunda planınızı yükseltmeyi seçin.
- Blaze planını seçin. Bir Cloud Faturalandırma hesabını projenize bağlamak için ekrandaki talimatları uygulayın.
Bu yükseltme kapsamında bir Cloud Faturalandırma hesabı oluşturmanız gerekiyorsa yükseltmeyi tamamlamak için Firebase Console'daki yükseltme akışına geri dönmeniz gerekebilir.
Cloud Firestore'u ayarlama
- Firebase konsolunun sol panelinde Build'i (Oluştur) genişletin ve Firestore database'i (Firestore veritabanı) seçin.
- Create database'i (Veritabanı oluştur) tıklayın.
- Veritabanı Kimliği'ni
(default)
olarak bırakın. - Veritabanınız için bir konum seçin ve Sonraki'yi tıklayın.
Gerçek bir uygulama için kullanıcılarınıza yakın bir konum seçmeniz gerekir. - Test modunda başlat'ı tıklayın. Güvenlik kurallarıyla ilgili sorumluluk reddi beyanını okuyun.
Veritabanınıza güvenlik kuralları eklemeden uygulamayı herkese açık olarak dağıtmayın veya kullanıma sunmayın. - Oluştur'u tıklayın.
Vertex AI'ı etkinleştirme
Vertex AI'ı ayarlamak için gcloud
CLI'ı kullanın. Bu sayfadaki tüm komutlarda YOUR_PROJECT_ID
yerine Firebase projenizin kimliğini yazdığınızdan emin olun.
- Terminalinizde Google Cloud SDK'nın varsayılan projesini ayarlayın:
gcloud config set project YOUR_PROJECT_ID
- "UYARI: Etkin projeniz, yerel Application Default Credentials dosyanızdaki kota projesiyle eşleşmiyor. Bu durum, beklenmedik kota sorunlarına yol açabilir." mesajını görürseniz kotayı ayarlamak için aşağıdaki komutu çalıştırın:
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
- Projenizde Vertex AI hizmetini etkinleştirin:
gcloud services enable aiplatform.googleapis.com
5. Web uygulamasını ayarlama
Web uygulamasını çalıştırmak için terminalinizde komut çalıştırmanız ve kod düzenleyicinize kod eklemeniz gerekir. Bu sayfadaki tüm komutlarda YOUR_PROJECT_ID
yerine Firebase projenizin kimliğini yazdığınızdan emin olun.
Firebase CLI'yı projenizi hedefleyecek şekilde yapılandırma
- Terminalinizde, codelab projenizin kök dizinine gidin.
- Firebase CLI'nin tüm komutları Firebase projenize karşı yürütmesini sağlamak için aşağıdaki komutu çalıştırın:
firebase use YOUR_PROJECT_ID
Firestore'a örnek verileri içe aktarma
Bu codelab, hızlı bir başlangıç yapabilmeniz için Firestore'da önceden oluşturulmuş örnek veriler sağlar.
- Yerel kod tabanının normalde bir hizmet hesabı kullanacak kodu çalıştırmasına izin vermek için terminalinizde aşağıdaki komutu çalıştırın:
Bu işlem, tarayıcınızda yeni bir sekme açar. Önceki adımlarda kullandığınız Google Hesabı ile giriş yapın.gcloud auth application-default login
- Örnek Firestore verilerini içe aktarmak için aşağıdaki komutları çalıştırın:
cd load-firestore-data npm ci node index.js YOUR_PROJECT_ID cd ..
- Firebase konsolunda Firebase projenizin Firestore bölümüne giderek verilerin veritabanınıza başarıyla eklendiğini doğrulayın.İçe aktarılan veri şemasının ve içeriğinin görüntülendiğini görmelisiniz.
Web uygulamanızı Firebase projenize bağlama
Veritabanı gibi hizmetlerinden yararlanmak için web uygulamanızın kod tabanının doğru Firebase projesiyle ilişkilendirilmesi gerekir. Bunu yapmak için Firebase yapılandırmanızı uygulamanızın kod tabanına eklemeniz gerekir. Bu yapılandırma; proje kimliğiniz, uygulamanızın API anahtarı ve uygulama kimliği gibi temel değerlerin yanı sıra uygulamanızın Firebase ile etkileşim kurmasını sağlayan diğer değerleri içerir.
- Uygulamanızın Firebase yapılandırmasını alın:
- Firebase konsolunda Firebase projenize gidin.
- Sol taraftaki panelde, Projeye Genel Bakış'ın yanındaki dişli simgesini tıklayın ve Proje ayarları'nı seçin.
- "Uygulamalarınız" kartında web uygulamanızı seçin.
- "SDK kurulumu ve yapılandırması" bölümünde Yapılandırma seçeneğini belirleyin.
- Snippet'i kopyalayın.
const firebaseConfig ...
ile başlar.
- Firebase yapılandırmanızı web uygulamanızın kod tabanına ekleyin:
- Kod düzenleyicinizde
src/lib/genkit/genkit.config.ts
dosyasını açın. - İlgili bölümü kopyaladığınız kodla değiştirin.
- Dosyayı kaydedin.
- Kod düzenleyicinizde
Web uygulamasını tarayıcınızda önizleme
- Terminalinizde bağımlılıkları yükleyin ve web uygulamasını çalıştırın:
npm install npm run dev:next
- Tarayıcınızda, web uygulamasını görüntülemek için yerel olarak barındırılan barındırma URL'sine gidin. Örneğin, çoğu durumda URL http://localhost:3000/ veya benzeri bir şeydir.
Compass, React Sunucu Bileşenleri'ni kullanan bir Next.js uygulamasıdır ve bu da ana sayfadır.
Hayalinizdeki geziyi bulun'u tıklayın. Bazı sabit hedefler için sabit kodlu veriler gösterdiğini görebilirsiniz:
Dilediğiniz gibi keşfedebilirsiniz. Devam etmeye hazır olduğunuzda ana sayfa düğmesini (sağ üst köşede) tıklayın.
6. Genkit ile üretken yapay zekayı keşfedin
Artık uygulamanızda üretken yapay zekanın gücünden yararlanmaya hazırsınız. Bu codelab bölümünde, kullanıcı tarafından sağlanan ilham kaynaklarına göre hedefler öneren bir özelliği nasıl uygulayacağınız açıklanmaktadır. Üretken modelin sağlayıcısı olarak Genkit ve Google Cloud'un Vertex AI'ını kullanacaksınız (Gemini'ı kullanacaksınız).
Genkit, izleme ve akış durumunu saklayabilir (bu sayede Genkit akışlarını yürütmenin sonucunu inceleyebilirsiniz). Bu codelab'de, bu izleri depolamak için Firestore'u kullanacaksınız.
Bu codelab'in son adımında Genkit uygulamanızı Firebase App Hosting'e dağıtacaksınız.
Genkit uygulamanızı Firebase projenize bağlama
Önceki adımda src/lib/genkit/genkit.config.ts
dosyasını düzenleyerek Genkit'i projenize zaten bağladık.
Genkit Geliştirici Kullanıcı Arayüzü'nü başlatma
Genkit, LLM'ler, Genkit akışları, alıcılar ve diğer yapay zeka bileşenleriyle etkileşim kurmanıza olanak tanıyan web tabanlı bir kullanıcı arayüzüyle birlikte gelir.
Terminalinizde şunu çalıştırın:
npm run dev:genkit
Tarayıcınızda yerel olarak barındırılan Genkit URL'sine gidin. Çoğu durumda http://localhost:4000/ olur.
Gemini ile etkileşim kurma
Artık Genkit'in geliştirici kullanıcı arayüzünü kullanarak desteklenen modellerle veya istemler, alıcılar ve Genkit akışları gibi diğer yapay zeka bileşenleriyle etkileşimde bulunabilirsiniz.
Örneğin, Gemini'dan tatil önerisinde bulunmasını isteyin. Sistem talimatlarını kullanarak modelin davranışını belirli ihtiyaçlarınıza göre nasıl yönlendirebileceğinizi öğrenin. Bu özellik, sistem talimatlarını doğal olarak desteklemeyen modellerde de çalışır.
İstemleri yönetme
Genkit, üretken yapay zeka istemlerinizin oluşturulmasını ve yönetilmesini kolaylaştırmak için tasarlanmış bir eklenti ve metin biçimi olan Dotprompt'u sunar. Dotprompt'un temelinde, istemleri kod olarak ele alma fikri yatar. Bu sayede istemleri uygulama kodunuzla birlikte yazabilir, bakımını yapabilir ve sürüm kontrolü uygulayabilirsiniz.
Dotprompt'u kullanmak için "Merhaba Dünya" ile başlayın:
- Kod düzenleyicinizde
prompts/1-hello-world.prompt
dosyasını açın. - Genkit Geliştirici kullanıcı arayüzünde
prompts/1-hello-world
'ı açın. - Aşina olduğunuz herhangi bir dil adını veya kodunu kullanın ya da boş dize olarak bırakın.
- Çalıştır'ı tıklayın.
- Birkaç farklı değer deneyin. Büyük dil modelleri, bu örnekteki gibi basit sorgularda kısaltılmış, yanlış yazılmış veya eksik istemleri anlamada başarılıdır.
Çıkışınızı yapılandırılmış verilerle zenginleştirme
Genkit, düz metin oluşturmanın yanı sıra çıktınızı uygulamanızın kullanıcı arayüzünde daha iyi sunulacak ve entegre edilecek şekilde yapılandırmanıza da olanak tanır. Şema tanımlayarak LLM'ye istediğiniz biçime uygun yapılandırılmış veriler üretmesi talimatını verebilirsiniz.
Çıkış şemalarını keşfetme
Ayrıca bir LLM çağrısının çıkış şemasını da belirtebilirsiniz.
- Kod düzenleyicinizde istem dosyasını inceleyin:
prompts/2-simple-itinerary.prompt
dosyasını açın.- Tanımlanan giriş ve çıkış şemalarını inceleyin.
- Kullanıcı arayüzüyle etkileşim kurma:
- Genkit Geliştirici Kullanıcı Arayüzü'nde
prompts/2-simple-itinerary
bölümüne gidin. place
veinterests
alanlarını örnek verilerle doldurarak giriş sağlayın:{ "interests": [ "Museums" ], "place": "Paris" }
- Çalıştır'ı tıklayın.
- Genkit Geliştirici Kullanıcı Arayüzü'nde
Şemaya dayalı çıkışı anlama
Oluşturulan çıktının, tanımlanan şemaya nasıl uyduğunu inceleyin. İstediğiniz yapıyı belirterek LLM'ye kolayca ayrıştırılabilen ve uygulamanıza entegre edilebilen veriler üretmesi talimatını vermiş olursunuz. Genkit, çıkışı şemaya göre otomatik olarak doğrulayarak veri bütünlüğünü sağlar.
Ayrıca, Genkit'i şemayla eşleşmeyen çıkışı yeniden deneyecek veya onarmaya çalışacak şekilde yapılandırabilirsiniz.
Çıkış şemalarının temel avantajları
- Basitleştirilmiş entegrasyon: Yapılandırılmış verileri uygulamanızın kullanıcı arayüzü öğelerine kolayca dahil edin.
- Veri doğrulama: Oluşturulan çıkışın doğruluğunu ve tutarlılığını sağlayın.
- Hata işleme: Şema uyuşmazlıklarını giderecek mekanizmalar uygulayın.
Çıkış şemalarından yararlanmak, Genkit deneyiminizi geliştirerek daha zengin ve dinamik kullanıcı deneyimleri için özel olarak tasarlanmış yapılandırılmış veriler oluşturmanıza olanak tanır.
Çok formatlı girişten yararlanma
Uygulamanızın, kullanıcılarınızın ilham verici bulduğu resimlere göre kişiselleştirilmiş tatil yerleri önerdiğini düşünün. Genkit, çok formatlı bir üretken modelle birlikte kullanıldığında bu vizyonu hayata geçirmenizi sağlar.
- Kod düzenleyicinizde istem dosyasını inceleyin:
prompts/imgDescription.prompt
dosyasını açın.- İstemlerinize resim eklemeyi kolaylaştıran bir Handlebars söz dizimi öğesi olan
{{media url=this}}
'nın dahil edildiğini unutmayın.
- Kullanıcı arayüzüyle etkileşim kurma:
- Genkit Geliştirici Kullanıcı Arayüzü'nde
prompts/imgDescription
istemini açın. - Bir resmin URL'sini yapıştırarak
imageUrls
alanına bir resim URL'si girin. Örneğin, Wikipedia'dan Eyfel Kulesi'ni gösteren bir küçük resim kullanabilirsiniz:{ "imageUrls": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg/556px-La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg" ] }
- Çalıştır'ı tıklayın.
- Genkit Geliştirici Kullanıcı Arayüzü'nde
7. Vektör benzerliği aramasıyla alma işlemini uygulama
Yapay zeka modelleriyle yaratıcı içerik üretmek etkileyici olsa da pratik uygulamalarda genellikle çıktının belirli bir bağlamda temellendirilmesi gerekir.
Bu codelab'de, hedeflerin (yerler ve etkinlikler) bulunduğu bir veritabanınız var ve Gemini modelinin oluşturduğu önerilerin yalnızca bu veritabanındaki girişlere referans vermesini sağlamayı amaçlıyorsunuz.
Yapılandırılmamış sorgular ile alakalı içerik arasındaki boşluğu doldurmak için oluşturulan yerleştirmelerde vektör benzerliği aramasının gücünden yararlanacaksınız.
Yerleştirmeleri ve vektör benzerliğini anlama
- Vektörler: Vektörler, veri noktalarının sayısal gösterimleridir ve genellikle metin veya resim gibi karmaşık bilgileri modellemek için kullanılır. Bir vektördeki her boyut, verilerin belirli bir özelliğine karşılık gelir.
- Yerleştirme Modelleri: Bu özel yapay zeka modelleri, metin gibi giriş verilerini yüksek boyutlu vektörlere dönüştürür. İlginç olan nokta, benzer girişlerin bu yüksek boyutlu uzayda birbirine yakın vektörlerle eşlenmesidir.
- Vektör Benzerliği Arama: Bu teknik, ilgili veri noktalarını belirlemek için yerleştirme vektörlerinin yakınlığından yararlanır. Giriş sorgusu verildiğinde, veritabanında benzer yerleştirme vektörlerine sahip girişleri bulur. Bu, anlamsal ilişki olduğunu gösterir.
Alma sürecinin işleyiş şeklini anlama
- Sorguyu yerleştirme: Kullanıcınızın girişi (ör. "Paris'te romantik akşam yemeği") bir yerleştirme modelinden geçirilerek sorgu vektörü oluşturulur.
- Veritabanı yerleştirmeleri: İdeal olarak, hedef veritabanınızı önceden işleyerek her giriş için yerleştirme vektörleri oluşturmuşsunuzdur.
- Benzerlik hesaplaması: Sorgu vektörü, bir benzerlik metriği (ör. kosinüs benzerliği) kullanılarak veritabanındaki her yerleştirme vektörüyle karşılaştırılır.
- Alma: Sorgu vektörüne yakınlıklarına göre veritabanındaki en benzer girişler, alakalı öneriler olarak alınır.
Bu alma mekanizmasını uygulamanıza dahil ederek Gemini modelinden yararlanıp yalnızca yaratıcı değil, aynı zamanda belirli veri kümenize sıkı sıkıya bağlı öneriler oluşturabilirsiniz. Bu yaklaşım, oluşturulan çıkışın bağlamsal olarak alakalı kalmasını ve veritabanınızdaki bilgilerle uyumlu olmasını sağlar.
Firestore'da vektör benzerliği arama özelliğini etkinleştirme
Bu codelab'in önceki bir adımında, Firestore veritabanınızı örnek yerler ve etkinliklerle doldurmuştunuz. Her yer girişi, önemli özelliklerini açıklayan bir knownFor
metin alanı ve bu açıklamanın vektör gösterimini içeren bir embedding
alanı içerir.
Bu gömmelerde vektör benzerliği aramasının gücünden yararlanmak için bir Firestore dizini oluşturmanız gerekir. Bu dizin, yerlerin yerleştirme vektörlerinin belirli bir sorguyla benzerliğine göre verimli bir şekilde alınmasını sağlar.
YOUR_PROJECT_ID
yerine projenizin kimliğini yazarak dizini oluşturun.gcloud firestore indexes composite create --project=YOUR_PROJECT_ID --collection-group=places --query-scope=COLLECTION --field-config field-path=embedding,vector-config='{"dimension":"768","flat": "{}"}'
- Genkit Developer kullanıcı arayüzünde
retrievers/placesRetriever
platformunu açın. - Çalıştır'ı tıklayın. Alıcı mantığını uygulayacağınız yeri belirten yer tutucu metin içeren iskeleli nesneyi inceleyin.
- Kod düzenleyicinizde
src/lib/genkit/placesRetriever.ts
dosyasını açın. - En alta kaydırın ve yer tutucu
placesRetriever
öğesini aşağıdakilerle değiştirin:export const placesRetriever = defineFirestoreRetriever(ai, { name: 'placesRetriever', firestore, collection: 'places', contentField: 'knownFor', vectorField: 'embedding', embedder: vertexAI.embedder('text-embedding-005', {outputDimensionality: 768}), distanceMeasure: 'COSINE', });
Alıcıyı test etme
- Genkit Geliştirici Kullanıcı Arayüzü'nde
retrievers/placesRetriever
alıcısını açın. - Aşağıdaki sorguyu girin:
{ "content": [ { "text": "UNESCO" } ] }
- Seçenekler de sağlayabilirsiniz. Örneğin, alıcının kaç belge döndürmesi gerektiğini şu şekilde belirtebilirsiniz:
{ "limit": 4 }
- Çalıştır'ı tıklayın.
Seçenekler'e where
ifadeleri ekleyerek verilerde benzerliğin ötesinde ek filtreleme yapabilirsiniz.
8. Genkit ile Veriyle Artırılmış Üretim (RAG)
Önceki bölümlerde, metin, JSON ve görselleri işleyebilen, kullanıcılarınız için tatil yerleri ve diğer ilgi çekici içerikler üretebilen ayrı istemler oluşturmuştunuz. Ayrıca, Firestore veritabanınızdan alakalı hedefleri alan bir istem de uyguladınız. Şimdi bu bileşenleri tutarlı bir almayla artırılmış üretim (RAG) akışında düzenlemenin zamanı.
Bu bölümde, akışlar adı verilen önemli bir Genkit kavramı tanıtılmaktadır. Akışlar, hem yerel hem de uzaktan çağrılabilen, tam gözlemlenebilirlik sunan, güçlü şekilde türlenmiş ve yayınlanabilir işlevlerdir. Akışları hem Genkit'in KSA'sından hem de Genkit Geliştirici Kullanıcı Arayüzü'nden yönetebilir ve çağırabilirsiniz.
- Kod düzenleyicinizde seyahat planı istemini inceleyin:
prompts/itineraryGen.prompt
dosyasını açın.- İstem, özellikle alıcıdan alınan etkinlikler verileri olmak üzere ek girişleri kabul edecek şekilde nasıl genişletildiğine dikkat edin.
- Genkit Geliştirici Kullanıcı Arayüzü'nde,
src/lib/genkit/itineraryFlow.ts
dosyasında bir Genkit akışını görüntüleyin.
İpucu: Hata ayıklama sürecini kolaylaştırmak için uzun akışları daha küçük ve yönetilebilir adımlara ayırabilirsiniz. - "Resim açıklaması" adımı entegre ederek akışı iyileştirin:
TODO: 2
yorumunu bulun (yaklaşık 81. satırda). Bu işaret, akışınızı iyileştireceğiniz noktayı gösterir.- Boş
imgDescription
yer tutucusunu,imgDescription
istem çağrısı tarafından oluşturulan çıkışla değiştirin.
- Akışı test edin:
flows/itineraryFlow
sayfasına gidin.- Yeni eklediğiniz adımla
itineraryFlow
öğesinin başarılı bir şekilde yürütüldüğünü test etmek için aşağıdaki girişi kullanın:{ "request": "Sightseeing in Paris", "imageUrls": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg/556px-La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg" ] }
- Çalıştır'ı tıklayın.
- Resim açıklamasını seyahat planı önerisine dahil eden oluşturulmuş çıktıyı inceleyin.
- Herhangi bir hatayla veya beklenmedik davranışla karşılaşırsanız ayrıntılar için İncele sekmesini kontrol edin. Bu sekmeyi, Trace Store'daki yürütme geçmişini incelemek için de kullanabilirsiniz.
Web uygulamanız için RAG
- Tarayıcınızda http://localhost:3000/ adresini ziyaret ederek web uygulamasının hâlâ çalıştığından emin olun.
- Web uygulaması artık çalışmıyorsa terminalinizde şu komutları çalıştırın:
npm install npm run dev
- Dream Your Vacation web uygulaması sayfasını (http://localhost:3000/gemini) inceleyin.
- Next.js entegrasyonu örneği için kaynak kodunu (
src/app/gemini/page.tsx
) görüntüleyin.
9. Uygulamanızı Firebase App Hosting ile dağıtma
Bu yolculuktaki son adım, web uygulamanızı dağıtmaktır. Bu işlem için, Next.js ve Angular uygulamalarının sunucusuz bir arka uca dağıtımını kolaylaştırmak üzere tasarlanmış, çerçeveye duyarlı bir barındırma çözümü olan Firebase App Hosting'i kullanacaksınız.
- Değişikliklerinizi yerel Git kod deponuza kaydedin ve ardından GitHub'a aktarın.
- Firebase konsolunda, Firebase projenizdeki App Hosting'e gidin.
- Başlayın > GitHub'a bağlan'ı tıklayın.
- GitHub hesabınızı ve deponuzu seçin. İleri'yi tıklayın.
- Dağıtım ayarı > Kök dizin bölümünde varsayılan değeri bırakın.
- Canlı dal için GitHub deponuzun ana dalını seçin. İleri'yi tıklayın.
- Arka uç için bir kimlik girin (örneğin,
compass
). - Firebase web uygulaması oluşturma veya ilişkilendirme sorulduğunda Mevcut bir Firebase web uygulaması seçin'i belirleyin ve bu codelab'in önceki adımında oluşturduğunuz uygulamayı seçin.
- Bitir ve Dağıt'ı tıklayın.
Dağıtım durumunu izleme
Dağıtım işlemi birkaç dakika sürer. İlerleme durumunu Firebase konsolunun Uygulama Barındırma bölümünden takip edebilirsiniz.
Hizmet hesabınıza izin verme
Node.js arka uçunuzun Vertex AI kaynaklarına erişebilmesi için uygulamanızın hizmet hesabına aiplatform.user
rolünü atamanız gerekir:
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member "serviceAccount:firebase-app-hosting-compute@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/aiplatform.user"
İşlem tamamlandıktan sonra web uygulamanıza kullanıcılar erişebilir.
Otomatik yeniden dağıtım
Firebase App Hosting, gelecekteki güncellemeleri kolaylaştırır. GitHub deponuzun ana dalına değişiklik gönderdiğinizde Firebase App Hosting, uygulamanızı otomatik olarak yeniden oluşturur ve yeniden dağıtır. Böylece kullanıcılarınız her zaman en son sürümü deneyimler.
10. Sonuç
Bu kapsamlı codelab'i tamamladığınız için tebrikler.
Kullanıcı tercihlerine ve ilham kaynaklarına göre kişiselleştirilmiş tatil önerileri oluşturan, önerileri uygulamanızın verilerine dayandıran gelişmiş bir "akış" oluşturmak için Genkit, Firestore ve Vertex AI'ın gücünden başarıyla yararlandınız.
Bu yolculuk boyunca, sağlam üretken yapay zeka uygulamaları oluşturmak için gerekli olan temel yazılım mühendisliği kalıplarıyla ilgili uygulamalı deneyim kazandınız. Bu kalıplar şunlardır:
- İstem yönetimi: Daha iyi iş birliği ve sürüm kontrolü için istemleri kod olarak düzenleme ve koruma.
- Çok formatlı içerik: Yapay zeka etkileşimlerini geliştirmek için resim ve metin gibi çeşitli veri türlerini entegre etme.
- Giriş/Çıkış Şemaları: Uygulamanızda sorunsuz entegrasyon ve doğrulama için verileri yapılandırma.
- Vektör depoları: Etkili benzerlik araması ve alakalı bilgilerin alınması için vektör yerleştirmelerinden yararlanma.
- Veri Alma: Veritabanlarındaki verileri alıp yapay zeka tarafından üretilen içeriğe dahil etme mekanizmalarını uygulama.
- Veriyle Artırılmış Üretim (RAG): Bağlamsal olarak alakalı ve doğru çıktılar için alma tekniklerini üretken yapay zekayla birleştirme.
- Akış Enstrümantasyonu: Sorunsuz ve gözlemlenebilir yürütme için karmaşık yapay zeka iş akışları oluşturma ve düzenleme.
Bu kavramlarda ustalaşarak ve bunları Firebase ekosisteminde uygulayarak kendi üretken yapay zeka maceralarınıza atılmaya hazır olursunuz. Üretken yapay zekanın sunduğu sınırsız olanakları keşfedin, yenilikçi uygulamalar oluşturun ve yapabileceklerinizin sınırlarını zorlamaya devam edin.
Alternatif dağıtım seçeneklerini keşfetme
Genkit, özel ihtiyaçlarınıza uygun çeşitli dağıtım seçenekleri sunar. Bu seçenekler arasında şunlar yer alır:
- Cloud Functions for Firebase
- Cloud Run
- Next.js
- Herhangi bir Node.js ortamı
- Genkit, Go'yu da destekler.
(package.json
) düğüm klasörünüzde aşağıdaki komutu çalıştırarak sizin için en uygun olanı seçin:
npx genkit init
Sonraki adımlar
- Google AI Studio veya Vertex AI Studio'da istemlerle denemeler yapın ve büyük bağlam pencerelerinden yararlanın.
- Yapay zeka almayla artırılmış üretim (RAG) araması hakkında daha fazla bilgi edinin.
- Genkit ile ilgili resmi belgelere göz atın.
- Firestore'daki benzerlik arama özellikleri ve PostgreSQL İçin Cloud SQL hakkında daha fazla bilgi edinin.
- İşlev çağrısı ile üretken yapay zeka akışlarını daha ayrıntılı inceleyin.