上周,谷歌推出了最強大的基礎(chǔ)模型Gemini。 Gemini 是多模式的AI——它可以接受文本和圖像輸入。
谷歌為 Android 開發(fā)者引入了一種在設(shè)備上,利用最小模型Gemini Nano的方法。此功能可通過 AICore 在部分設(shè)備上使用,這是一項處理模型管理、運行時、安全功能等的系統(tǒng)服務(wù),可簡化開發(fā)人員的工作。
前言(可略過)、使用 Gemini Pro 開發(fā)應(yīng)用程序
Gemini Pro 可通過 Gemini API 訪問,它是我們在各種文本和圖像推理任務(wù)中擴展的最佳模型。為了簡化 Gemini Pro 的集成,您可以使用 Google AI SDK(適用于 Android 的客戶端 SDK)。該 SDK 支持與 Android 應(yīng)用直接集成,開發(fā)人員無需構(gòu)建和管理自己的后端基礎(chǔ)設(shè)施,從而降低了開發(fā)成本并提高了速度。
Google AI Studio 為開發(fā)者提供了一種簡化的方式來集成 Gemini Pro 模型、制作提示、創(chuàng)建 API 密鑰以及輕松地將想法轉(zhuǎn)化為 AI 應(yīng)用。在 Google AI Studio 中開發(fā)出提示后,您只需單擊“獲取代碼”操作即可生成 Kotlin 代碼片段,并立即開始使用適用于 Android 的 Google AI SDK 集成 Gemini。
我們還讓開發(fā)者能夠更輕松地在Android Studio 最新預覽版中直接使用 Gemini API。我們推出了新項目模板,供開發(fā)者立即開始使用適用于 Android 的 Google AI SDK。您將受益于 Android Studio 增強的代碼完成和 lint 檢查器,有助于 API 密鑰和安全性。
要利用 Android Studio 中的新模板,請通過 File > 啟動一個新項目新的>新建項目并選擇 Gemini API 入門模板。該模板提供了一個預配置的項目,其中包含使用 Gemini API 所需的代碼。選擇項目名稱和位置后,系統(tǒng)會提示您在 Google AI Studio 中生成 API 密鑰,并要求您在 Android Studio 中輸入該密鑰。 Android Studio 將通過 Gemini API 連接自動為您設(shè)置項目,從而簡化您的工作流程。
或者,您可以導入生成式 AI 代碼示例并通過 在 Android Studio 中進行設(shè)置文件>新的>導入示例,然后搜索“Generative AI Sample”。
至此,一個簡單的示例就搭建完畢了。接下來是詳細的Android Studio中的操作步驟。
正文、Android Studio 中構(gòu)建Gemini API Starter 應(yīng)用
本文檔簡要介紹了如何使用 Android Studio 構(gòu)建使用 Google AI SDK 實現(xiàn)生成式 AI 的應(yīng)用。該流程分為三個步驟。在開始之前,請確保您運行的是最新的預覽版 Android Studio。
第 1 步:在 AI 的新項目模板的基礎(chǔ)上進行構(gòu)建
啟動 Android Studio,然后依次選擇 File > New Project 以打開一個新項目。選擇新的 Gemini API 入門模板。
第 2 步:生成 API 密鑰
在向?qū)У南乱徊街?,選擇項目名稱和位置后,請?zhí)峁┯糜谙?Gemini API 進行身份驗證的 API 密鑰。如果您沒有 Gemini API 密鑰,請點擊向?qū)е刑峁┑逆溄愚D(zhuǎn)到 Google AI Studio 并請求新密鑰。完成后,將新的 API 密鑰復制回向?qū)А?點擊 Finish。
第 3 步:開始原型設(shè)計
Android Studio 會自動為您設(shè)置一個連接到 Gemini API 的項目,從而簡化您的工作流程。點擊 Run 即可在 Android 模擬器中查看代碼的實際運行情況。 該應(yīng)用附帶一條硬編碼提示,要求模型“為我總結(jié)以下文本”。您可以直接在代碼中修改或展開提示,以修改其功能。
如需詳細了解如何創(chuàng)建提示,請參閱 下面的快速入門模塊中的:實現(xiàn)常見用例等。
正文補充、快速入門:使用 Gemini Pro 開始構(gòu)建 AI 驅(qū)動的功能和 Android 應(yīng)用。
設(shè)置項目
在調(diào)用 Gemini API 之前,您需要設(shè)置 Android 項目,其中包括設(shè)置 API 密鑰、將 SDK 依賴項添加到 Android 項目,以及初始化模型。
設(shè)置您的 API 密鑰
您需要 API 密鑰才能使用 Gemini API。如果您還沒有密鑰,請在 Google AI Studio 中創(chuàng)建一個。
保護您的 API 密鑰
強烈建議您不要將 API 密鑰簽入版本控制系統(tǒng)。您應(yīng)將其存儲在 local.properties 文件中(該文件位于項目的根目錄中,但不在版本控制范圍內(nèi)),然后使用 Android 版 Secrets Gradle 插件以 build 配置變量的形式讀取 API 密鑰。
// Access your API key as a Build Configuration variable
val apiKey = BuildConfig.apiKey
本快速入門中的所有代碼段均采用此最佳實踐。此外,如果您想查看 Secrets Gradle 插件的實現(xiàn),可以查看此 SDK 的示例應(yīng)用,或者使用 Android Studio Iguana 的最新預覽版,它具有 Gemini API Starter 模板(包含 local.properties 文件,旨在幫助您開始使用)
將 SDK 依賴項添加到項目中
1、在您的模塊(應(yīng)用級)Gradle 配置文件(如 //build.gradle.kts)中,添加 Google AI SDK for Android 的依賴項:
dependencies {
// ... other androidx dependencies
// add the dependency for the Google AI client SDK for Android
implementation("com.google.ai.client.generativeai:generativeai:0.1.1")
}
2、將您的 Android 項目與 Gradle 文件同步。
初始化生成模型
在進行任何 API 調(diào)用之前,您需要先初始化 GenerativeModel 對象:
val generativeModel = GenerativeModel(
// Use a model that's applicable for your use case (see "Implement basic use cases" below)
modelName = "MODEL_NAME",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
apiKey = BuildConfig.apiKey
)
指定模型時,請注意以下事項:
您需要使用特定于您的用例的模型(例如,gemini-pro-vision 適用于多模態(tài)輸入);如需了解每個用例的推薦模型,請參閱本指南的下一部分。
實現(xiàn)常見用例
現(xiàn)在您的項目已設(shè)置完畢,您可以探索如何使用 Gemini API 來實現(xiàn)不同的用例:
- 根據(jù)純文本輸入生成文本
- 從文本和圖片輸入生成文本(多模式)
- 構(gòu)建多輪對話(聊天)
- 使用流式傳輸加快互動速度
根據(jù)純文本輸入生成文本
當提示輸入僅包含文本時,請將 gemini-pro 模型與 generateContent 結(jié)合使用以生成文本輸出:
請注意,generateContent() 是一個掛起函數(shù),需要從協(xié)程作用域中調(diào)用。如果您不熟悉協(xié)程,請參閱 Android 上的 Kotlin 協(xié)程。
kotlin
val generativeModel = GenerativeModel(
// For text-only input, use the gemini-pro model
modelName = "gemini-pro",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
apiKey = BuildConfig.apiKey
)
val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)
根據(jù)文本和圖片輸入生成文本(多模式)
Gemini 提供了一個多模態(tài)模型 (gemini-pro-vision),因此您可以同時輸入文本和圖片。請務(wù)必查看提示的圖片要求。
當提示輸入同時包含文本和圖片時,請將 gemini-pro-vision 模型與 generateContent 結(jié)合使用以生成文本輸出:
val generativeModel = GenerativeModel(
// For text-and-images input (multimodal), use the gemini-pro-vision model
modelName = "gemini-pro-vision",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
apiKey = BuildConfig.apiKey
)
val image1: Bitmap = // ...
val image2: Bitmap = // ...
val inputContent = content {
image(image1)
image(image2)
text("What's different between these pictures?")
}
val response = generativeModel.generateContent(inputContent)
print(response.text)
構(gòu)建多輪對話(聊天)
借助 Gemini,您可以構(gòu)建多輪自由對話。該 SDK 通過管理對話狀態(tài)簡化了流程,因此與 generateContent 不同,您無需自行存儲對話歷史記錄。
如需構(gòu)建多輪對話(如聊天),請使用 gemini-pro 模型,并通過調(diào)用 startChat() 來初始化聊天。然后,使用 sendMessage() 發(fā)送一條新用戶消息,此消息還會將該消息和響應(yīng)附加到聊天記錄中。
與對話內(nèi)容關(guān)聯(lián)的 role 有兩個可能的選項:
user:提供提示的角色。這是 sendMessage 調(diào)用的默認值。
model:提供響應(yīng)的角色。在使用現(xiàn)有 history 調(diào)用 startChat() 時,可以使用此角色。
注意 :gemini-pro-vision 模型(適用于文本和圖片輸入)尚未針對多輪對話進行優(yōu)化。請務(wù)必針對聊天用例使用 gemini-pro 和純文字輸入。
val generativeModel = GenerativeModel(
// For text-only input, use the gemini-pro model
modelName = "gemini-pro",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
apiKey = BuildConfig.apiKey
)
val chat = generativeModel.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
chat.sendMessage("How many paws are in my house?")
使用流式傳輸實現(xiàn)更快速的互動
默認情況下,模型會在完成整個生成過程后返回響應(yīng)。通過不等待整個結(jié)果,而是使用流式傳輸來處理部分結(jié)果,您可以實現(xiàn)更快的互動。
以下示例展示了如何使用 generateContentStream 實現(xiàn)流式傳輸,以根據(jù)文本和圖像輸入提示生成文本。
val generativeModel = GenerativeModel(
// For text-and-image input (multimodal), use the gemini-pro-vision model
modelName = "gemini-pro-vision",
// Access your API key as a Build Configuration variable (see "Set up your API key" above)
apiKey = BuildConfig.apiKey
)
val image1: Bitmap = // ...
val image2: Bitmap = // ...
val inputContent = content {
image(image1)
image(image2)
text("What's the difference between these pictures?")
}
var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
print(chunk.text)
fullResponse += chunk.text
}
您可以在純文本輸入和聊天用例中使用類似方法:
// Use streaming with text-only input
generativeModel.generateContentStream(inputContent).collect { chunk ->
print(chunk.text)
}
// Use streaming with multi-turn conversations (like chat)
val chat = generativeModel.startChat()
chat.sendMessageStream(inputContent).collect { chunk ->
print(chunk.text)
}
實現(xiàn)高級用例
本快速入門的上一部分中介紹的常見用例可幫助您熟悉 Gemini API。本部分介紹了一些可能被視為更高級的用例。
計算令牌數(shù)
使用長提示時,在向模型發(fā)送任何內(nèi)容之前統(tǒng)計令牌數(shù)可能很有用。以下示例展示了如何針對各種用例使用 countTokens():
// For text-only input
val (totalTokens) = generativeModel.countTokens("Write a story about a magic backpack.")
// For text-and-image input (multi-modal)
val multiModalContent = content {
image(image1)
image(image2)
text("What's the difference between these pictures?")
}
val (totalTokens) = generativeModel.countTokens(multiModalContent)
// For multi-turn conversations (like chat)
val history = chat.history
val messageContent = content { text("This is the message I intend to send")}
val (totalTokens) = generativeModel.countTokens(*history.toTypedArray(), messageContent)
用于控制內(nèi)容生成的選項
您可以通過配置模型參數(shù)和使用安全設(shè)置來控制內(nèi)容生成。、
配置模型參數(shù)
您發(fā)送到模型的每個提示都包含用于控制模型如何生成回答的參數(shù)值。對于不同的參數(shù)值,模型會生成不同的結(jié)果。詳細了解模型參數(shù)。
val config = generationConfig {
temperature = 0.9f
topK = 16
topP = 0.1f
maxOutputTokens = 200
stopSequences = listOf("red")
}
val generativeModel = GenerativeModel(
modelName = "MODEL_NAME",
apiKey = BuildConfig.apiKey,
generationConfig = config
)
使用安全設(shè)置
您可以使用安全設(shè)置來調(diào)整收到可能被視為有害的響應(yīng)的可能性。默認情況下,安全設(shè)置會在所有維度上屏蔽概率中等和/或高可能屬于不安全內(nèi)容的內(nèi)容。詳細了解安全設(shè)置。
下面是設(shè)置一項安全設(shè)置的具體方法:
val generativeModel = GenerativeModel(
modelName = "MODEL_NAME",
apiKey = BuildConfig.apiKey,
safetySettings = listOf(
SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH)
)
)
您還可以設(shè)定多個安全設(shè)置:
val harassmentSafety = SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH)
val hateSpeechSafety = SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.MEDIUM_AND_ABOVE)
val generativeModel = GenerativeModel(
modelName = "MODEL_NAME",
apiKey = BuildConfig.apiKey,
safetySettings = listOf(harassmentSafety, hateSpeechSafety)
)
后續(xù)步驟
提示設(shè)計是創(chuàng)建提示以從語言模型引出所需回復的過程。編寫結(jié)構(gòu)合理的提示對于確保語言模型提供準確、高質(zhì)量的響應(yīng)至關(guān)重要。了解提示撰寫的最佳做法。
Gemini 提供了多種模型變體,以滿足不同用例的需求,例如輸入類型和復雜度、聊天或其他對話框語言任務(wù)的實現(xiàn),以及大小限制。了解可用的 Gemini 模型。
Gemini 提供用于請求提高速率限制的選項。Genmini Pro 模型的速率限制為每分鐘 60 個請求 (RPM)。文章來源:http://www.zghlxwxcb.cn/news/detail-799593.html
借助本快速入門中介紹的適用于 Android 的客戶端 SDK,您可以訪問在 Google 服務(wù)器上運行的 Genmini Pro 模型。對于涉及處理敏感數(shù)據(jù)、實現(xiàn)離線可用性的用例,或者需要為常用用戶流節(jié)省費用,您可能需要考慮訪問在設(shè)備上運行的 Gemini Nano。如需了解詳情,請參閱 Android(設(shè)備端)快速入門。文章來源地址http://www.zghlxwxcb.cn/news/detail-799593.html
到了這里,關(guān)于Android應(yīng)用程序中使用 Gemini Pro AI開發(fā)——2年工作經(jīng)驗如何淘汰10年工作經(jīng)驗的Android開發(fā)?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!