使用 Firebase AI Logic SDK 开始使用 Gemini API

本指南介绍了如何开始使用适用于您所选平台的 Firebase AI Logic 客户端 SDK 直接从应用调用 Gemini API

您还可以使用本指南开始使用 Firebase AI Logic SDK 访问 Imagen 模型

前提条件

Swift

本指南假定您熟悉如何使用 Xcode 为 Apple 平台(如 iOS)开发应用。

  • 确保您的开发环境和 Apple 平台应用符合以下要求:

    • Xcode 16.2 或更高版本
    • 您的应用以 iOS 15 或更高版本或 macOS 12 或更高版本为目标平台
  • (可选)查看示例应用。

    下载快速入门应用

    您可以快速试用 SDK,查看各种用例的完整实现,或者使用示例应用(如果您没有自己的 Apple 平台应用)。如需使用示例应用,您需要将其关联到 Firebase 项目

Kotlin

本指南假定您熟悉如何使用 Android Studio 为 Android 开发应用。

  • 确保您的开发环境和 Android 应用满足以下要求:

    • Android Studio(最新版本)
    • 您的应用以 API 级别 21 或更高级别为目标平台
  • (可选)查看示例应用。

    下载示例应用

    您可以快速试用 SDK,查看各种用例的完整实现,或者使用示例应用(如果您没有自己的 Android 应用)。如需使用示例应用,您需要将其关联到 Firebase 项目

Java

本指南假定您熟悉如何使用 Android Studio 为 Android 开发应用。

  • 确保您的开发环境和 Android 应用满足以下要求:

    • Android Studio(最新版本)
    • 您的应用以 API 级别 21 或更高级别为目标平台
  • (可选)查看示例应用。

    下载示例应用

    您可以快速试用 SDK,查看各种用例的完整实现,或者使用示例应用(如果您没有自己的 Android 应用)。如需使用示例应用,您需要将其关联到 Firebase 项目

Web

本指南假定您熟悉如何使用 JavaScript 开发 Web 应用。本指南与框架无关。

  • 确保您的开发环境和 Web 应用符合以下要求:

    • (可选)Node.js
    • 现代网络浏览器
  • (可选)查看示例应用。

    下载示例应用

    您可以快速试用 SDK,查看各种用例的完整实现,或者使用示例应用(如果您没有自己的 Web 应用)。如需使用示例应用,您需要将其关联到 Firebase 项目

Dart

本指南假定您熟悉如何使用 Flutter 开发应用。

  • 确保您的开发环境和 Flutter 应用满足以下要求:

    • Dart 3.2.0 或更高版本
  • (可选)查看示例应用。

    下载示例应用

    您可以快速试用该 SDK,查看各种用例的完整实现,或者使用示例应用(如果您没有自己的 Flutter 应用)。如需使用示例应用,您需要将其关联到 Firebase 项目

Unity

本指南假定您熟悉如何使用 Unity 开发游戏。

  • 确保您的开发环境和 Unity 游戏满足以下要求:

    • Unity 编辑器 2021 LTS 或更高版本
  • (可选)查看示例应用。

    下载示例应用

    您可以快速试用 SDK,查看各种用例的完整实现,或者使用示例应用(如果您没有自己的 Unity 游戏)。如需使用示例应用,您需要将其关联到 Firebase 项目

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

  1. 登录 Firebase 控制台,然后选择您的 Firebase 项目。

  2. Firebase 控制台中,前往 Firebase AI Logic 页面

  3. 点击开始以启动引导式工作流,该工作流可帮助您为项目设置所需的 API 和资源。

  4. 选择要与 Firebase AI Logic SDK 搭配使用的“Gemini API”提供程序。您可以随时根据需要设置和使用其他 API 提供方。

    • Gemini Developer API - 结算系统(可选)(适用于免费的 Spark 定价方案)
      控制台将启用所需的 API,并在您的项目中创建 Gemini API 密钥。如果您想升级价格方案,可以稍后设置结算信息。

    • Vertex AI Gemini API - 需要结算(需要采用随用随付的 Blaze 定价方案)
      控制台可帮助您设置结算方式,并在项目中启用所需的 API。

  5. 如果控制台的工作流中出现提示,请按照屏幕上的说明注册您的应用并将其关联到 Firebase。

  6. 继续执行本指南中的下一步,将 SDK 添加到您的应用。

