1. 事前準備
您可以透過 Firebase AI Logic 使用 Gemini Developer API,存取 Gemini 系列的生成式 AI 模型,打造前所未有的全新使用體驗。
本程式碼研究室會逐步引導您在 JetNews 應用程式中加入摘要功能。JetNews 是新聞閱讀應用程式,使用 compose-samples 存放區的 Jetpack Compose 部分建構而成。

本程式碼研究室涵蓋下列內容:
- 在 Google AI Studio 中設計提示,用於生成新聞報導摘要。
- 將 Firebase AI Logic SDK 整合至 JetNews。
- 在文章檢視畫面頂端新增「Gemini summary」專區,並在底部列中新增「Summarization」按鈕。

JetNews 應用程式採用 Gemini API 提供的摘要功能。
必要條件
- 具備 Kotlin 基本知識
- 熟悉 Android Studio 使用方式,且能在搭載 Android API 級別 23 以上版本的實體裝置或模擬器上測試應用程式
- 可存取 Firebase 的 Google 帳戶
2. 設計提示
提示是指應用程式透過 Gemini API 傳送至 Gemini 模型的訊息,可包含文字、圖片、音訊和影片檔案。
為特定用途設計理想的提示,與其說是科學,不如說是一門藝術,而且通常需要經過多次疊代才能完成。Google AI Studio 是 Google 工具,用於快速設計生成式 AI 模型的原型以及測試此類模型,是設計提示的絕佳工具。

在本程式碼研究室中,您要將一篇技術文章的內容摘要出四個重點項目。這項提示的目標在於確保摘要與內容相關,且以純文字呈現,不含任何 Markdown 格式。
經過幾次試驗和修改後,您可能會找到特別有效的提示,例如:
Summarize the core findings of the following article in 4 concise bullet points. Ensure each bullet point is specific, informative and relevant. Return just the bullet points as plain text. Don't use markdown.
[article body]
確認輸出結果符合需求後,就可以將 Gemini API 整合到 Android 應用程式中。
3. 查看程式碼
首先,查看 GitHub 的範例原始碼:
git clone https://github.com/android/codelab-gemini-summary
JetNews 應用程式完全從零設計,能夠根據各種尺寸的行動裝置調整大小。如需查看 Android 架構最佳做法範例,請參考 Now in Android。
進一步瞭解 JetNews 支援大螢幕的實作方法。
如果錯綜複雜的 JetNews 應用程式原始碼讓您感到不知所措,不必擔心。要新增 Gemini 提供的摘要功能,只需修改 GeminiRepositoryImpl 類別中的程式碼即可。我們已替您實作觸發摘要功能並在應用程式中顯示摘要的程式碼。
最終實作項目
您可以查看這個分支,直接存取原始碼的最終實作項目:
git clone https://github.com/android/codelab-gemini-summary git switch final
請按照本程式碼實驗室步驟 4 中的詳細操作說明,建立及設定 Firebase 專案。
4. 設定 Firebase 專案
建立 Firebase 專案
在 Firebase 控制台中建立 Firebase 專案。在「建立專案」工作流程的第一個步驟中輸入新專案名稱,即可建立新的 Firebase 專案。系統會自動建立基礎 Google Cloud 專案。
在專案中開啟「AI」下拉式選單,選取「AI Logic」。

按一下「get started」並啟用 Gemini Developer API,即可開始使用,不必付費且享有充裕配額:

最後,啟用 Gemini Developer API:

