আপনি Firebase AI Logic ব্যবহার করে হাইব্রিড ইনফারেন্সের মাধ্যমে এআই-চালিত অ্যান্ড্রয়েড অ্যাপ এবং ফিচার তৈরি করতে পারেন। হাইব্রিড ইনফারেন্সের ফলে, ডিভাইসে থাকা মডেল উপলব্ধ থাকলে তা ব্যবহার করে ইনফারেন্স চালানো যায় এবং অন্যথায় এটি নির্বিঘ্নে ক্লাউড-হোস্টেড মডেলে ফিরে আসে (এবং এর বিপরীতটিও ঘটে)।
এই পৃষ্ঠায় ক্লায়েন্ট SDK ব্যবহার শুরু করার পদ্ধতি বর্ণনা করা হয়েছে, পাশাপাশি তাপমাত্রার মতো অতিরিক্ত কনফিগারেশন বিকল্প ও সক্ষমতাগুলোও দেখানো হয়েছে।
উল্লেখ্য যে, Firebase AI Logic SDK v17.10.0+ ( BoM v34.10.0+) ব্যবহার করে এবং নির্দিষ্ট ডিভাইসে চালিত অ্যান্ড্রয়েড অ্যাপের জন্য Firebase AI Logic- এর মাধ্যমে অন-ডিভাইস ইনফারেন্স সমর্থিত। এটি ML Kit-এর শর্তাবলী এবং ML Kit-এর Gen AI দিকগুলির জন্য নির্দিষ্ট শর্তাবলী দ্বারা নিয়ন্ত্রিত হয়।
Recommended use cases and supported capabilities
Recommended use cases
Using an on-device model for inference offers:
- Enhanced privacy
- Local context
- Inference at no-cost
- Offline functionality
Using hybrid functionality offers:
- ডিভাইসে মডেলের সহজলভ্যতা এবং ইন্টারনেট সংযোগের ব্যবস্থা করে আপনার আরও বেশি দর্শকের কাছে পৌঁছান।
অন-ডিভাইস ইনফারেন্সের জন্য সমর্থিত ক্ষমতা এবং বৈশিষ্ট্যসমূহ
অন-ডিভাইস ইনফারেন্স শুধুমাত্র একক-টার্ন টেক্সট জেনারেশন (চ্যাট নয় ) সমর্থন করে, যার আউটপুট স্ট্রিমিং বা নন-স্ট্রিমিং হতে পারে। এটি নিম্নলিখিত টেক্সট-জেনারেটর ক্ষমতাগুলো সমর্থন করে:
Generating text from text-only input
টেক্সট ও ইমেজ ইনপুট থেকে টেক্সট তৈরি করা, বিশেষত ইনপুট হিসেবে একটিমাত্র বিটম্যাপ ইমেজ ব্যবহার করে।
এই পৃষ্ঠার নীচে অন-ডিভাইস ইনফারেন্সের জন্য এখনও অনুপলব্ধ ফিচারগুলির তালিকাটি পর্যালোচনা করতে ভুলবেন না।
শুরু করার আগে
Take note of the following:
Supported APIs:
ইন-ক্লাউড ইনফারেন্স আপনার নির্বাচিত জেমিনি এপিআই প্রোভাইডার ( জেমিনি ডেভেলপার এপিআই অথবা ভার্টেক্স এআই জেমিনি এপিআই ) ব্যবহার করে।
On-device inference uses the Prompt API from ML Kit , which is in beta and only available on specific devices .
This page describes how to get started .
এই সাধারণ সেটআপটি সম্পন্ন করার পর, অতিরিক্ত কনফিগারেশন বিকল্প এবং কার্যকারিতাগুলো (যেমন তাপমাত্রা নির্ধারণ) দেখে নিন।
সমর্থিত অ্যান্ড্রয়েড ডিভাইস এবং তাদের অন-ডিভাইস মডেল
অন-ডিভাইস ইনফারেন্সের জন্য (যা এমএল কিট-এর প্রম্পট এপিআই ব্যবহার করে), আপনি এমএল কিট ডকুমেন্টেশনে সমর্থিত ডিভাইস এবং তাদের অন-ডিভাইস মডেলগুলির একটি তালিকা খুঁজে পেতে পারেন।
শুরু করুন
এই প্রারম্ভিক ধাপগুলোতে আপনার পাঠাতে চাওয়া যেকোনো সমর্থিত প্রম্পট অনুরোধের জন্য প্রয়োজনীয় সাধারণ সেটআপ বর্ণনা করা হয়েছে।
Step 1 : Set up a Firebase project and connect your app to Firebase
Firebase কনসোলে সাইন ইন করুন এবং তারপরে আপনার ফায়ারবেস প্রজেক্টটি নির্বাচন করুন।
আপনার যদি আগে থেকে কোনো ফায়ারবেস প্রজেক্ট না থাকে, তাহলে একটি নতুন ফায়ারবেস প্রজেক্ট তৈরি করতে বাটনটিতে ক্লিক করুন এবং তারপর নিচের বিকল্পগুলোর যেকোনো একটি ব্যবহার করুন:
বিকল্প ১ : ওয়ার্কফ্লো-এর প্রথম ধাপে একটি নতুন প্রজেক্টের নাম লিখে একটি সম্পূর্ণ নতুন Firebase প্রজেক্ট তৈরি করুন (এবং এর অধীনস্থ Google Cloud প্রজেক্টটিও স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে)।
বিকল্প ২ : একটি বিদ্যমান Google Cloud প্রজেক্টে ফায়ারবেস যোগ করতে (পৃষ্ঠার নীচে থাকা) ‘ Add Firebase to Google Cloud project’-এ ক্লিক করুন। ওয়ার্কফ্লো-এর প্রথম ধাপে, বিদ্যমান প্রজেক্টটির নাম লেখা শুরু করুন এবং তারপরে প্রদর্শিত তালিকা থেকে প্রজেক্টটি নির্বাচন করুন।
একটি Firebase প্রজেক্ট তৈরি করতে স্ক্রিনে দেখানো ওয়ার্কফ্লো-এর বাকি ধাপগুলো সম্পূর্ণ করুন। মনে রাখবেন, অনুরোধ করা হলে Firebase AI Logic SDK-গুলো ব্যবহার করার জন্য আপনাকে Google Analytics সেট আপ করতে হবে না ।
Firebase কনসোলে, AI Services > AI Logic- এ যান।
আপনার প্রোজেক্টের জন্য প্রয়োজনীয় এপিআই ও রিসোর্স সেট আপ করতে সাহায্যকারী একটি নির্দেশিত ওয়ার্কফ্লো চালু করতে 'Get started'- এ ক্লিক করুন।
আপনার প্রজেক্টটি একটি ' Gemini API ' প্রোভাইডার ব্যবহার করার জন্য সেট আপ করুন।
আমরা জেমিনি ডেভেলপার এপিআই (Gemini Developer API) ব্যবহার করে কাজ শুরু করার পরামর্শ দিই। আপনি যেকোনো সময়ে ভার্টেক্স এআই জেমিনি এপিআই ( Vertex AI Gemini API) (এবং বিলিংয়ের জন্য এর প্রয়োজনীয়তা) সেট আপ করে নিতে পারেন।
জেমিনি ডেভেলপার এপিআই- এর জন্য, কনসোলটি প্রয়োজনীয় এপিআইগুলো সক্রিয় করবে এবং আপনার প্রোজেক্টে একটি জেমিনি এপিআই কী তৈরি করবে।
এই জেমিনি এপিআই কী-টি আপনার অ্যাপের কোডবেসে যোগ করবেন না । আরও জানুন।If prompted in the console's workflow, follow the on-screen instructions to register your app and connect it to Firebase.
আপনার অ্যাপে SDK যোগ করতে এই নির্দেশিকার পরবর্তী ধাপে যান।
Step 2 : Add the required SDKs
The Firebase AI Logic SDK for Android (firebase-ai ) এবং Firebase AI Logic On-Device SDK (firebase-ai-ondevice ) provide access to the APIs for interacting with generative models.
আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (যেমন <project>/<app-module>/build.gradle.kts ), অ্যান্ড্রয়েডের জন্য ফায়ারবেস এআই লজিক লাইব্রেরির ডিপেন্ডেন্সিগুলো যোগ করুন:
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.13.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta03") }
Java
For Java, you need to add two additional libraries.
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.13.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta03") // 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") }
ধাপ ৩ : ডিভাইসে থাকা মডেলটি উপলব্ধ আছে কিনা তা পরীক্ষা করুন।
FirebaseAIOnDevice ব্যবহার করে অন-ডিভাইস মডেলটি উপলব্ধ আছে কিনা তা পরীক্ষা করুন, এবং উপলব্ধ না থাকলে মডেলটি ডাউনলোড করুন।
একবার ডাউনলোড হয়ে গেলে, AICore স্বয়ংক্রিয়ভাবে মডেলটি আপডেট রাখবে। AICore এবং ডিভাইসে মডেল ডাউনলোড পরিচালনা সম্পর্কে আরও বিস্তারিত জানতে কোড অংশের পরের নোটগুলো দেখুন।
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.
অন-ডিভাইস মডেল ডাউনলোড করার বিষয়ে নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:
The time it takes to download the on-device model depends on many factors, including your network.
যদি আপনার কোড তার প্রাথমিক বা ফলব্যাক ইনফারেন্সের জন্য কোনো অন-ডিভাইস মডেল ব্যবহার করে, তাহলে নিশ্চিত করুন যে মডেলটি আপনার অ্যাপের লাইফসাইকেলের শুরুতেই ডাউনলোড করা হয়েছে, যাতে আপনার অ্যাপে কোডটির সম্মুখীন হওয়ার আগেই অন-ডিভাইস মডেলটি উপলব্ধ থাকে।
অন-ডিভাইস ইনফারেন্সের অনুরোধ করার সময় যদি অন-ডিভাইস মডেলটি উপলব্ধ না থাকে, তাহলে SDK স্বয়ংক্রিয়ভাবে অন-ডিভাইস মডেলটি ডাউনলোড করা শুরু করবে না । SDK হয় ক্লাউড-হোস্টেড মডেলে ফিরে যাবে অথবা একটি এক্সেপশন থ্রো করবে ( ইনফারেন্স মোডগুলোর আচরণ সম্পর্কে বিস্তারিত দেখুন)।
AICore (একটি অ্যান্ড্রয়েড সিস্টেম পরিষেবা) আপনার জন্য কোন মডেল এবং সংস্করণ ডাউনলোড করা হবে তা পরিচালনা করে, মডেলটিকে আপডেট রাখে ইত্যাদি। মনে রাখবেন যে ডিভাইসে কেবল একটি মডেলই ডাউনলোড করা থাকবে, তাই যদি ডিভাইসের অন্য কোনো অ্যাপ আগে সফলভাবে অন-ডিভাইস মডেলটি ডাউনলোড করে থাকে, তাহলে এই চেকটি দেখাবে যে মডেলটি উপলব্ধ আছে।
Latency optimization
প্রথম ইনফারেন্স কলটিকে অপ্টিমাইজ করার জন্য, আপনি আপনার অ্যাপকে warmup() কল করাতে পারেন। এটি অন-ডিভাইস মডেলটিকে মেমরিতে লোড করে এবং রানটাইম কম্পোনেন্টগুলোকে ইনিশিয়ালাইজ করে।
Step 4 : Initialize the service and create a model instance
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন। |
Set up the following before you send a prompt request to the model.
আপনার নির্বাচিত এপিআই প্রোভাইডারের জন্য সার্ভিসটি চালু করুন।
একটি
GenerativeModelইনস্ট্যান্স তৈরি করুন এবংmodeনিম্নলিখিতগুলির মধ্যে একটিতে সেট করুন। এখানকার বর্ণনাগুলি খুবই প্রাথমিক স্তরের, তবে আপনি "একটি ইনফারেন্স মোড সেট করুন" অংশে এই মোডগুলির আচরণ সম্পর্কে বিস্তারিত জানতে পারবেন।PREFER_ON_DEVICE: Attempt to use on-device model; otherwise, fall back to the cloud-hosted model .ONLY_ON_DEVICE: Attempt to use on-device model; otherwise, throw an exception .PREFER_IN_CLOUD: Attempt to use the cloud-hosted model; otherwise, fall back to the on-device model .ONLY_IN_CLOUD: Attempt to use the cloud-hosted model; otherwise, throw an exception .
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);
ধাপ ৫ : একজন মডেলকে একটি প্রম্পট অনুরোধ পাঠান
This section shows you how to send various types of input to generate different types of output, including:
শুধুমাত্র টেক্সট ইনপুট থেকে টেক্সট তৈরি করুন
| Before trying this sample, make sure that you've completed the Get started section of this guide. |
You can use generateContent() to generate text from a prompt that contains text:
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);
Note that Firebase AI Logic also supports streaming of text responses using generateContentStream (instead of generateContent ).
Generate text from text-and-image (multimodal) input
| Before trying this sample, make sure that you've completed the Get started section of this guide. |
You can use generateContent() to generate text from a prompt that contains text and up to one image file (Bitmap only) — providing each input file's mimeType and the file itself.
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);
Note that Firebase AI Logic also supports streaming of text responses using generateContentStream (instead of generateContent ).
তুমি আর কী করতে পারো?
You can use various additional configuration options and capabilities for your hybrid experiences:
Features not yet available for on-device inference
As an experimental release, not all the capabilities of cloud models are available for on-device inference.
এই বিভাগে তালিকাভুক্ত বৈশিষ্ট্যগুলি এখনও অন-ডিভাইস ইনফারেন্সের জন্য উপলব্ধ নয়। আপনি যদি এই বৈশিষ্ট্যগুলির কোনোটি ব্যবহার করতে চান, তাহলে আরও সামঞ্জস্যপূর্ণ অভিজ্ঞতার জন্য আমরা ONLY_IN_CLOUD ইনফারেন্স মোড ব্যবহার করার পরামর্শ দিই।
Generating structured output (like JSON or enums)
Generating text from image file input types other than Bitmap (image loaded into memory)
একাধিক ইমেজ ফাইল থেকে টেক্সট তৈরি করা
Generating text from audio, video, and documents (like PDFs) inputs
জেমিনি বা ইমাজেন মডেল ব্যবহার করে ছবি তৈরি করা
Providing files using URLs in multimodal requests. You must provide files as inline data to on-device models
৪০০০ টোকেনের (বা প্রায় ৩০০০ ইংরেজি শব্দের) বেশি দৈর্ঘ্যের অনুরোধ পাঠানো হচ্ছে।
মাল্টি-টার্ন চ্যাট
মডেলটিকে তার প্রতিক্রিয়া তৈরি করতে সাহায্য করার জন্য বিভিন্ন টুল সরবরাহ করা (যেমন ফাংশন কলিং, কোড এক্সিকিউশন, ইউআরএল কনটেক্সট,
Google Search সাথে গ্রাউন্ডিং, এবংGoogle Maps সাথে গ্রাউন্ডিং)।
Firebase কনসোলে AI মনিটরিং অন-ডিভাইস ইনফারেন্সের (অন-ডিভাইস লগ সহ) কোনো ডেটা দেখায় না । তবে, ক্লাউড-হোস্টেড মডেল ব্যবহার করে এমন যেকোনো ইনফারেন্সকে Firebase AI Logic- এর মাধ্যমে অন্যান্য ইনফারেন্সের মতোই মনিটর করা যায়।
অতিরিক্ত সীমাবদ্ধতা
উপরোক্ত বিষয়গুলো ছাড়াও, অন-ডিভাইস ইনফারেন্সের নিম্নলিখিত সীমাবদ্ধতাগুলো রয়েছে ( এমএল কিট ডকুমেন্টেশনে আরও জানুন):
অন-ডিভাইস ইনফারেন্সের জন্য আপনার অ্যাপের শেষ ব্যবহারকারীকে অবশ্যই একটি সমর্থিত ডিভাইস ব্যবহার করতে হবে।
আপনার অ্যাপটি শুধুমাত্র ফোরগ্রাউন্ডে থাকলেই অন-ডিভাইস ইনফারেন্স চালাতে পারবে।
ডিভাইসে ইনফারেন্সের জন্য শুধুমাত্র ইংরেজি এবং কোরিয়ান ভাষাই যাচাই করা হয়েছে।
সম্পূর্ণ অন-ডিভাইস ইনফারেন্স অনুরোধের জন্য সর্বোচ্চ টোকেন সীমা হলো ৪০০০ টোকেন। যদি আপনার অনুরোধ এই সীমা অতিক্রম করার সম্ভাবনা থাকে, তাহলে এমন একটি ইনফারেন্স মোড কনফিগার করুন যা ক্লাউড-হোস্টেড মডেল ব্যবহার করতে পারে।
আমরা এমন অন-ডিভাইস ইনফারেন্স ব্যবহার এড়িয়ে চলার পরামর্শ দিই, যেগুলোর জন্য দীর্ঘ আউটপুট (২৫৬টির বেশি টোকেন) প্রয়োজন হয়।
AICore (একটি অ্যান্ড্রয়েড সিস্টেম পরিষেবা যা ডিভাইসের মডেলগুলো পরিচালনা করে) প্রতিটি অ্যাপের জন্য একটি ইনফারেন্স কোটা প্রয়োগ করে। অল্প সময়ের মধ্যে খুব বেশি API অনুরোধ করলে
ErrorCode.BUSYপ্রতিক্রিয়া পাওয়া যাবে। আপনি যদি এই ত্রুটিটি পান, তাহলে অনুরোধটি পুনরায় চেষ্টা করার জন্য এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করার কথা বিবেচনা করুন। এছাড়াও, যদি কোনো অ্যাপ দীর্ঘ-মেয়াদী কোটা (উদাহরণস্বরূপ, দৈনিক কোটা) অতিক্রম করে, তাহলেErrorCode.PER_APP_BATTERY_USE_QUOTA_EXCEEDEDফেরত আসতে পারে।
Firebase AI Logic ব্যবহারের অভিজ্ঞতা সম্পর্কে মতামত দিন।