第 2 步:添加 SDK

设置完 Firebase 项目并将应用关联到 Firebase(请参阅上一步)后,您现在可以将 Firebase AI Logic SDK 添加到应用了。

Swift

使用 Swift Package Manager 安装和管理 Firebase 依赖项。

Firebase AI Logic 库提供了用于与 GeminiImagen 模型交互的 API。该库包含在适用于 Apple 平台的 Firebase SDK (firebase-ios-sdk) 中。

如果您已在使用 Firebase,请确保您的 Firebase 软件包是 v11.13.0 或更高版本。

  1. 在 Xcode 中打开您的应用项目,依次点击 File(文件)> Add Package Dependencies(添加软件包依赖项)

  2. 出现提示时,添加 Firebase Apple 平台 SDK 代码库:

    https://github.com/firebase/firebase-ios-sdk
    
  3. 选择最新的 SDK 版本。

  4. 选择 FirebaseAI 库。

完成之后,Xcode 将会自动开始在后台解析和下载您的依赖项。

Kotlin

Firebase AI Logic SDK for Android (firebase-ai) 提供对 API 的访问权限,以便与 GeminiImagen 模型交互。

在您的模块(应用级)Gradle 文件(例如 <project>/<app-module>/build.gradle.kts)中,添加适用于 Android 的 Firebase AI Logic 库的依赖项。我们建议使用 Firebase Android BoM 来实现库版本控制。

dependencies {
  // ... other androidx dependencies

  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:33.13.0"))

  // Add the dependency for the Firebase AI Logic library
  // When using the BoM, you don't specify versions in Firebase library dependencies
  implementation("com.google.firebase:firebase-ai")
}

借助 Firebase Android BoM,可确保您的应用使用的始终是 Firebase Android 库的兼容版本。

Java

Firebase AI Logic SDK for Android (firebase-ai) 提供对 API 的访问权限,以便与 GeminiImagen 模型交互。

在您的模块(应用级)Gradle 文件(例如 <project>/<app-module>/build.gradle.kts)中,添加适用于 Android 的 Firebase AI Logic 库的依赖项。我们建议使用 Firebase Android BoM 来实现库版本控制。

对于 Java,您需要额外添加两个库。

