改用 Vertex AI SDK 替代 Google AI SDK

本页介绍了如何在移动应用或 Web 应用中从 Google AI 客户端 SDK 迁移到 Vertex AI in Firebase 客户端 SDK。Vertex AI in Firebase SDK 适用于 Apple 平台 (Swift)、Android (Kotlin 和 Java)、Web (JavaScript) 和 Flutter (Dart)。

直接前往迁移说明

为什么要迁移到使用 Vertex AI

您可能尝试过使用 Google AI StudioGoogle AI 客户端 SDK 使用 Gemini API 的替代版本。这些 SDK 有助于您开始使用 Gemini API 和进行原型设计。不过,对于直接调用 Gemini API 客户端的正式版企业级移动应用和 Web 应用,Firebase 强烈建议使用 Firebase SDK 调用 Vertex AI Gemini API

适用于移动应用和 Web 应用的安全功能

对于移动应用和 Web 应用,安全至关重要,需要特别注意,因为您的代码(包括对 Gemini API 的调用)是在不受保护的环境中运行的。

  • 默认情况下,Vertex AI Gemini APIGoogle Cloud IAM(而非 Google AI Gemini API 等 API 密钥)授权。Vertex AI in Firebase SDK 旨在调用更安全的 Vertex AI Gemini API

  • 对于移动应用和 Web 应用,您需要保护 Gemini API 和项目资源(例如经过调整的模型)免遭未经授权的客户端滥用。您可以使用 Firebase App Check 验证所有 API 调用是否来自您的实际应用,并且只有在您使用 Vertex AI in Firebase SDK 时,此功能才可用。

专为移动应用和 Web 应用打造的生态系统

Firebase 是 Google 的移动应用和 Web 应用开发平台。 使用 Vertex AI in Firebase SDK 意味着您的应用将位于一个专注于全栈应用和开发者需求的生态系统中。例如,您可以执行以下任一操作及更多操作:

  • 使用 Cloud Storage for Firebase 在多模式请求中添加大型文件。此外,您还可以利用客户端 SDK 来处理文件上传和下载(即使在网络状况不佳的情况下),并为最终用户的数据提供更高的安全性。如需了解详情,请参阅有关使用 Cloud Storage for Firebase 的解决方案指南

  • 使用专为移动应用和 Web 应用构建的数据库 SDK(例如 Cloud Firestore)管理结构化数据。

  • 使用 Firebase Remote Config 动态设置运行时配置(例如位置信息)或替换应用中的值(例如模型名称),而无需发布新的应用版本。

Google Cloud 使用 Vertex AI 的其他优势

随着您在应用和工作流中使用生成式 AI 的成熟,您可能需要一个平台,该平台提供端到端解决方案来构建和部署生成式 AI 应用。Google Cloud 提供了一个全面的工具生态系统,使您能够充分利用生成式 AI 的强大力量(从应用开发的初始阶段到应用部署、应用托管以及大规模管理复杂的数据)。

Google Cloud 的 Vertex AI 平台提供了一套 MLOps 工具,可简化 AI 模型的使用、部署和监控,以提高效率和可靠性。此外,与数据库、DevOps 工具、日志记录、监控和 IAM 的集成提供了一种全面的方法来管理整个生成式 AI 生命周期。

如需详细了解 Vertex AI使用情形,请参阅 Google Cloud 文档。

迁移到 Vertex AI in Firebase SDK

迁移到 Vertex AI in Firebase SDK 需要完成以下三个主要步骤:

  1. 设置新的或现有的 Firebase 项目,并将应用连接到 Firebase。

  2. 迁移代码库,只需更改 SDK 和初始化代码(包括模型名称)即可。实际上调用 Gemini API 的任何代码都无需修改。

  3. 删除所有未使用的 API 密钥并停用未使用的 API。

第 1 步:设置 Firebase 项目并将应用连接到 Firebase

即使您已经熟悉 Firebase,也请查看本部分,确保您的 Firebase 项目和应用已设置为使用 Vertex AI in Firebase SDK。

第 2 步:迁移代码库

选择应用的平台以查看平台专用说明。

Google AI SDK 和 Vertex AI in Firebase SDK 的设计旨在让您能够尽可能轻松地在两个平台之间迁移。

如需进行迁移,您只需更改要集成到应用代码库中的 SDK,以及服务和生成式模型的初始化。您无需修改实际调用 Gemini API 的任何代码!

更改 SDK

Google AI

Kotlin

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Google AI client SDK for Android
  implementation("com.google.ai.client.generativeai:generativeai:VERSION")
}

Java

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Google AI client SDK for Android
  implementation("com.google.ai.client.generativeai:generativeai:VERSION")

  // Required for one-shot operations (to use `ListenableFuture` from Reactive Streams)
  implementation("com.google.guava:guava:31.0.1-android")

  // Required for streaming operations (to use `Publisher` from Guava Android)
  implementation("org.reactivestreams:reactive-streams:1.0.4")
}

Vertex AI in Firebase

Kotlin

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Vertex AI in Firebase SDK for Android
  implementation("com.google.firebase:firebase-vertexai:16.0.2")
}

Java

dependencies {
  // ... other androidx dependencies

  // add the dependency for the Vertex AI in Firebase SDK for Android
  implementation("com.google.firebase:firebase-vertexai:16.0.2")

  // 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")
}

更改初始化

Google AI

Kotlin

val generativeModel = GenerativeModel(modelName = "MODEL_NAME",
    // Access your API key as a Build Configuration variable
    apiKey = BuildConfig.apiKey
)

Java

GenerativeModel gm = new GenerativeModel("MODEL_NAME",
    // Access your API key as a Build Configuration variable
    BuildConfig.apiKey
);

// Use the GenerativeModelFutures Java compatibility layer which offers support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

Vertex AI in Firebase

Kotlin

val generativeModel = Firebase.vertexAI.generativeModel("MODEL_NAME")

Java

GenerativeModel gm = FirebaseVertexAI.getInstance()
        .generativeModel("MODEL_NAME");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);

更新导入语句

以下代码段使用 ChatContentGenerativeModelFutures 类作为示例,但同样的规则也适用于同一软件包名称下的其他类。

Google AI

Kotlin

import com.google.ai.client.generativeai.Chat
import com.google.ai.client.generativeai.type.Content
import com.google.ai.client.generativeai.java.GenerativeModuleFutures

Java

import com.google.ai.client.generativeai.Chat;
import com.google.ai.client.generativeai.type.Content;
import com.google.ai.client.generativeai.java.GenerativeModuleFutures;

Vertex AI in Firebase

Kotlin

import com.google.firebase.vertexai.Chat
import com.google.firebase.vertexai.type.Content
import com.google.firebase.vertexai.java.GenerativeModuleFutures

Java

import com.google.firebase.vertexai.Chat;
import com.google.firebase.vertexai.type.Content;
import com.google.firebase.vertexai.java.GenerativeModuleFutures;

第 3 步:删除所有未使用的 API 密钥并停用未使用的 API

如果您不再需要使用 Google AI API 密钥,请遵循安全性最佳实践并将其删除。您可以在 Google AI StudioAPI 密钥部分中查看和删除 Google AI API 密钥。

此外,如果您不再使用 Google AI Gemini API,请在项目中停用它。您可以在 Google Cloud 控制台的 Generative Language API (generativelanguage.googleapis.com) 页面中执行此操作。(“生成式语言 API”是 Google AI Gemini API 的官方名称。)

您还可以执行以下操作