Bạn có thể xây dựng các ứng dụng và tính năng Android dựa trên AI với tính năng suy luận kết hợp bằng Firebase AI Logic. Tính năng suy luận kết hợp cho phép chạy tính năng suy luận bằng các mô hình trên thiết bị khi có sẵn và chuyển đổi liền mạch sang các mô hình được lưu trữ trên đám mây (và ngược lại).
Trang này mô tả cách bắt đầu sử dụng SDK ứng dụng, cũng như hiển thị các tuỳ chọn và khả năng cấu hình bổ sung.
Xin lưu ý rằng tính năng suy luận trên thiết bị thông qua Firebase AI Logic được hỗ trợ cho các ứng dụng Android sử dụng Firebase AI Logic SDK phiên bản 17.10.0 trở lên (BoM phiên bản 34.10.0 trở lên) và chạy trên một số thiết bị. Tính năng này chịu sự điều chỉnh của các điều khoản của Bộ công cụ học máy, cũng như các điều khoản dành riêng cho các khía cạnh AI tạo sinh của Bộ công cụ học máy.
Trường hợp sử dụng được đề xuất và các tính năng được hỗ trợ
Trường hợp sử dụng được đề xuất
Việc sử dụng mô hình trên thiết bị để suy luận mang lại:
- Quyền riêng tư nâng cao
- Bối cảnh địa phương
- Suy luận miễn phí
- Chức năng ngoại tuyến
Việc sử dụng chức năng kết hợp mang lại:
- Tiếp cận nhiều đối tượng hơn bằng cách đáp ứng khả năng sử dụng mô hình trên thiết bị và kết nối Internet
Các tính năng và chức năng được hỗ trợ cho tính năng suy luận trên thiết bị
Tính năng suy luận trên thiết bị chỉ hỗ trợ tạo văn bản một lượt (không phải trò chuyện), với đầu ra truyền trực tuyến hoặc không truyền trực tuyến. Tính năng này hỗ trợ các khả năng tạo văn bản sau:
Tạo văn bản từ dữ liệu đầu vào có văn bản và hình ảnh, cụ thể là một hình ảnh Bitmap làm dữ liệu đầu vào
Hãy nhớ xem danh sách các tính năng chưa có cho tính năng suy luận trên thiết bị ở cuối trang này.
Trước khi bắt đầu
Hãy lưu ý những điều sau:
Các API được hỗ trợ:
Tính năng suy luận trong đám mây sử dụng nhà cung cấp Gemini API mà bạn chọn (hoặc Gemini Developer API hoặc Agent Platform Gemini API (formerly Vertex AI)).
Tính năng suy luận trên thiết bị sử dụng Prompt API của Bộ công cụ học máy, API này đang ở giai đoạn thử nghiệm và chỉ có trên một số thiết bị.
Trang này mô tả cách bắt đầu.
Sau khi hoàn tất quy trình thiết lập tiêu chuẩn này, hãy xem các tính năng và tuỳ chọn cấu hình bổ sung.
Các thiết bị Android được hỗ trợ và mô hình trên thiết bị của chúng
Đối với tính năng suy luận trên thiết bị (sử dụng Prompt API của Bộ công cụ học máy), bạn có thể xem danh sách các thiết bị được hỗ trợ và mô hình trên thiết bị của chúng trong tài liệu về Bộ công cụ học máy.
Bắt đầu
Các bước bắt đầu này mô tả quy trình thiết lập chung bắt buộc cho mọi yêu cầu câu lệnh được hỗ trợ mà bạn muốn gửi.
Bước 1: Thiết lập dự án Firebase và kết nối ứng dụng của bạn với Firebase
Đăng nhập vào bảng điều khiển Firebase, sau đó chọn dự án Firebase của bạn.
Trong bảng điều khiển Firebase, hãy chuyển đến Dịch vụ AI > AI Logic.
Nhấp vào Bắt đầu để khởi chạy quy trình có hướng dẫn giúp bạn thiết lập các API bắt buộc và tài nguyên cho dự án của mình.
Nếu được nhắc, hãy làm theo hướng dẫn trên màn hình để đăng ký ứng dụng và thêm cấu hình Firebase vào ứng dụng của bạn.
Khi được yêu cầu chọn "nhà cung cấp Gemini API", bạn nên chọn Gemini Developer API để có thể nhanh chóng bắt đầu sử dụng miễn phí.
Sau này, bạn luôn có thể thiết lập Agent Platform Gemini API (formerly Vertex AI) (và yêu cầu thanh toán của API này).
Tiếp tục trong quy trình để thiết lập các API bắt buộc và các dịch vụ liên kết cho Firebase AI Logic.
Kể từ đầu tháng 7 năm 2026, giai đoạn này của quy trình sẽ tự động thực thi Firebase App Check cho AI Logic, đây là một dịch vụ quan trọng giúp bảo vệ Gemini API khi API này được truy cập trực tiếp từ ứng dụng của bạn. Trong quá trình bắt đầu sử dụng (xem các bước sau trong hướng dẫn này), bạn cần định cấu hình App Check nhà cung cấp gỡ lỗi cho quá trình phát triển cục bộ khi App Check được thực thi.
Tiếp tục bước tiếp theo trong hướng dẫn này để thêm các SDK bắt buộc vào ứng dụng của bạn.
Bước 2: Thêm các SDK bắt buộc
Firebase AI LogicSDK cho Android
(firebase-aifirebase-ai-ondevice
Trong tệp Gradle của mô-đun (cấp ứng dụng)
(chẳng hạn như <project>/<app-module>/build.gradle.kts), hãy thêm các phần phụ thuộc cho các thư viện
Firebase AI Logic và App Check cho Android:
Kotlin
dependencies { // ... other androidx dependencies // Add the dependencies for the Firebase AI Logic and App Check libraries // Note that the on-device SDK is not yet included in the Firebase Android BoM implementation("com.google.firebase:firebase-ai:18.0.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta06") implementation("com.google.firebase:firebase-appcheck-debug:20.0.0") }
Java
Đối với Java, bạn cần thêm 2 thư viện khác.
dependencies { // ... other androidx dependencies // Add the dependencies for the Firebase AI Logic and App Check libraries // Note that the on-device SDK is not yet included in the Firebase Android BoM implementation("com.google.firebase:firebase-ai:18.0.0") implementation("com.google.firebase:firebase-ai-ondevice:16.0.0-beta06") implementation("com.google.firebase:firebase-appcheck-debug:20.0.0") // 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") }
Bước 3: Định cấu hình nhà cung cấp dịch vụ gỡ lỗi App Check cho quá trình phát triển cục bộ
Kể từ đầu tháng 7 năm 2026, trong quy trình thiết lập có hướng dẫn cho AI Logic trong bảng điều khiển, Firebase App Check sẽ tự động được thực thi để bảo vệ Gemini API. Đối với quá trình phát triển cục bộ, bạn cần định cấu hình App Check nhà cung cấp dịch vụ gỡ lỗi để bỏ qua quy trình chứng thực trong khi vẫn duy trì việc thực thi App Check.
Trong bản gỡ lỗi, hãy định cấu hình App Check để sử dụng nhà cung cấp dịch vụ gỡ lỗi:
Kotlin
Firebase.initialize(context = this) Firebase.appCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance(), )Java
FirebaseApp.initializeApp(/*context=*/ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( DebugAppCheckProviderFactory.getInstance());Lấy mã thông báo gỡ lỗi:
Chạy ứng dụng của bạn trong trình mô phỏng hoặc trên thiết bị kiểm thử.
Tìm mã thông báo gỡ lỗi App Check trong nhật ký của bạn. Ví dụ:
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678Sao chép mã thông báo (ví dụ:
123a4567-b89c-12d3-e456-789012345678).
Đăng ký mã thông báo gỡ lỗi với App Check:
Trong bảng điều khiển Firebase, hãy chuyển đến thẻ Bảo mật > Kiểm tra ứng dụng > Ứng dụng.
Tìm ứng dụng của bạn, nhấp vào trình đơn mục bổ sung (), sau đó chọn Quản lý mã thông báo gỡ lỗi.
Làm theo hướng dẫn trên màn hình để đăng ký mã thông báo gỡ lỗi.
Để biết thông tin chi tiết về nhà cung cấp dịch vụ gỡ lỗi (bao gồm cả cách lấy mã thông báo gỡ lỗi mới), hãy xem tài liệu App Check chính thức.
Bước 4: Kiểm tra xem mô hình trên thiết bị có hay không
Sử dụng
FirebaseAIOnDevice,
hãy kiểm tra xem mô hình trên thiết bị có hay không và tải mô hình xuống nếu không
có.
Sau khi tải xuống, AICore sẽ tự động cập nhật mô hình. Hãy xem các ghi chú sau đoạn mã để biết thêm thông tin chi tiết về AICore và cách quản lý quá trình tải mô hình trên thiết bị xuống.
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, downloading, and warming up the model is not yet available for Java.
However, all other APIs and interactions in this guide are available for Java.
Hãy lưu ý những điều sau về việc tải mô hình trên thiết bị xuống:
Thời gian tải mô hình trên thiết bị xuống phụ thuộc vào nhiều yếu tố, bao gồm cả mạng của bạn.
Nếu mã của bạn sử dụng mô hình trên thiết bị cho tính năng suy luận chính hoặc dự phòng, hãy đảm bảo rằng mô hình này được tải xuống sớm trong vòng đời của ứng dụng để mô hình trên thiết bị có sẵn trước khi người dùng cuối gặp mã trong ứng dụng của bạn.
Nếu mô hình trên thiết bị không có khi có yêu cầu suy luận trên thiết bị, thì SDK sẽ không tự động kích hoạt quá trình tải mô hình trên thiết bị xuống. SDK sẽ chuyển sang mô hình được lưu trữ trên đám mây hoặc đưa ra một ngoại lệ (xem thông tin chi tiết về hành vi của các chế độ suy luận).
AICore (một dịch vụ hệ thống Android) quản lý mô hình và phiên bản được tải xuống, cập nhật mô hình, v.v. Xin lưu ý rằng thiết bị sẽ chỉ tải xuống một mô hình. Vì vậy, nếu một ứng dụng khác trên thiết bị đã tải xuống thành công mô hình trên thiết bị, thì quá trình kiểm tra này sẽ trả về rằng mô hình đó có sẵn.
Tối ưu hoá độ trễ
Để tối ưu hoá cho lệnh gọi suy luận đầu tiên, bạn có thể yêu cầu ứng dụng gọi
onDeviceExtension?.warmUp()
(hiện chỉ có cho Kotlin). Thao tác này sẽ tải mô hình trên thiết bị vào bộ nhớ và khởi chạy các thành phần thời gian chạy.
Bước 5: Khởi chạy dịch vụ và tạo thực thể mô hình
|
Nhấp vào nhà cung định Gemini API để xem nội dung dành riêng cho nhà cung cấp và mã trên trang này. |
Thiết lập những nội dung sau trước khi bạn gửi yêu cầu câu lệnh đến mô hình.
Khởi chạy dịch vụ cho nhà cung cấp API mà bạn chọn.
Tạo một thực thể
GenerativeModelvà đặtmodethành một trong những giá trị sau. Các nội dung mô tả ở đây rất chung chung, nhưng bạn có thể tìm hiểu thông tin chi tiết về hành vi của các chế độ này trong phần Đặt chế độ suy luận.PREFER_ON_DEVICE: Thử sử dụng mô hình trên thiết bị; nếu không, hãy chuyển sang mô hình được lưu trữ trên đám mây.ONLY_ON_DEVICE: Thử sử dụng mô hình trên thiết bị; nếu không, hãy đưa ra một ngoại lệ.PREFER_IN_CLOUD: Thử sử dụng mô hình được lưu trữ trên đám mây; nếu không, hãy chuyển sang mô hình trên thiết bị.ONLY_IN_CLOUD: Thử sử dụng mô hình được lưu trữ trên đám mây; nếu không, hãy đưa ra một ngoại lệ.
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 = "CLOUD_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(
"CLOUD_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);
Bước 6: Gửi yêu cầu câu lệnh đến mô hình
Phần này hướng dẫn bạn cách gửi nhiều loại dữ liệu đầu vào để tạo nhiều loại dữ liệu đầu ra, bao gồm:
Tạo văn bản do AI tạo từ dữ liệu đầu vào chỉ có văn bản
| Trước khi thử mẫu này, hãy đảm bảo rằng bạn đã hoàn tất phần Bắt đầu trong hướng dẫn này. |
Bạn có thể sử dụng
generateContent()
để tạo văn bản do AI tạo từ một câu lệnh có chứa văn bản:
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);
Xin lưu ý rằng Firebase AI Logic cũng hỗ trợ truyền trực tuyến các câu trả lời bằng văn bản bằng cách sử dụng
generateContentStream
(thay vì generateContent).
Tạo văn bản do AI tạo từ dữ liệu đầu vào có văn bản và hình ảnh (đa phương thức)
| Trước khi thử mẫu này, hãy đảm bảo rằng bạn đã hoàn tất phần Bắt đầu trong hướng dẫn này. |
Bạn có thể sử dụng
generateContent()
để tạo văn bản do AI tạo từ một câu lệnh có chứa văn bản và tối đa một tệp hình ảnh
(chỉ Bitmap) – cung cấp mimeType của từng tệp thông tin đầu vào và chính tệp đó.
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);
Xin lưu ý rằng Firebase AI Logic cũng hỗ trợ truyền trực tuyến các câu trả lời bằng văn bản bằng cách sử dụng
generateContentStream
(thay vì generateContent).
Bạn có thể làm gì nữa?
Bạn có thể sử dụng nhiều tính năng và tuỳ chọn cấu hình bổ sung cho trải nghiệm kết hợp:
Xác định xem tính năng suy luận trên thiết bị hay trong đám mây đã được sử dụng.
Tạo dữ liệu đầu ra có cấu trúc (chẳng hạn như JSON hoặc enum).
Các tính năng chưa có cho tính năng suy luận trên thiết bị
Là một bản phát hành thử nghiệm, không phải tất cả các tính năng của mô hình đám mây đều có cho tính năng suy luận trên thiết bị.
Các tính năng được liệt kê trong phần này chưa có cho tính năng suy luận trên thiết bị. Nếu bạn muốn sử dụng bất kỳ tính năng nào trong số này, thì bạn nên sử dụng chế độ suy luận ONLY_IN_CLOUD để có trải nghiệm nhất quán hơn.
Tạo văn bản do AI tạo từ các loại tệp hình ảnh đầu vào không phải là Bitmap (hình ảnh được tải vào bộ nhớ)
Tạo văn bản do AI tạo từ nhiều tệp hình ảnh
Tạo văn bản do AI tạo từ dữ liệu đầu vào là âm thanh, video và tài liệu (chẳng hạn như tệp PDF)
Tạo hình ảnh bằng các mô hình Gemini
Cung cấp tệp bằng URL trong các yêu cầu đa phương thức. Bạn phải cung cấp tệp dưới dạng dữ liệu nội tuyến cho các mô hình trên thiết bị
Gửi các yêu cầu vượt quá 4.000 mã thông báo (hoặc khoảng 3.000 từ tiếng Anh).
Trò chuyện nhiều lượt
Cung cấp cho mô hình các công cụ để giúp mô hình tạo câu trả lời (chẳng hạn như gọi hàm, thực thi mã, Bối cảnh từ URL, Grounding with
Google Search , và Grounding withGoogle Maps )
Tính năng giám sát bằng AI trong bảng điều khiển Firebase không hiển thị bất kỳ dữ liệu nào cho tính năng suy luận trên thiết bị (bao gồm cả nhật ký thiết bị). Tuy nhiên, bạn có thể giám sát mọi tính năng suy luận sử dụng mô hình được lưu trữ trên đám mây giống như các tính năng suy luận khác thông qua Firebase AI Logic.
Các hạn chế khác
Ngoài những điều trên, tính năng suy luận trên thiết bị có các hạn chế sau (tìm hiểu thêm trong tài liệu về Bộ công cụ học máy):
Người dùng cuối của ứng dụng phải sử dụng thiết bị được hỗ trợ cho tính năng suy luận trên thiết bị.
Ứng dụng của bạn chỉ có thể chạy tính năng suy luận trên thiết bị khi ở nền trước.
Chỉ có tiếng Anh và tiếng Hàn đã được xác thực cho tính năng suy luận trên thiết bị.
Giới hạn mã thông báo tối đa cho toàn bộ yêu cầu suy luận trên thiết bị là 4.000 mã thông báo. Nếu các yêu cầu của bạn có thể vượt quá giới hạn này, hãy nhớ định cấu hình chế độ suy luận có thể sử dụng mô hình được lưu trữ trên đám mây.
Bạn nên tránh các trường hợp sử dụng tính năng suy luận trên thiết bị yêu cầu dữ liệu đầu ra dài (hơn 256 mã thông báo).
AICore (một dịch vụ hệ thống Android quản lý các mô hình trên thiết bị) thực thi hạn mức suy luận cho mỗi ứng dụng. Việc đưa ra quá nhiều yêu cầu API trong một khoảng thời gian ngắn sẽ dẫn đến phản hồi
ErrorCode.BUSY. Nếu bạn nhận được lỗi này, hãy cân nhắc sử dụng thời gian đợi luỹ thừa để thử lại yêu cầu. Ngoài ra,ErrorCode.PER_APP_BATTERY_USE_QUOTA_EXCEEDEDcó thể được trả về nếu một ứng dụng vượt quá hạn mức có thời lượng dài (ví dụ: hạn mức hằng ngày).
Gửi ý kiến phản hồi về trải nghiệm của bạn với Firebase AI Logic