將應用程式連結至 Firebase
Firebase 專案設定完成後,請將 Android 應用程式連結至該專案。
- 在 Firebase 控制台選取所需專案。
- 按一下「新增應用程式」並選取「Android」。
- 按照畫面上的指示提供應用程式套件名稱,註冊應用程式。
- 下載
google-services.json檔案,並加到應用程式的模組 (應用程式層級) 根目錄中。 - 繼續按照畫面上的指示,將 Google 服務 Gradle 外掛程式和 Firebase 物料清單 (BoM) Gradle 依附元件新增至應用程式。
!注意:不得將 google-services.json 公開提交到原始碼控制系統。擁有公開存取權限的其他人可以使用該專案,但需要支付費用。
5. 更新 Gradle 匯入項目
JetNews 應用程式使用 Gradle 版本目錄功能,可集中管理依附元件的版本。
- 如要在 Firebase AI Logic SDK 中新增 Gradle 匯入項目,請在
libs.versions.toml檔案中加入以下內容: 請注意,您不需要指定 firebase-ai 的版本。只要使用最新版 Firebase BoM,就能自動指定 Firebase AI Logic SDK 最新版本。[versions] ... firebase-bom = "34.4.0" // get the latest version from the Firebase documentation [libraries] ... firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref ="firebase-bom" } firebase-ai = { group = "com.google.firebase", name = "firebase-ai" } - 更新
build.gradle.kts:implementation(platform(libs.firebase.bom)) implementation(libs.firebase.ai) - 按一下「Sync now」即可擷取 Gradle 構件。
如果不想使用 Gradle 版本目錄,可以直接在 build.gradle.kts 中新增匯入項目:
implementation(platform("com.google.firebase:firebase-bom:34.4.0"))
implementation("com.google.firebase:firebase-ai")
6. 整合 Kotlin
新增適當的依附元件後,就可以更新 Kotlin 程式碼。
開啟 GeminiRepositoryImpl 類別。這個類別會代管與 Gemini API 互動的所有程式碼。
初始化 Gemini 模型
建立 GenerativeModel 的例項:
private val generativeModel = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "gemini-2.5-flash",
generationConfig = generationConfig {
temperature = 0f
},
safetySettings = listOf(
SafetySetting(HarmCategory.HARASSMENT, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.HATE_SPEECH, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.SEXUALLY_EXPLICIT, HarmBlockThreshold.LOW_AND_ABOVE),
SafetySetting(HarmCategory.DANGEROUS_CONTENT, HarmBlockThreshold.LOW_AND_ABOVE),
)
)
在本範例中,要存取的是 Gemini 2.5 Flash 模型。這個模型可處理本範例的文字摘要用途。請參閱 Firebase AI Logic 說明文件,進一步瞭解可用的 Gemini 模型。
本範例也將溫度值設為 0,進一步確保摘要生成作業的一致性。請參閱 Firebase AI Logic 說明文件,進一步瞭解模型設定參數。
最後,本範例定義了安全設定,確保模型能在回覆中生成適當的語言。請參閱 Firebase AI Logic 說明文件,進一步瞭解安全設定功能。
使用 Gemini 生成摘要
接著,更新 summarizePost() 函式,針對以參數形式傳遞的貼文生成摘要。
首先,將所有段落合併為單個字串,以從貼文中獲取文本,然後將其傳遞給模型:
val postString = StringBuilder()
for (paragraph in post.paragraphs) {
postString.append(paragraph.text)
}
根據在本程式碼實驗室步驟 2 中設計的提示建立 prompt,並傳入貼文:
val prompt =
"Summarize the following article in 4 concise bullet points. " +
"Ensure each bullet point is specific, informative and relevant. " +
"Return just the bullet points as plain text. " +
"Use plain text, don't use markdown. \n $postString"
最後,將提示傳遞至模型並傳回回應:
return generativeModel.generateContent(prompt).text
測試實作成果
如要測試實作成果,請在 Android Studio 中按一下「Run app」,然後在模擬器或實體裝置上安裝 JetNews 應用程式。
在首頁開啟任何報導文章,按一下底部列中的摘要按鈕:

您應該會在文章頂端的插圖下方,看到「Gemini summary」專區:

JetNews 應用程式架構
JetNews 是為展示 Jetpack Compose 目前的 UI 功能而建構,其實作方式可支援不同的螢幕大小 (詳情請參閱這篇網誌文章)。
本程式碼研究室的目的並非深入探討 JetNews 應用程式架構。Gemini 整合作業大多會透過 GeminiRepositoryImpl 類別進行。
不過,如果您想瞭解按鈕如何觸發摘要功能,可以查看 JetnewsIcons.kt 中的 SummaryButton()。此外,您也可以查看 PostContent.kt 中 SummarySection() 函式的摘要 UI 實作項目。
7. 結語
在本程式碼研究室中,您已瞭解如何進行以下作業:
- 在 Google AI Studio 中建立及測試提示。
- 在 Firebase 中設定專案,以便使用 Firebase AI Logic SDK。
- 設定 Gradle 依附元件,在 Android 應用程式中使用 Firebase AI Logic。
- 透過 Kotlin 程式碼呼叫 Gemini 2.5 Flash。
如要瞭解 Firebase AI Logic,請參閱 Android AI 程式碼範例和說明文件。