Google推出Gemini AI开发——10年工作经验的Android开发要被2年工作经验的淘汰了?

应用程序中利用 Gemini

  • 前言(可略过)、使用 Gemini Pro 开发应用程序
  • 正文、Android Studio 中构建Gemini API Starter 应用
    • 第 1 步:在 AI 的新项目模板的基础上进行构建
    • 第 2 步:生成 API 密钥
    • 第 3 步:开始原型设计
  • 正文补充、快速入门:使用 Gemini Pro 开始构建 AI 驱动的功能和 Android 应用。
    • 设置项目
    • 设置您的 API 密钥
    • 保护您的 API 密钥
    • 将 SDK 依赖项添加到项目中
    • 初始化生成模型
    • 实现常见用例
      • 根据纯文本输入生成文本
      • 根据文本和图片输入生成文本(多模式)
      • 构建多轮对话(聊天)
      • 使用流式传输实现更快速的互动
    • 实现高级用例
      • 计算令牌数
    • 用于控制内容生成的选项
      • 配置模型参数
      • 使用安全设置
    • 后续步骤

在这里插入图片描述

上周,谷歌推出了最强大的基础模型GeminiGemini 是多模式的AI——它可以接受文本和图像输入。
谷歌为 Android 开发者引入了一种在设备上,利用最小模型Gemini Nano的方法。此功能可通过 AICore 在部分设备上使用,这是一项处理模型管理、运行时、安全功能等的系统服务,可简化开发人员的工作。

前言(可略过)、使用 Gemini Pro 开发应用程序

Gemini Pro 可通过 Gemini API 访问,它是我们在各种文本和图像推理任务中扩展的最佳模型。为了简化 Gemini Pro 的集成,您可以使用 Google AI SDK(适用于 Android 的客户端 SDK)。该 SDK 支持与 Android 应用直接集成,开发人员无需构建和管理自己的后端基础设施,从而降低了开发成本并提高了速度。

Google AI Studio 为开发者提供了一种简化的方式来集成 Gemini Pro 模型、制作提示、创建 API 密钥以及轻松地将想法转化为 AI 应用。在 Google AI Studio 中开发出提示后,您只需单击“获取代码”操作即可生成 Kotlin 代码片段,并立即开始使用适用于 Android 的 Google AI SDK 集成 Gemini。

在这里插入图片描述
我们还让开发者能够更轻松地在Android Studio 最新预览版中直接使用 Gemini API。我们推出了新项目模板,供开发者立即开始使用适用于 Android 的 Google AI SDK。您将受益于 Android Studio 增强的代码完成和 lint 检查器,有助于 API 密钥和安全性。

在这里插入图片描述
要利用 Android Studio 中的新模板,请通过 File > 启动一个新项目新的>新建项目并选择 Gemini API 入门模板。该模板提供了一个预配置的项目,其中包含使用 Gemini API 所需的代码。选择项目名称和位置后,系统会提示您在 Google AI Studio 中生成 API 密钥,并要求您在 Android Studio 中输入该密钥。 Android Studio 将通过 Gemini API 连接自动为您设置项目,从而简化您的工作流程。

或者,您可以导入生成式 AI 代码示例并通过 在 Android Studio 中进行设置文件>新的>导入示例,然后搜索“Generative AI Sample”。

在这里插入图片描述
至此,一个简单的示例就搭建完毕了。接下来是详细的Android Studio中的操作步骤。

正文、Android Studio 中构建Gemini API Starter 应用

本文档简要介绍了如何使用 Android Studio 构建使用 Google AI SDK 实现生成式 AI 的应用。该流程分为三个步骤。在开始之前,请确保您运行的是最新的预览版 Android Studio。

第 1 步:在 AI 的新项目模板的基础上进行构建

启动 Android Studio,然后依次选择 File > New Project 以打开一个新项目。选择新的 Gemini API 入门模板
在这里插入图片描述

第 2 步:生成 API 密钥

在向导的下一步中,选择项目名称和位置后,请提供用于向 Gemini API 进行身份验证的 API 密钥。如果您没有 Gemini API 密钥,请点击向导中提供的链接转到 Google AI Studio 并请求新密钥。完成后,将新的 API 密钥复制回向导。 点击 Finish。
在这里插入图片描述
在这里插入图片描述

第 3 步:开始原型设计

Android Studio 会自动为您设置一个连接到 Gemini API 的项目,从而简化您的工作流程。点击 Run 即可在 Android 模拟器中查看代码的实际运行情况。 该应用附带一条硬编码提示,要求模型“为我总结以下文本”。您可以直接在代码中修改或展开提示,以修改其功能。
在这里插入图片描述

如需详细了解如何创建提示,请参阅 下面的快速入门模块中的:实现常见用例等。

正文补充、快速入门:使用 Gemini Pro 开始构建 AI 驱动的功能和 Android 应用。

设置项目