dependencies {
  // ... other androidx dependencies

  // Import the BoM for the Firebase platform
  implementation(platform("com.google.firebase:firebase-bom:33.13.0"))

  // Add the dependency for the Firebase AI Logic library
  // When using the BoM, you don't specify versions in Firebase library dependencies
  implementation("com.google.firebase:firebase-ai")

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

借助 Firebase Android BoM,可确保您的应用使用的始终是 Firebase Android 库的兼容版本。

Web

Firebase AI Logic 库提供了用于与 GeminiImagen 模型交互的 API。该库包含在 Firebase JavaScript SDK for Web 中。

  1. 使用 npm 安装 Firebase JS SDK for Web:

    npm install firebase
    
  2. 在您的应用中初始化 Firebase:

    import { initializeApp } from "firebase/app";
    
    // TODO(developer) Replace the following with your app's Firebase configuration
    // See: https://firebase.google.com/docs/web/learn-more#config-object
    const firebaseConfig = {
      // ...
    };
    
    // Initialize FirebaseApp
    const firebaseApp = initializeApp(firebaseConfig);
    

Dart

适用于 Flutter 的 Firebase AI Logic 插件 (firebase_ai) 提供对 API 的访问权限,以便与 GeminiImagen 模型交互。

  1. 在您的 Flutter 项目目录中,运行以下命令以安装核心插件和 Firebase AI Logic 插件:

    flutter pub add firebase_core && flutter pub add firebase_ai
    
  2. lib/main.dart 文件中,导入您之前生成的 Firebase 核心插件、Firebase AI Logic 插件和配置文件:

    import 'package:firebase_core/firebase_core.dart';
    import 'package:firebase_ai/firebase_ai.dart';
    import 'firebase_options.dart';
    
  3. 同样在 lib/main.dart 文件中,使用配置文件导出的 DefaultFirebaseOptions 对象初始化 Firebase:

    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
  4. 重新构建 Flutter 应用:

    flutter run
    

Unity

  1. 下载 Firebase Unity SDK,然后将此 SDK 解压缩到合适的位置。

    Firebase Unity SDK 不局限于特定平台。

  2. 在您打开的 Unity 项目中,依次转到 Assets > Import Package > Custom Package

  3. 从提取的 SDK 中,选择 FirebaseAI 软件包。

  4. 在“Import Unity Package”窗口中,点击 Import

  5. 返回 Firebase 控制台,在设置工作流中,点击下一步

第 3 步:初始化服务并创建模型实例

点击您的 Gemini API 提供商,在本页面上查看特定于提供商的内容和代码。

Firebase AI Logic 客户端 SDK 与 Gemini Developer API 搭配使用时,请勿将 Gemini API 密钥添加到应用的代码库中了解详情。

在向 Gemini 模型发送提示之前,请为所选 API 提供程序初始化服务并创建 GenerativeModel 实例。

Swift


import FirebaseAI

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.0-flash")

Kotlin


// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
                        .generativeModel("gemini-2.0-flash")

Java


// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
        .generativeModel("gemini-2.0-flash");

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

Web


import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";

// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });

Dart


import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

// Initialize FirebaseApp
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
      FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');

Unity


using Firebase;
using Firebase.AI;

// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.0-flash");

请注意,您可能并不总是需要创建 GenerativeModel 实例,具体取决于您使用的 capability

此外,在完成本入门指南后,不妨了解如何为您的应用场景和应用选择模型

第 4 步:向模型发送提示请求

现在,您已做好向 Gemini 模型发送提示请求的准备。

您可以使用 generateContent() 从包含文本的提示生成文本:

Swift


import FirebaseAI

// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())

// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.generativeModel(modelName: "gemini-2.0-flash")

// Provide a prompt that contains text
let prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
let response = try await model.generateContent(prompt)
print(response.text ?? "No text in response.")

Kotlin

对于 Kotlin,此 SDK 中的方法是挂起函数,需要从协程作用域调用。

// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
                        .generativeModel("gemini-2.0-flash")

// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."

// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(prompt)
print(response.text)

Java

对于 Java,此 SDK 中的方法会返回 ListenableFuture

// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
        .generativeModel("gemini-2.0-flash");

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

// Provide a prompt that contains text
Content prompt = new Content.Builder()
    .addText("Write a story about a magic backpack.")
    .build();

// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
    @Override
    public void onSuccess(GenerateContentResponse result) {
        String resultText = result.getText();
        System.out.println(resultText);
    }

    @Override
    public void onFailure(Throwable t) {
        t.printStackTrace();
    }
}, executor);

Web


import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";

// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
};

// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);

// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });

// Wrap in an async function so you can use await
async function run() {
  // Provide a prompt that contains text
  const prompt = "Write a story about a magic backpack."

  // To generate text output, call generateContent with the text input
  const result = await model.generateContent(prompt);

  const response = result.response;
  const text = response.text();
  console.log(text);
}

run();

Dart


import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

// Initialize FirebaseApp
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
      FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');

// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];

// To generate text output, call generateContent with the text input
final response = await model.generateContent(prompt);
print(response.text);

Unity


using Firebase;
using Firebase.AI;

// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.0-flash");

// Provide a prompt that contains text
var prompt = "Write a story about a magic backpack.";

// To generate text output, call GenerateContentAsync with the text input
var response = await model.GenerateContentAsync(prompt);
UnityEngine.Debug.Log(response.Text ?? "No text in response.");

您还可以执行以下操作

详细了解支持的模型

了解适用于各种使用情形的模型及其配额价格

试用其他功能

了解如何控制内容生成

  • 了解提示设计,包括最佳实践、策略和示例提示。
  • 配置模型参数,例如温度和输出 token 数上限(适用于 Gemini)或宽高比和人物生成(适用于 Imagen)。
  • 使用安全设置来调整收到可能被视为有害的回答的可能性。
您还可以对提示和模型配置进行实验,甚至可以使用 Google AI Studio 获取生成的代码段。


就您使用 Firebase AI Logic 的体验提供反馈