使用指南

建構智慧型 Android 應用程式:裝置端推論

6 分鐘小故事
查看 Caren Chang 的個人資料
Caren Chang 開發人員關係工程師

歡迎回到「建構智慧型 Android 應用程式」系列網誌文章。我們將以基本 Android 應用程式為基礎,逐步改造為個人化智慧型代理式體驗。在上一篇文章中,我們介紹了 Jetpacker,也就是本系列文章中會用到的示範應用程式。

在這篇網誌文章中,我們將說明如何透過 ML Kit 的 Prompt API 使用 Gemini Nano,建構智慧型裝置端功能。

建構裝置端智慧功能是指直接在裝置上處理提示和資料,不必將資料傳送至伺服器。這有幾個優點:

  • 使用者資料可在裝置本機處理,保護使用者隱私
  • 即使網路連線不穩或沒有網路連線,模型功能仍可靠
  • 由於所有作業都在使用者的硬體上執行,因此不會產生額外的雲端推論費用

考量到裝置端 AI 的優勢,我們決定在 Jetpacker 中加入三項功能,提升使用者體驗:總結行程、管理支出及錄製語音記事。

Screenshot 2026-07-02 at 12.57.08 PM.png
Jetpacker 裝置端功能:摘要行程、管理支出和語音記事

根據簡短文字生成高品質摘要

行程畫面可讓使用者快速查看特定行程的所有活動。由於這個畫面包含大量資訊,因此很快就會讓人感到眼花撩亂。為協助使用者做好前置準備,但又不會感到不知所措,我們可以在頂端新增「為旅程做好前置準備」專區。

Screenshot_20260702_111934.png
這趟浪漫的巴黎之旅是經典的巴黎冒險,融合了藝術、景點和美食。此外,我們也新增了提示和一些實用短句。

輸入行程並要求 LLM 製作摘要,即可快速生成行程摘要,以及打包提示和實用的當地用語。由於下列原因,這項用途非常適合使用裝置端模型:

  • 效能和品質:輸入和輸出文字都相對較短。因此,我們預期裝置端解決方案的效能和品質,將能與功能更強大的雲端模型相提並論。
  • 可擴充性:將推論作業轉移到裝置端,可讓我們將這項功能從少數使用者擴展到數百萬使用者,不必擔心管理不斷增加的雲端推論成本。
  • 低延遲和可靠性:裝置端推論可確保低延遲,即使使用者離線也能提供可靠的體驗。

如要使用裝置端模型建構應用程式,我們會使用 Gemini Nano,這是 Google 專為行動裝置最佳化調整的高效模型。Gemini Nano 於幾年前首次推出,目前已在超過 1.4 億部裝置上執行。最新版模型 Gemini Nano 4 是以最近發布的 Gemma 4 模型架構為基礎建構而成,並進一步最佳化,可盡量提升電池續航力和效能。

使用 ML Kit 的 Prompt API,我們可以善用 Gemini Nano 4 的新模型功能,為裝置端功能製作原型。我們會建立包含旅遊行程的提示,並要求模型生成摘要和任何準備提示。

通常需要經過幾次疊代,才能找出最佳提示,而 AICore 應用程式非常適合這個步驟。選擇加入 AICore 開發人員預先發布選項後,即可下載 Gemini Nano 4 等預先發布模型,測試提示並查看模型預期輸出內容。經過幾次提示迭代,我們成功將回覆速度從 13 秒提升至 2 秒以下!請參閱這裡的最終程式碼實作和提示。

[ASSET HERE - FILE TOO LARGE ATM]

在本機處理敏感的使用者輸入內容

接著,為了讓使用者更盡情享受旅程,我們將建構簡單的費用管理工具,免去整理收據和計算預算的手動作業。

由於收據可能含有信用卡號碼和地址等私密資訊,因此這也是裝置端解決方案的絕佳用途。有了裝置端 AI,使用者可以放心,私密資訊會在裝置上處理,不會將任何資料傳送至雲端。

此外,Gemini Nano 4 的多模態模型功能也獲得提升,特別是 OCR 和視覺資料擷取等圖像解讀工作,因此非常適合從收據擷取資訊等工作。

在這個用途中,提示會分析收據圖片,並輸出資訊,例如:產生的標題、支出金額和費用類別。為確保模型以偏好的格式輸出資訊,我們可以透過 ML Kit 的結構化輸出 API,順暢輸出我們定義的 Kotlin 資料物件。

// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// ksp("com.google.mlkit:genai-schema-compiler:1.0.0-alpha1")

@Generable("Information extracted from an expense receipt")
data class ParsedReceipt(
  @Guide("Generated title for the expense less than 6 words. Based on restaurant or activity name.")
  val title: String,
  @Guide("Total amount of the expense. Look for values at the bottom and words like total or balance due.")
  val amount: Double,
  @Guide("Type of expense", enumValues = ["travel", "food", "shopping", "entertainment", "other"])
  val category: String,
)

val prompt = "Determine if the image is a receipt or expense. 
    If it is NOT a receipt or expense, output the text 'NOT_A_RECEIPT'.
    Otherwise, parse the receipt information."

val request = generateContentRequest(ImagePart(bitmap), TextPart(prompt)) {}
val requestWithStructuredOutput = generateTypedContentRequest(request, ParsedReceipt::class)