在调用 Gemini API 之前,您需要设置 Android 项目,其中包括设置 API 密钥、将 SDK 依赖项添加到 Android 项目,以及初始化模型。

设置您的 API 密钥

您需要 API 密钥才能使用 Gemini API。如果您还没有密钥,请在 Google AI Studio 中创建一个。

保护您的 API 密钥

强烈建议您不要将 API 密钥签入版本控制系统。您应将其存储在 local.properties 文件中(该文件位于项目的根目录中,但不在版本控制范围内),然后使用 Android 版 Secrets Gradle 插件以 build 配置变量的形式读取 API 密钥。

// Access your API key as a Build Configuration variable
val apiKey = BuildConfig.apiKey

本快速入门中的所有代码段均采用此最佳实践。此外,如果您想查看 Secrets Gradle 插件的实现,可以查看此 SDK 的示例应用,或者使用 Android Studio Iguana 的最新预览版,它具有 Gemini API Starter 模板(包含 local.properties 文件,旨在帮助您开始使用)

将 SDK 依赖项添加到项目中

1、在您的模块(应用级)Gradle 配置文件(如 //build.gradle.kts)中,添加 Google AI SDK for Android 的依赖项:

dependencies {// ... other androidx dependencies// add the dependency for the Google AI client SDK for Androidimplementation("com.google.ai.client.generativeai:generativeai:0.1.1")
}

2、将您的 Android 项目与 Gradle 文件同步。

初始化生成模型

在进行任何 API 调用之前,您需要先初始化 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 适用于多模态输入);如需了解每个用例的推荐模型,请参阅本指南的下一部分。

实现常见用例

现在您的项目已设置完毕,您可以探索如何使用 Gemini API 来实现不同的用例:

  • 根据纯文本输入生成文本
  • 从文本和图片输入生成文本(多模式)
  • 构建多轮对话(聊天)
  • 使用流式传输加快互动速度

根据纯文本输入生成文本

当提示输入仅包含文本时,请将 gemini-pro 模型与 generateContent 结合使用以生成文本输出:
请注意,generateContent() 是一个挂起函数,需要从协程作用域中调用。如果您不熟悉协程,请参阅 Android 上的 Kotlin 协程。

kotlin
val generativeModel = GenerativeModel(// For text-only input, use the gemini-pro modelmodelName = "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)

根据文本和图片输入生成文本(多模式)

Gemini 提供了一个多模态模型 (gemini-pro-vision),因此您可以同时输入文本和图片。请务必查看提示的图片要求

当提示输入同时包含文本和图片时,请将 gemini-pro-vision 模型与 generateContent 结合使用以生成文本输出:

val generativeModel = GenerativeModel(// For text-and-images input (multimodal), use the gemini-pro-vision modelmodelName = "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)

构建多轮对话(聊天)

借助 Gemini,您可以构建多轮自由对话。该 SDK 通过管理对话状态简化了流程,因此与 generateContent 不同,您无需自行存储对话历史记录。

如需构建多轮对话(如聊天),请使用 gemini-pro 模型,并通过调用 startChat() 来初始化聊天。然后,使用 sendMessage() 发送一条新用户消息,此消息还会将该消息和响应附加到聊天记录中。

与对话内容关联的 role 有两个可能的选项:

user:提供提示的角色。这是 sendMessage 调用的默认值。

model:提供响应的角色。在使用现有 history 调用 startChat() 时,可以使用此角色。

注意 :gemini-pro-vision 模型(适用于文本和图片输入)尚未针对多轮对话进行优化。请务必针对聊天用例使用 gemini-pro 和纯文字输入。

val generativeModel = GenerativeModel(// For text-only input, use the gemini-pro modelmodelName = "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?")

使用流式传输实现更快速的互动

默认情况下,模型会在完成整个生成过程后返回响应。通过不等待整个结果,而是使用流式传输来处理部分结果,您可以实现更快的互动。

以下示例展示了如何使用 generateContentStream 实现流式传输,以根据文本和图像输入提示生成文本。

val generativeModel = GenerativeModel(// For text-and-image input (multimodal), use the gemini-pro-vision modelmodelName = "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)
}

实现高级用例

本快速入门的上一部分中介绍的常见用例可帮助您熟悉 Gemini API。本部分介绍了一些可能被视为更高级的用例。

计算令牌数

使用长提示时,在向模型发送任何内容之前统计令牌数可能很有用。以下示例展示了如何针对各种用例使用 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)

用于控制内容生成的选项

您可以通过配置模型参数和使用安全设置来控制内容生成。、

配置模型参数

您发送到模型的每个提示都包含用于控制模型如何生成回答的参数值。对于不同的参数值,模型会生成不同的结果。详细了解模型参数

val config = generationConfig {temperature = 0.9ftopK = 16topP = 0.1fmaxOutputTokens = 200stopSequences = listOf("red")
}val generativeModel = GenerativeModel(modelName = "MODEL_NAME",apiKey = BuildConfig.apiKey,generationConfig = config
)

使用安全设置

您可以使用安全设置来调整收到可能被视为有害的响应的可能性。默认情况下,安全设置会在所有维度上屏蔽概率中等和/或高可能属于不安全内容的内容。详细了解安全设置
下面是设置一项安全设置的具体方法:

val generativeModel = GenerativeModel(modelName = "MODEL_NAME",apiKey = BuildConfig.apiKey,safetySettings = listOf(SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.ONLY_HIGH))
)

您还可以设定多个安全设置:

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)
)

