Firebase AI Logic kullanarak hibrit çıkarımla yapay zeka destekli Android uygulamaları ve özellikleri oluşturabilirsiniz. Karma çıkarım, varsa cihaz üzerinde modelleri kullanarak çıkarım yapmaya ve aksi takdirde sorunsuz bir şekilde bulutta barındırılan modellere geri dönmeye (veya tam tersi) olanak tanır.
Bu sayfada, istemci SDK'sını kullanmaya başlama ve sıcaklık gibi ek yapılandırma seçenekleri ve özellikler gösterilmektedir.
Firebase AI Logic aracılığıyla cihaz üzerinde çıkarımın, belirli cihazlarda çalışan Android uygulamalarında desteklendiğini ve ML Kit Şartları'nın yanı sıra ML Kit'in üretken yapay zeka yönleriyle ilgili şartlara tabi olduğunu unutmayın.
Önerilen kullanım alanları ve desteklenen özellikler
Önerilen kullanım alanları
Çıkarım için cihaz üzerinde model kullanmanın avantajları:
- Gelişmiş gizlilik
- Yerel bağlam
- Ücretsiz çıkarım
- Çevrimdışı işlevler
Karma işlevselliği kullanmanın avantajları:
- Cihazdaki model kullanılabilirliğini ve internet bağlantısını destekleyerek kitlenizin daha büyük bir kısmına ulaşın
Cihaz üzerinde çıkarım için desteklenen özellikler
Cihaz üzerinde çıkarım yalnızca akışlı veya akışsız çıkışla tek dönüşlü metin oluşturmayı (sohbet değil) destekler. Aşağıdaki metin oluşturma özelliklerini destekler:
Metin ve resim girişinden metin oluşturma (özellikle giriş olarak tek bir Bitmap resmi)
Bu sayfanın alt kısmındaki cihaz üzerinde çıkarım için henüz kullanılamayan özellikler listesini incelemeyi unutmayın.
Başlamadan önce
Aşağıdakileri göz önünde bulundurun:
Desteklenen API'ler:
Bulut içi çıkarım, seçtiğiniz Gemini API sağlayıcısını (Gemini Developer API veya Vertex AI Gemini API) kullanır.
Cihazda çıkarım, beta sürümünde olan ve yalnızca belirli cihazlarda kullanılabilen ML Kit'teki Prompt API'yi kullanır.
Bu sayfada, başlamanın nasıl olacağı açıklanmaktadır.
Bu standart kurulumu tamamladıktan sonra ek yapılandırma seçeneklerini ve özellikleri (ör. sıcaklık ayarlama) inceleyin.
Desteklenen Android cihazlar ve cihaz üzerindeki modelleri
Cihaz üzerinde çıkarım (ML Kit'in Prompt API'sini kullanır) için desteklenen cihazların ve cihaz üzerinde modellerinin listesini ML Kit dokümanlarında bulabilirsiniz.
Başlayın
Bu başlangıç adımlarında, göndermek istediğiniz desteklenen tüm istem istekleri için gerekli olan genel kurulum açıklanmaktadır.
1. adım: Firebase projesi oluşturun ve uygulamanızı Firebase'e bağlayın
Firebase konsolunda oturum açın, ardından Firebase projenizi seçin.
Firebase konsolunda Firebase AI Logic sayfasına gidin.
Projeniz için gerekli API'leri ve kaynakları ayarlamanıza yardımcı olacak rehberli bir iş akışı başlatmak için Başlayın'ı tıklayın.
Projenizi "Gemini API" sağlayıcı kullanacak şekilde ayarlayın.
Gemini Developer API ile başlamanızı öneririz. Dilediğiniz zaman Vertex AI Gemini API (ve faturalandırma için gerekli olan) ayarlarını yapabilirsiniz.
Konsol, Gemini Developer API için gerekli API'leri etkinleştirir ve projenizde Gemini API anahtarı oluşturur.
Bu Gemini API anahtarını uygulamanızın kod tabanına eklemeyin. Daha fazla bilgi edinin.Konsolun iş akışında istenirse uygulamanızı kaydetmek ve Firebase'e bağlamak için ekrandaki talimatları uygulayın.
SDK'yı uygulamanıza eklemek için bu kılavuzdaki sonraki adıma geçin.
2. adım: Gerekli SDK'ları ekleyin
Firebase AI Logic Android için SDK (firebase-aifirebase-ai-ondevice
Modülünüzde (uygulama düzeyinde) Gradle dosyası (ör. <project>/<app-module>/build.gradle.kts) Android için Firebase AI Logic kitaplıklarının bağımlılıklarını ekleyin:
Kotlin
dependencies { // ... other androidx dependencies // Add the dependencies for the Firebase AI Logic libraries // Note that the on-device SDK is not yet included in the Firebase Android BoM implementation("com.google.firebase:firebase-ai:17.10.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta01") }
Java
Java için iki ek kitaplık eklemeniz gerekir.
dependencies { // ... other androidx dependencies // Add the dependencies for the Firebase AI Logic libraries // Note that the on-device SDK is not yet included in the Firebase Android BoM implementation("com.google.firebase:firebase-ai:17.10.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta01") // Required for one-shot operations (to use `ListenableFuture` from Guava Android) implementation("com.google.guava:guava:31.0.1-android") // Required for streaming operations (to use `Publisher` from Reactive Streams) implementation("org.reactivestreams:reactive-streams:1.0.4") }
3. adım: Cihaz üzerinde modelin kullanılabilir olup olmadığını kontrol edin
FirebaseAIOnDevice kullanarak cihaz üzerinde modelin kullanılabilir olup olmadığını kontrol edin ve kullanılamıyorsa modeli indirin.
İndirildikten sonra AICore, modeli otomatik olarak güncel tutar. AICore ve cihazdaki model indirme işlemini yönetme hakkında daha fazla bilgi için snippet'in ardından gelen notlara göz atın.
Kotlin
val status = FirebaseAIOnDevice.checkStatus()
when (status) {
OnDeviceModelStatus.UNAVAILABLE -> {
Log.w(TAG, "On-device model is unavailable")
}
OnDeviceModelStatus.DOWNLOADABLE -> {
FirebaseAIOnDevice.download().collect { status ->
when (status) {
is DownloadStatus.DownloadStarted ->
Log.w(TAG, "Starting download - ${status.bytesToDownload}")
is DownloadStatus.DownloadInProgress ->
Log.w(TAG, "Download in progress ${status.totalBytesDownloaded} bytes downloaded")
is DownloadStatus.DownloadCompleted ->
Log.w(TAG, "On-device model download complete")
is DownloadStatus.DownloadFailed ->
Log.e(TAG, "Download failed ${status}")
}
}
}
OnDeviceModelStatus.DOWNLOADING -> {
Log.w(TAG, "On-device model is being downloaded")
}
OnDeviceModelStatus.AVAILABLE -> {
Log.w(TAG, "On-device model is available")
}
}
Java
Checking for and downloading the model is not yet available for Java.
However, all other APIs and interactions in this guide are available for Java.
Cihaz üzerinde modeli indirme hakkında aşağıdakileri unutmayın:
Cihaz üzerinde modeli indirme süresi, ağınız da dahil olmak üzere birçok faktöre bağlıdır.
Kodunuz, birincil veya yedek çıkarım için cihaz üzerinde bir model kullanıyorsa modelin, uygulamanızın yaşam döngüsünün başlarında indirildiğinden emin olun. Böylece, son kullanıcılarınız uygulamanızdaki kodla karşılaşmadan önce cihaz üzerinde model kullanılabilir.
Cihaz üzerinde çıkarım isteği yapıldığında cihaz üzerinde model kullanılamıyorsa SDK, cihaz üzerinde modelin indirilmesini otomatik olarak tetiklemez. SDK, bulutta barındırılan modele geri döner veya bir istisna oluşturur (çıkarım modlarının davranışı hakkında ayrıntılı bilgi edinin).
AICore (bir Android sistem hizmeti) hangi modelin ve sürümün indirildiğini sizin için yönetir, modeli güncel tutar vb. Cihazda yalnızca bir model indirileceğini unutmayın. Bu nedenle, cihazdaki başka bir uygulama daha önce cihaz üzerindeki modeli başarıyla indirdiyse bu kontrol, modelin kullanılabilir olduğunu gösterir.
Gecikme optimizasyonu
İlk çıkarım çağrısı için optimizasyon yapmak istiyorsanız uygulamanız warmup() işlevini çağırabilir.
Bu işlem, cihaz üzerindeki modeli belleğe yükler ve çalışma zamanı bileşenlerini başlatır.
4. adım: Hizmeti başlatın ve model örneği oluşturun
|
Sağlayıcıya özel içerikleri ve kodu bu sayfada görüntülemek için Gemini API sağlayıcınızı tıklayın. |
Modele istem isteği göndermeden önce aşağıdakileri ayarlayın.
Seçtiğiniz API sağlayıcısı için hizmeti başlatın.
GenerativeModelörneği oluşturun vemodedeğerini aşağıdakilerden biri olarak ayarlayın. Buradaki açıklamalar çok üst düzeydir ancak bu modların davranışı hakkında ayrıntılı bilgiyi Çıkarım modu ayarlama bölümünde bulabilirsiniz.PREFER_ON_DEVICE: Cihaz üzerinde modeli kullanmayı deneyin. Aksi takdirde bulutta barındırılan modele geri dönün.ONLY_ON_DEVICE: Cihaz üzerinde modeli kullanmayı deneyin; aksi takdirde bir istisna oluşturun.PREFER_IN_CLOUD: Bulutta barındırılan modeli kullanmayı deneyin; aksi takdirde cihazdaki modele geri dönün.ONLY_IN_CLOUD: Cloud'da barındırılan modeli kullanmayı deneyin; aksi takdirde bir istisna oluşturun.
Kotlin
// Using this SDK to access on-device inference is an Experimental release and requires opt-in
@OptIn(PublicPreviewAPI::class)
// ...
// Initialize the Gemini Developer API backend service
// Create a GenerativeModel instance with a model that supports your use case
// Set the inference mode (like PREFER_ON_DEVICE to use the on-device model if available)
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "MODEL_NAME",
onDeviceConfig = OnDeviceConfig(mode = InferenceMode.PREFER_ON_DEVICE)
)
Java
// Initialize the Gemini Developer API backend service
// Create a GenerativeModel instance with a model that supports your use case
// Set the inference mode (like PREFER_ON_DEVICE to use the on-device model if available)
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel(
"MODEL_NAME",
new OnDeviceConfig(InferenceMode.PREFER_ON_DEVICE)
);
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
5. adım: Bir modele istem isteği gönderme
Bu bölümde, aşağıdakiler de dahil olmak üzere farklı türlerde çıkışlar oluşturmak için çeşitli giriş türlerini nasıl göndereceğiniz gösterilmektedir:
Yalnızca metin içeren girişlerden metin oluşturma
| Bu örneği denemeden önce bu kılavuzun Başlarken bölümünü tamamladığınızdan emin olun. |
Metin içeren bir istemden metin oluşturmak için
generateContent()
kullanabilirsiniz:
Kotlin
// Imports + initialization of Gemini API backend service + creation of model instance
// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."
// To generate text output, call generateContent with the text input
val response = model.generateContent(prompt)
print(response.text)
Java
// Imports + initialization of Gemini API backend service + creation of model instance
// Provide a prompt that contains text
Content prompt = new Content.Builder()
.addText("Write a story about a magic backpack.")
.build();
// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Firebase AI Logic'nın, generateContentStream kullanarak metin yanıtlarının akışını da desteklediğini unutmayın
(generateContent yerine).
Metin ve resim (çok formatlı) girişinden metin oluşturma
| Bu örneği denemeden önce bu kılavuzun Başlarken bölümünü tamamladığınızdan emin olun. |
Metin ve en fazla bir resim dosyası (yalnızca bitmap) içeren bir istemden metin oluşturmak için generateContent()'ı kullanabilirsiniz. Her giriş dosyasının mimeType ve dosyanın kendisi sağlanır.
Kotlin
// Imports + initialization of Gemini API backend service + creation of model instance
// Loads an image from the app/res/drawable/ directory
val bitmap: Bitmap = BitmapFactory.decodeResource(resources, R.drawable.sparky)
// Provide a prompt that includes the image specified above and text
val prompt = content {
image(bitmap)
text("What developer tool is this mascot from?")
}
// To generate text output, call generateContent with the prompt
val response = model.generateContent(prompt)
print(response.text)
Java
// Imports + initialization of Gemini API backend service + creation of model instance
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sparky);
// Provide a prompt that includes the image specified above and text
Content content = new Content.Builder()
.addImage(bitmap)
.addText("What developer tool is this mascot from?")
.build();
// To generate text output, call generateContent with the prompt
ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Firebase AI Logic'nın, generateContentStream kullanarak metin yanıtlarının akışını da desteklediğini unutmayın
(generateContent yerine).
Başka ne yapabilirsin?
Hibrit deneyimleriniz için çeşitli ek yapılandırma seçenekleri ve özelliklerinden yararlanabilirsiniz:
Cihaz üzerinde mi yoksa bulutta mı çıkarım yapıldığını belirleyin.
Yanıtları kontrol etmek için model yapılandırmasını kullanın (ör. sıcaklık).
Cihaz üzerinde çıkarım için henüz kullanılamayan özellikler
Deneysel bir sürüm olduğundan, bulut modellerinin tüm özellikleri cihaz üzerinde çıkarım için kullanılamaz.
Bu bölümde listelenen özellikler henüz cihaz üzerinde çıkarım için kullanılamamaktadır. Bu özelliklerden herhangi birini kullanmak istiyorsanız daha tutarlı bir deneyim için ONLY_IN_CLOUD çıkarım modunu kullanmanızı öneririz.
Yapılandırılmış çıkış (ör. JSON veya enums) oluşturma
Bitmap dışındaki resim dosyası giriş türlerinden metin oluşturma (belleğe yüklenen resim)
Birden fazla resim dosyasından metin oluşturma
Ses, video ve doküman (ör. PDF) girişlerinden metin oluşturma
Gemini veya Imagen modellerini kullanarak resim oluşturma
Çok formatlı isteklerde URL'ler kullanarak dosya sağlama. Dosyaları, cihaz üzerindeki modellere satır içi veri olarak sağlamanız gerekir.
4.000 jetonu (veya yaklaşık 3.000 İngilizce kelime) aşan istekler gönderme
Çok adımlı sohbet
Modele yanıtını oluşturmasına yardımcı olacak araçlar sağlama (ör. işlev çağırma, kod yürütme, URL bağlamı ve Google Arama ile temellendirme)
Firebase konsolundaki yapay zeka izleme özelliği, cihaz üzerinde çıkarım (cihaz üzerinde günlükler dahil) ile ilgili herhangi bir veri göstermez. Ancak, bulutta barındırılan bir modeli kullanan tüm çıkarımlar, Firebase AI Logic aracılığıyla diğer çıkarımlar gibi izlenebilir.
Ek sınırlamalar
Yukarıdakilere ek olarak, cihaz üzerinde çıkarım aşağıdaki sınırlamalara tabidir (daha fazla bilgiyi ML Kit dokümanlarında bulabilirsiniz):
Uygulamanızın son kullanıcısı, cihaz üzerinde çıkarım için desteklenen bir cihaz kullanmalıdır.
Uygulamanız yalnızca ön planda çalışırken cihaz üzerinde çıkarım gerçekleştirebilir.
Cihaz üzerinde çıkarım için yalnızca İngilizce ve Korece doğrulanmıştır.
Cihaz üzerinde çıkarım isteğinin tamamı için maksimum jeton sınırı 4.000 jetondur. İsteklerinizin bu sınırı aşabileceğini düşünüyorsanız bulutta barındırılan bir modeli kullanabilen bir çıkarım modu yapılandırdığınızdan emin olun.
Uzun çıktı (256'dan fazla jeton) gerektiren cihaz üzerinde çıkarım kullanım alanlarından kaçınmanızı öneririz.
AICore (cihazdaki modelleri yöneten bir Android sistem hizmeti), uygulama başına çıkarım kotası uygular. Kısa süre içinde çok fazla API isteği göndermek
ErrorCode.BUSYyanıtına neden olur. Bu hatayı alıyorsanız isteği yeniden denemek için eksponansiyel geri yüklemeyi kullanabilirsiniz. Ayrıca, bir uygulama uzun süreli bir kotayı (örneğin, günlük kota) aşarsaErrorCode.PER_APP_BATTERY_USE_QUOTA_EXCEEDEDdöndürülebilir.
Firebase AI Logic ile ilgili deneyiminiz hakkında geri bildirim verme