// Define the configuration for Gemini Nano 4 E4B preview model  
// When selecting models, you can specify which performance charactertists are most important
//  for your use case. Use ModelPreference.FULL when you want to prioritize reasoning power over speed. 
//  Use ModelPreference.FAST when complex logic is not required and latency is a priority.
val previewFullConfig = generationConfig {
    modelConfig = modelConfig {
        releaseStage = ModelReleaseStage.PREVIEW
        preference = ModelPreference.FULL
    }
}

val geminiNano4BPreviewModel = Generation.getClient(previewFullConfig)
val response = geminiNano4BPreviewModel.generateContent(requestWithStructuredOutput)
val parsedReceipt: ParsedReceipt? = response.candidates.firstOrNull()?.response

多模態輸入內容

最後,為了協助使用者在旅途中錄製語音備忘錄,我們來建構完全在裝置端執行的語音記事功能。我們將使用 ML Kit 的 Speech Recognition API,讓使用者錄製簡短語音記事,並自動轉錄為文字。系統會使用 ML Kit 的 Prompt API,根據轉錄的文字判斷錄音記事與哪個行程活動相關聯,讓使用者在捲動瀏覽行程時,輕鬆回顧行程內容。

Screenshot_20260702_115529.png
羅馬假期行程會顯示語音記事的摘錄內容。

ML Kit GenAI Speech Recognition API 提供兩種不同模式,可讓您完全在裝置端將音訊內容轉錄為文字。基本模式使用傳統的裝置端語音辨識模型,適用於 API 級別 31 以上的大多數 Android 裝置。進階模式會使用 Gemini Nano,提供更廣泛的語言支援和更優質的翻譯,目前支援 Pixel 10 裝置。

我們的功能結合了 Speech Recognition API 和 ML Kit GenAI Prompt API:

// implementation("com.google.mlkit:genai-prompt:1.0.0-beta3")
// implementation("com.google.mlkit:genai-speech-recognition:1.0.0-alpha1")

val tripEvents = ... 

// Set up speech recognition
val speechRecognizerOptions =
    speechRecognizerOptions {
        locale = Locale.US
        preferredMode = SpeechRecognizerOptions.Mode.MODE_ADVANCED
    }
val speechRecognizer: SpeechRecognizer = SpeechRecognition.getClient(speechRecognizerOptions)

suspend fun transcribeVoiceNote(recognizer: SpeechRecognizer) {
    // Display partial text as the user is recording audio
    var partialTextResponse = ""

    // Display the full text once user is finished recording audio
    var transcription = ""

    val request: SpeechRecognizerRequest
        = speechRecognizerRequest { audioSource = AudioSource.fromMic() }
    recognizer.startRecognition(request).collect { response ->
        when (response) {
            is SpeechRecognizerResponse.PartialTextResponse -> {
                partialTextResponse = response.text
            }
            is SpeechRecognizerResponse.FinalTextResponse -> {
                transcription = response.text
                processAndCategorizeVoiceNote(transcription, tripEvents)
            }
        }
    }
}

fun processAndCategorizeVoiceNote(transcribedVoiceNote: String, events: List<Event>) {
    val prompt = "Given the voice note $transcribedVoiceNote
     and the following events for this trip: $events, rewrite this transcription
     to remove filler words. Then, identify which events from the
     list this rewritten transcription matches to."

     // Utilize ML Kit's Prompt API to process voice note and tag it with the relevant trip activities
     Generation.getClient().generateContent(prompt)
}

結論

我們運用 ML Kit 的 GenAI API,充分發揮 Gemini Nano 的功能,為 JetPacker 應用程式開發完全在裝置端執行的智慧功能,並在不增加任何雲端費用的情況下,提供更優質的使用者體驗。

如要查看 Jetpacker 的完整原始碼,請前往 GitHub,並觀看「使用 Google AI 建構智慧型 Android 應用程式」影片,進一步瞭解如何使用裝置端模型、雲端輔助推論和最新的代理功能架構,直接將智慧型功能整合到應用程式中。

瞭解詳情

歡迎參閱本系列網誌文章的其他部分:

第 1 部分:介紹應用程式並提供概略總覽。

第 2 部分 (就是這篇文章!) 裝置端智慧功能。深入瞭解 ML Kit 的 GenAI API 和 Gemini Nano,建構以隱私權為優先考量的功能,例如行程摘要、收據剖析和本機音訊處理。

第 3 部分: 混合式雲端和雲端推理。瞭解如何使用 Firebase AI Logic,以 Google 地圖和網頁脈絡等真實世界資料為基礎,生成大型語言模型回覆。

第 4 部分:系統整合。使用 AppFunctions 與 Android 智慧系統整合。

第 5 部分 (即將推出):應用程式內代理式工作流程。使用 A2UI 和 ADK 擴充應用程式,加入端對端預訂助理。

想進一步瞭解 Android 開發作業嗎?在 YouTubeLinkedIn 上追蹤 Android 開發人員!

本網誌文章中的所有程式碼片段均遵守下列著作權通知:

Copyright 2026 Google LLC.
SPDX-License-Identifier: Apache-2.0
撰寫者:
繼續閱讀