后续步骤

提示设计是创建提示以从语言模型引出所需回复的过程。编写结构合理的提示对于确保语言模型提供准确、高质量的响应至关重要。了解提示撰写的最佳做法。

Gemini 提供了多种模型变体,以满足不同用例的需求,例如输入类型和复杂度、聊天或其他对话框语言任务的实现,以及大小限制。了解可用的 Gemini 模型。

Gemini 提供用于请求提高速率限制的选项。Genmini Pro 模型的速率限制为每分钟 60 个请求 (RPM)。

借助本快速入门中介绍的适用于 Android 的客户端 SDK,您可以访问在 Google 服务器上运行的 Genmini Pro 模型。对于涉及处理敏感数据、实现离线可用性的用例,或者需要为常用用户流节省费用,您可能需要考虑访问在设备上运行的 Gemini Nano。如需了解详情,请参阅 Android(设备端)快速入门。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/294908.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

核方法 : 多项式核函数

一、定义 多项式核函数: 将数据映射到高维空间,从而实现 低维线性不可分 到 高维线性可分 二、核心代码介绍 1、关于 svm_clf.decision_function : 2、关于 PolynomialFeatures(degree3) : 二、全量代码 import numpy as …

python读取Excel内容并展示成json

shigen坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 伙伴们,又是许久未曾见面了。最近也是在忙着加班,加上没有新技术的输入和产出&…

INFINI Gateway 如何防止大跨度查询

背景 业务每天生成一个日期后缀的索引,写入当日数据。 业务查询有时会查询好多天的数据,导致负载告警。 现在想对查询进行限制–只允许查询一天的数据(不限定是哪天),如果想查询多天的数据就走申请。 技术分析 在每…

Ubuntu 常用命令之 tar 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 tar 命令在 Ubuntu 系统中是用来打包和解包文件的工具。tar 命令可以将多个文件或目录打包成一个 tar 文件,也可以将 tar 文件解包成原来的文件或目录。 tar 命令的常用参数如下 c:创建一个新的 tar 文件…

Vue 实现响应式布局

实现响应式布局是工作中必不可少 客户需要 若是使用vue element ui 的方式实现 浏览器宽度为760的情况 浏览器宽度为360的情况 手机上的显示的情况 一、对于屏幕尺寸的定义 element UI参照Bootstrap的解决方案提供了五种屏幕大小尺寸:xs、sm、md、lg 和 xl。并对…

OpenCV与YOLO学习与研究指南

引言 OpenCV是一个开源的计算机视觉和机器学习软件库,而YOLO(You Only Look Once)是一个流行的实时对象检测系统。对于大学生和初学者而言,掌握这两项技术将大大提升他们在图像处理和机器视觉领域的能力。 基础知识储备 在深入…

行列式:方程组未知数的计算:克拉默法则

行列式:方程组未知数的计算 ![ ](https://img-blog.csdnimg.cn/direct/4a9c2800da3746ea95c1a3c93057d796.png)

桶装水送水小程序:提升服务质量的利器

随着移动互联网的发展,越来越多的消费者通过手机在线购物和订购商品。如果你是一名桶装水供应商,想要拓展线上业务,那么开发一个桶装水微信小程序将是一个明智的选择。本文将指导你从零开始开发一个桶装水微信小程序,让你轻松完成…

使用Docker一键部署Uptime Kuma,并将监控服务映射至公网访问

文章目录 **主要功能**一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用本教程安装。本教程使用Docker部署服务,如何安装Docker详见: 二、Docker部署Uptime Kuma三、实现公网查看网站监控四、使用固定公网地址访问…

PyQt6 QTimer计时器控件

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计52条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…

【什么是泛型,有什么好处】

✅什么是泛型,有什么好处 ✅典型回答✅泛型是如何实现的✅什么是类型擦除?📝C语言对泛型的支持📝泛型擦除的缺点有哪些? ✅对泛型通配符的理解📝泛型中上下界限定符 extends 和 super 有什么区别&#xff1…

汽车服务品牌网站建设的作用是什么

汽车服务涵盖多个层面,在保修维护这一块更是精准到了车内车外,无论是品牌商还是市场中各维修部,都能给到车辆很好的维修养护服务。如今车辆的人均拥有量已经非常高,也因此市场中围绕汽车相关的从业者也比较多。 首先就是拓客引流…