Geliştirici İlişkileri Mühendisi
Android uygulamalarına üretime hazır üretken yapay zeka eklemek için LLM'ye bağlanmaktan daha fazlası gerekir. Kurumsal sınıf güvenlik ve maliyet kontrolleri de gereklidir. Bu oturumda, Firebase AI Logic'in geliştiricilerin bütçeye uygun ve güvenli yapay zeka deneyimlerini geniş ölçekte dağıtmasına nasıl olanak tanıdığını keşfedin.
Güvenlik temelleri ve Firebase Uygulama Kontrolü, maliyet yönetimi, dinamik model yönlendirme ve çok formatlı özelliklerden yararlanma konularını ele alacağız.
Transkript
Android Developer Summit'e hoş geldiniz.
Ben Ankita Saxena, Firebase Ürün Müdürü.
Ben de Arthur Thompson, Firebase ekibinde Geliştirici İlişkileri Mühendisiyim.
Bugün, Android uygulamalarınıza üretken özellikler eklemeyi göstereceğiz.
İşte böyle.
Firebase nedir?
Firebase'i duyanlar el kaldırsın.
Anlıyorum.
Harika.
Firebase, Google'ın uygulama geliştirme platformudur.
Firebase, 20'den fazla ürünün entegre edildiği birleşik bir platform sunar. Böylece, ek yazılımlarla yaşayacağınız parçalı deneyimi yaşamazsınız.
Şimdi de üretken yapay zekayı mobil uygulamalara entegre etmenin zorluklarından bahsedelim.
En önemli üç zorluğu belirledik.
İlk olarak, API anahtarı sızıntıları: Bunları ayıklamak birkaç dakika sürer.
İkinci olarak, model adlarını güncelleme: Geliştiricilere her zaman bunları uygulamalarında sabit kodlamamalarını öneririz. Aksi takdirde, her yeni model geldiğinde başka bir sürüm yayınlamanız gerekir.
Üçüncüsü ise dosya gizliliği: Geliştiriciler ve uygulama kullanıcıları için verilerinin korunması ve uygulama için doğru koruma önlemlerinin alınması çok önemlidir.
Bahsettiğimiz zorlukların üstesinden gelmek için temel çözüm olarak Firebase AI Logic'i tanıtın.
Firebase AI Logic'in size sunduğu değer teklifi nedir?
Karmaşık özel arka uç işlemlerini biz hallederiz. Böylece, bu işlemleri sizin yapmanız gerekmez.
İkinci olarak, istemci SDK'larımızı kullanarak Gemini API'yi doğrudan ve güvenli bir şekilde mobil uygulamalarınızdan çağırabilirsiniz.
Şimdi işin iç yüzüne bakalım ve mimarinin nasıl işlediğini anlayalım.
Sol tarafta Firebase istemci SDK'ları yer alır.
Şu anda desteklediğimiz çok çeşitli istemci SDK'larımız var.
Desteklediğimiz Kotlin'den de bahsetmek istiyorum.
Geliştirici olarak yapay zeka işlemi gerçekleştirmek istediğinizde SDK, isteği Firebase AI Logic'e gönderir. Firebase AI Logic de isteği Gemini Developer API'ye veya Agent Platform Gemini API'ye güvenli bir şekilde yönlendirir.
Yani şu anda oluşturduğunuz tüm özel arka uçları biz yönetiyoruz.
Bu sayede, sıfır maliyetle piyasaya sürüm süresini kısaltıyoruz.
Şimdi de işin eğlenceli kısmına geçelim.
Bu, FriendlyMeals uygulamasını tanıtan bir demo olacak.
Bu oturumdaki diğer demolarımız için de aynı uygulamayı kullanacağız. Uygulamayı indirebilirsiniz.
Buradaki QR kodunu tarayabilirsiniz.
Şimdi demoyu inceleyelim.
FriendlyMeals uygulaması, girdiğiniz malzemelere göre tarifleri belirlemenize yardımcı olur.
Bu iş akışında, bu bileşenleri yakalamanın iki temel yolunu görüyorsunuz.
Birincisi, elinizdeki malzemeleri girersiniz.
İkinci olarak, malzemelerin fotoğrafını çekersiniz.
İlk iş akışını kullanacağım. Bu akışta malzemeleri gireceğim.
Buzdolabımda bulabildiğim tek şey buydu.
Tarif oluşturulurken birkaç noktaya değinmek istiyorum.
Arka planda Gemini modellerini çağırıyoruz.
Bu kullanım alanında üç Gemini 3.8 Flash modelini çağırıyoruz.
Üstteki resim, Gemini Nano Banana modelinin en yeni sürümü olan 2.1 Nano Banana ile oluşturuldu.
Koda geçmeden önce Firebase AI Logic'in sunduğu değer teklifini pekiştirmek istiyorum.
İlk olarak sunucusuz SDK'lar var.
Yapay zeka özelliği eklemek istiyorsunuz ancak arka uç oluşturmak istemiyorsunuz.
İstemci tarafı SDK'larımız bu noktada devreye girer.
Android uygulamanızdan doğrudan Gemini'ı arayabilirsiniz.
İkincisi, güçlü yerleşik güvenlik özellikleridir.
Gemini'a yaptığınız çağrılarda Firebase Uygulama Kontrolü, sunucu istem şablonları ve diğer özelliklerden yararlanabilirsiniz. Bu güvenlik özelliklerinden biraz sonra daha ayrıntılı olarak bahsedeceğiz.
Üçüncü olarak, çok formatlı girişler ve akış gibi ileri seviye özellikler desteklenir.
Sihirli bir sırt çantasıyla ilgili hikaye oluşturmak için basit bir yapay zeka özelliği ekleyen bir uygulama geliştirmek istediğinizi varsayalım.
import com.google.firebase.Firebase
import com.google.firebase.ai.ai
@Composable
fun MagicBackpackGenerator() {
var output by remember { mutableStateOf("") }
LaunchedEffect(Unit) {
val model=Firebase.ai.generativeModel("gemini-4-argon")
val response = model.generateContent("Write a story about a magic backpack")
output = response.text.toString()
}
MagicBackpackUI(output)
}Bu yapay zeka özelliğini eklemek ve üretime hazır hale getirmek için bu üç basit adımı uygulamanız yeterlidir.
Firebase AI Logic, uygulamanıza yapay zeka özellikleri eklemeyi bu kadar kolaylaştırdığına göre sormanız gereken ilk soru, bu özelliği nasıl güvence altına alacağınızdır.
Şimdi Firebase Uygulama Kontrolü'nden başlayarak güvenlik ayrıntılarına geçelim.
Firebase Uygulama Kontrolü, isteklerin uygulamanızdan geldiğini onaylayarak verilerinizi korumanıza, kullanıcılarınızın güvenliğini sağlamanıza ve API kaynaklarınıza kimlerin erişebileceğini kontrol etmenize yardımcı olur.
Bu, uygulamanızın kötüye kullanılmasını önlemeye yardımcı olan ek bir güvenlik katmanıdır.
Koda geçmeden önce Firebase konsolunda uygulamanız gereken birkaç adım vardır.
Firebase konsolundaki Uygulama Kontrolü bölümünde Android uygulamanızı kaydeder ve ilgili onay sağlayıcıları eklersiniz.
Play Integrity veya reCAPTCHA Enterprise gibi araçlar bu kapsamdadır.
Uygulama Kontrolü'nü ayarladıktan sonra zorunlu kılınmayan modda başlatmanız gerektiğini unutmayın.
Bu sayede, uygulamanızın telemetri sağlamasına izin vererek tüm uygulamalarınızın, yaptırım uygulamadan önce arka ucunuza başarılı API çağrıları aldığından emin olabilirsiniz.
Telemetrinin sorunsuz bir şekilde geldiğini gördüğünüzde Uygulama Kontrolü'nü zorunlu kılabilirsiniz. Bu noktada, geçerli ve donanım onaylı jetonu olmayan tüm istekler reddedilir.
Uygulama Kontrolü'nü uygulayan kodun görünümü bu şekilde.
class FireTravelApp : Application() {
lateinit var appContainer: AppContainer
private set
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Firebase.appCheck.installAppCheckProviderFactory(
DebugAppCheckProviderFactory.getInstance()
)
} else {
Firebase.appCheck.installAppCheckProviderFactory(
PlayIntegrityAppCheckProviderFactory.getInstance()
)
}
appContainer = AppContainer(this)
}
}Uygulama sınıfınızda Uygulama Kontrolü sağlayıcısını yüklersiniz.
Geliştirme aşamalarında hata ayıklama sağlayıcısını kullanmak isteyebilirsiniz. Ardından, üretime geçmeye hazır olduğunuzda Play Integrity veya reCAPTCHA Enterprise'a geçebilirsiniz.
Ancak diğer Firebase çağrılarını yapmadan önce Uygulama Kontrolü'nü yapılandırmanız gerektiğini unutmayın.
Geliştiriciler, yapay zeka özellikleri oluştururken istemleri genellikle doğrudan uygulama kodlarına sabit kodlar. Ancak bu durum iki büyük zorluğa neden olur.
Birincisi, istem için herhangi bir doğaçlama gerekiyorsa tam güncellemeyi göndermeniz gerekir.
İkinci olarak, uygulamanızı açan herkes tescilli istem mühendisliğinize erişebilir.
Firebase AI Logic, bu sorunu çözmek için sunucu istem şablonlarını kullanır.
İstemlerinizi cihazda tutmak yerine bulutta depolar.
Bu, sunucu istem şablonlarının Firebase konsolundaki görünümüdür.
Şablonları .prompt biçiminde yazarsınız.
---
model: 'gemini-3-flash'
input:
schema:...
tools:...
---
{{role "system"}}
You're a storyteller that tells nice and joyful stories with happy endings.
{{role "user"}}
Create a story about {{topic}} with the length of {{length}} words in the {{language}} language.Model adını buradan ayarlayabilirsiniz.
Bu ayarı dilediğiniz zaman güncelleyebilirsiniz.
Uygulama güncellemesinin tamamını yayınlamanız gerekmez.
Sistem talimatlarını da güncelleyebilirsiniz. Ayrıca giriş ve çıkış için katı bir JSON şeması da kullanılır.
Yine, uygulama sürümü yayınlamanız gerekmez.
Bulutta yer aldığı için istemleri anında ayarlayabilir veya modelleri değiştirebilirsiniz.
Kodun Kotlin'deki görünümü de bu şekildedir.
val generativeModel = Firebase.ai.templateGenerativeModel()
val response = generativeModel.generateContent("storyteller-v1",
mapOf(
"topic" to topic,
"length" to length,
"language" to language
)
)
output.value = response.textSunucu istem şablonlarının genel önizleme aşamasında olduğunu belirtmek isteriz.
Yalnızca kimlik doğrulama modunu da uygulayabilirsiniz.
Bu, isteği yetkilendirmek için Firebase Auth kullanıcı jetonlarını kullanır.
Güvenlik özelliklerimizi tamamlamak ve uygulamanızı tamamen kilitlemek için doğrudan Firebase konsolundan Yalnızca Şablon Modu'nu da kullanabilirsiniz.
Uygulamanız yayınlandıktan sonra nasıl davrandığını görmek isteyebilirsiniz.
Yapay Zeka Kullanım Takibi sekmesinde tek bir tıklamayla Yapay Zeka Kullanım Takibi'ni etkinleştirebilir ve örnekleme hızınızı yapılandırabilirsiniz.
Firebase, özel bir analiz kodu yazmanıza gerek kalmadan metrikleri, gecikmeleri ve jeton sayılarını otomatik olarak yakalar.
Az önce gördüğümüz iki modun aynı pencerede bulunduğunu belirtelim.
Firebase konsolunuzda yapay zeka kullanım takibini etkinleştirdiğinizde bu veriler doğrudan yapay zeka kullanım takibi kontrol paneline aktarılır.
%95'lik dilimdeki gecikme sürenizi gözlemleyebilir, ani hata artışlarını tespit edebilir ve metin, resim ve ses gibi farklı modalitelerdeki jeton tüketimini takip edebilirsiniz.
Belirli izleri görmek için İzleme Görüntüleyici'yi de inceleyebilirsiniz.
Bu durumda, kullandığımız modeli gösterdiği için gecikme süresini ve başarı oranını görebilirsiniz.
Firebase konsolunda, yapay zeka özelliğinizin nasıl çalıştığına dair tüm telemetri ve görünürlük bilgilerini alabilirsiniz.
Örneğin, jeton kullanımında veya gecikme süresinde ani bir artış gördüğünüzde hibrit yaklaşım, bu maliyetleri veya gecikme süresini azaltmanın bir yoludur.
Üretken yapay zeka özellikleri uygulamalarımızın önemli bir parçası haline geldikçe yalnızca buluta %100 güvenmek muhtemelen doğru seçim olmayacaktır.
Android'deki cihaz üzerinde modeller olan Nano 4'ü kullanarak üç önemli avantajdan yararlanabilirsiniz. Bunları zaten biliyor olabilirsiniz.
Bunlardan ilki çevrimdışı moddur.
Yani büyük bir konferansta, uçakta veya metroda olsanız bile yapay zeka özelliğiniz çalışmaya devam eder.
Maliyet.
Çıkarım cihaz üzerinde çalıştığı için bu özellikleri ekleyebilirsiniz ve yapay zeka özelliğinizin maliyetlerinin artması konusunda endişelenmenize gerek kalmaz.
Üçüncüsü ise veri gizliliği.
Bu nedenle, hassas veriler söz konusu olduğunda kullanıcılarınıza çıkarımların hiçbirinin cihazınızdan ayrılmayacağını garanti edebilirsiniz.
Firebase AI Logic'i kullanarak bu çıkarım modlarını ayarlayabilir ve PREFER_ON_DEVICE, PREFER_IN_CLOUD veya ONLY_ON_DEVICE gibi net yönlendirme stratejileri belirleyebilirsiniz.
ONLY_ON_DEVICE seçeneğini belirlediğinizde SDK, bulutu tamamen atlayarak doğrudan cihaz üzerindeki modeli kullanır.
Telefona geçelim.
FriendlyMeals'e gidip cihaz üzerinde çalışan bazı özelliklere göz atalım.
İlk olarak, buzdolabımızda bulunabilecek bazı malzemelere göre bir tarif oluşturmayı deneyeceğiz.
Ankita'nın malzemeleri manuel olarak yazıp tarifi oluşturduğunu görmüştünüz.
Başka bir yöntem deneyelim.
Bu gerçek buzdolabını ele alalım. Kesinlikle yapay zekayla üretilmedi.
Bu buzdolabında çok fazla zeytin var. Bakalım nasıl bir tarif üreteceğiz.
Bu konuda birkaç noktaya değinmek istiyorum.
Bunlardan biri, görüntünün cihazdan hiçbir zaman dışarı çıkmamasıdır.
Görüntü, Nano by Gemma tarafından yerel olarak analiz edildi…
Nano 4.
İkinci olarak, yanıtın gelme hızı da önemli.
İçerik öğeleri oluşturuldu.
Böylece iki avantajdan da yararlanabilirsiniz.
Veriler cihazdan ayrılmaz ve gecikme süresinde önemli bir azalma olur.
Şimdi zeytin dolu buzdolabından hangi tarifi alacağımıza bakalım.
Bu kez bulutu kullanıyoruz.
Buzdolabında tespit edilen malzemeleri alıp buluta gönderiyoruz. Tüm bu işlemleri, yemek tarifi oluşturmak için Firebase AI Logic'i kullanarak yapıyoruz.
Buzdolabında somon görmedim ancak tarifte somon var.
Ancak bu, slaytlara geri dönelim lütfen.
Demoda gördüğümüz gibi, yerel model ile bulut modeli arasında geçiş yapmak oldukça kolay.
Firebase AI Logic, ağ kullanılabilirliğine göre temel yönlendirmeyi kullanarak çıkarım yapmayı sağlar.
Bu çıkarımı yönetmek için güvenlik önlemleri olarak düşünebileceğiniz
Bu nedenle mimari, çok formatlı ve giriş ve çıkış şemaları gibi özellikler için yerleşik destek ve Gemma ile tam entegrasyon içerir. Pardon, Gemini Nano 4 ile.
Şimdi bu önlemlerin pratikte nasıl uygulandığına bakalım.
Bu nedenle, karma yönlendirme için karmaşık ara katman yazılımları veya yedek mantıklar oluşturmanız gerekmez.
Kod açısından, bu yalnızca ek bir parametredir.
Tercih ettiğiniz modu ayarlamak için bir parametre ve onDeviceConfig iletirsiniz.
import com.google.firebase.Firebase
import com.google.firebase.ai.ai
@Composable
fun MagicBackpackGenerator() {
var output by remember { mutableStateOf("") }
LaunchedEffect(Unit) {
val model = Firebase.ai.generativeModel(modelName = "gemini-3.8-flash",
onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE))
val response = model.generateContent("Write a story about a magic backpack")
output = response.text.toString()
}
MagicBackpackUI(output)
}SDK, bu durumda önce yerel modeli dener ve model mevcut değilse otomatik olarak buluta geri döner.
Güvenli uygulamalar oluşturmayı ve cihaz üzerinde modellerden yararlanmayı ele aldığımıza göre şimdi maliyet optimizasyonundan bahsedelim.
Üretken özellikler hızla ölçeklenebilir ve bu nedenle Cloud Billing'iniz de artabilir.
Bu nedenle, bütçelerinizin öngörülebilir ve uygulamalarınızın finansal açıdan verimli olmasını sağlayacak doğru proaktif altyapı kontrollerine ve otomatik özelliklere sahip olduğumuzdan emin olmak için uygun önlemleri almamız gerekir.
Arthur, cihaz üzerinde çıkarımın tamamen ücretsiz olduğunu vurguladı. Ancak karmaşık akıl yürütme görevleri gerektiren ve yedekleme ile buluta yönlendirme gerektiren senaryolar her zaman olacaktır.
Bu bulut çağrıları gerçekleştiğinde bütçenizi öngörülebilir tutmak için önlemler almanız gerekir.
Firebase harcama sınırları tam da bu nedenle devreye girer.
Harcama sınırları sayesinde uygulamalarınızın maliyeti üzerinde daha ayrıntılı kontrol sahibi olabilirsiniz.
Bu sayede, proje genelinde geçerli olan genel bir bütçe ayarı ve yalnızca e-posta gönderen bütçe uyarıları yerine Firebase AI Logic gibi ayrı hizmetler için belirli bir bütçe sınırı belirleyebilirsiniz.
Harcamanız %100'e ulaştığında Firebase, beklenmedik faturaları önlemek için yapay zeka hizmetini otomatik olarak duraklatır.
Basit harcama sınırlarının ötesinde, çeşitli gelişmiş maliyet optimizasyonu stratejileri vardır.
Bugün vurgulamak istediğimiz özellik, Firebase AI Logic tetikleyicileri.
Peki ya arada özel bir mantığa ihtiyacınız varsa?
Bu, Firebase AI Logic tetikleyicileridir.
İçerik oluşturmadan önce veya sonra bir işlev çalıştırabilirsiniz.
Kullanıcıyı kontrol etmek, girişi filtrelemek, bağlam eklemek ve yanıtı ayarlamak için bu katmanı kullanabilirsiniz.
Maliyet optimizasyonu ve güvenlik konularını ele aldığımıza göre, şimdi model özelliklerine geçelim ve Firebase AI Logic'in neler sunduğuna bakalım.
Firebase AI Logic, bu çok formatlı deneyimleri desteklemek için üretime hazır modeller ve araçlardan oluşan kapsamlı bir katalog sunar.
Yüksek hızda akıl yürütme, metin, kod ve medya için Gemini 4 Argon, Gemini 3.1 Pro, Gemini 3.8 Flash ve diğer modelleri kullanabilirsiniz.
Ayrıca, Arama ve Haritalar Temellendirme'yi kullanarak bu modelleri gerçek dünya verilerine bağlayabilirsiniz.
Son olarak, ses için doğal metin okuma ve Gemini Live ses üretimi sunuyoruz.
Bir kez daha telefona geçelim.
Burada tatlı ve tuzlu yiyeceklerimiz var.
Pardon, o değil.
Tarifimiz için hızlı peynirli ketçaplı tostumuz hazır.
Kulağa lezzetli geliyor.
İlk olarak Live API'ye göz atalım.
Bu durumda, geri dönen videoyu kullanabiliriz ve "Hey Gemini, masada hangi malzemeler var?" diye sorabilirim.
Dizüstü bilgisayarınızın ekranındaki resme göre elinizdeki malzemeler ekmek, cheddar peyniri ve ketçap.
İşte böyle.
Tarifin ilk adımına başlayabilir miyim?
Evet.
İlk adım, mini fırınınızı veya ızgaranızı orta-yüksek ısıda önceden ısıtmaktır.
Teşekkür ederiz.
İşte böyle.
Bu durumda Live API kullanılıyordu ve ben kapatana kadar sohbet açık kalıyordu.
Göstermek istediğim diğer özellik ise sesle yazma, pardon, metin okuma.
Metin okuma özelliğiyle de bu örnekte yemek tarifi talimatlarını görüyoruz.
Bu nedenle, okumak yerine "Oluştur" veya "Konuş" düğmesine basabilirim. Böylece talimatların metni, metin okuma modeline gönderilir.
Ses üretilir ve cihaza geri gönderilir.
Oynatabilir, daha sonra kullanmak üzere önbelleğe alabilirim. Burada gördüğümüz gibi oynatılır.
1.
Mini fırını veya ızgarayı orta-yüksek ısıda önceden ısıtın.
2.
İki dilim ekmeği fırın tepsisine veya tost makinesi tepsisine yerleştirin.
Güzel.
Müthiş, değil mi?
Firebase AI Logic, bu tür harika özellikleri yalnızca birkaç satır kodla uygulamamıza olanak tanır.
Slaytlara geri dönelim.
Gemini Live API'nin nasıl çalıştığını gösterdik. Peki, ellerinizi kullanmadan yapay zeka destekli kampanya oluşturma deneyimi oluşturmak isterseniz ne yapmanız gerekir?
Gemini Live API, bu noktada devreye girerek çift yönlü sesli sohbetler oluşturmanıza olanak tanır.
Android uygulamanız, canlı mikrofon sesini ve kamera karelerini yukarı akış olarak yayınlayabilir ve doğal, düşük gecikmeli ve konuşma sesini gerçek zamanlı olarak geri alabilir.
Kotlin'de bu ayarı yapmak oldukça tanıdık gelecektir.
val model = Firebase.ai.liveModel(
modelName = "gemini-3.1-flash-live-preview",
generationConfig = liveGenerationConfig {
responseModality = ResponseModality.AUDIO
},
systemInstruction = "Your main job is to change the color...",
tools = listOf(Tool.functionDeclarations(listOf(changeColorFunction)))
)
val session = model.connect(::handler)
session.startAudioConversation(::handler)
session.stopAudioConversation()Sesli yanıtlar için yapılandırılmış bir canlı model örneği oluşturur ve bir akış işleyiciyle oturuma bağlanırsınız.
Burada vurgulamak istediğimiz en önemli nokta, SDK'nın tüm WebSocket işlemlerini ve akış protokollerini arka planda yönetmesidir.
Yani kodlamanız gerekmez, değil mi?
Satır yazmaya devam edin.
Demolarımızı tamamlayıp uygulama geliştirmenin geleceğine bakarken iş akışınız için güçlü bir araç olan Firebase aracı becerilerini vurgulamak istiyoruz.
# Execute to add agent capabilities to your workspace
npx skills add firebase/agent-skillsAyrıca Antigravity ve Android Studio kullananlar için Firebase AI Logic'i doğrudan ilk katılım akışına entegre ettik.
Özetlemek gerekirse, ilk olarak hemen geliştirmeye başlayın. İkinci olarak, bugün ele aldığımız güvenlik araçları gibi üretim araçlarından erken aşamalarda yararlanın. Üçüncü olarak, temsilci becerilerini mümkün olan her yerde kullanın.
Teşekkür ederiz.
import com.google.firebase.Firebase
import com.google.firebase.ai.ai
@Composable
fun MagicBackpackGenerator() {
var output by remember { mutableStateOf("") }
LaunchedEffect(Unit) {
val model=Firebase.ai.generativeModel("gemini-4-argon")
val response = model.generateContent("Write a story about a magic backpack")
output = response.text.toString()
}
MagicBackpackUI(output)
}class FireTravelApp : Application() {
lateinit var appContainer: AppContainer
private set
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) {
Firebase.appCheck.installAppCheckProviderFactory(
DebugAppCheckProviderFactory.getInstance()
)
} else {
Firebase.appCheck.installAppCheckProviderFactory(
PlayIntegrityAppCheckProviderFactory.getInstance()
)
}
appContainer = AppContainer(this)
}
}---
model: 'gemini-3-flash'
input:
schema:...
tools:...
---
{{role "system"}}
You're a storyteller that tells nice and joyful stories with happy endings.
{{role "user"}}
Create a story about {{topic}} with the length of {{length}} words in the {{language}} language.val generativeModel = Firebase.ai.templateGenerativeModel()
val response = generativeModel.generateContent("storyteller-v1",
mapOf(
"topic" to topic,
"length" to length,
"language" to language
)
)
output.value = response.textimport com.google.firebase.Firebase
import com.google.firebase.ai.ai
@Composable
fun MagicBackpackGenerator() {
var output by remember { mutableStateOf("") }
LaunchedEffect(Unit) {
val model = Firebase.ai.generativeModel(modelName = "gemini-3.8-flash",
onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE))
val response = model.generateContent("Write a story about a magic backpack")
output = response.text.toString()
}
MagicBackpackUI(output)
}val model = Firebase.ai.liveModel(
modelName = "gemini-3.1-flash-live-preview",
generationConfig = liveGenerationConfig {
responseModality = ResponseModality.AUDIO
},
systemInstruction = "Your main job is to change the color...",
tools = listOf(Tool.functionDeclarations(listOf(changeColorFunction)))
)
val session = model.connect(::handler)
session.startAudioConversation(::handler)
session.stopAudioConversation()# Execute to add agent capabilities to your workspace
npx skills add firebase/agent-skills