Vertex AI in Firebase SDK のプレビュー版から Firebase AI Logic SDK に移行する


Firebase AI Logic とそのクライアント SDK は、以前は「Vertex AI in Firebase」と呼ばれていました。サービスと機能の拡大(Gemini Developer API のサポートなど)をより適切に反映するため、サービスの名前を変更し、Firebase AI Logic に再パッケージ化しました

モバイルアプリやウェブアプリから Google の生成 AI モデルに安全にアクセスするには、Gemini API」プロバイダを選択できるようになりました。以前から利用可能な Vertex AI Gemini API と、新たに Gemini Developer API が追加されました。つまり、Gemini Developer API を使用できるようになりました。Gemini Developer API には、妥当なレート制限と割り当てを備えた無料枠が用意されています。

Firebase AI Logic SDK への移行手順の概要

  • ステップ 1: アプリとユースケースに最適な「Gemini API」プロバイダを選択します。

  • ステップ 2: 必要な API を有効にします。

  • ステップ 3: アプリで使用されているライブラリを更新します。

  • ステップ 4: アプリの初期化を更新します。

  • ステップ 5: 使用する機能に応じてコードを更新します。

ステップ 1: アプリに最適な「Gemini API」プロバイダを選択する

この移行では、次の「Gemini API」プロバイダを選択できます。

  • 以前の「Vertex AI in Firebase」SDK では、Vertex AI Gemini API のみを使用できました。

  • 新しい Firebase AI Logic SDK を使用すると、モバイルアプリやウェブアプリから直接呼び出す Gemini API プロバイダ(Gemini Developer API または Vertex AI Gemini API)を選択できます。

2 つの Gemini API プロバイダの使用の違い(特にサポートされている機能、料金、レート制限の観点から)を確認します。たとえば、Gemini Developer APICloud Storage URL を使用したファイルの提供をサポートしていませんが、無料枠と妥当な割り当てを利用したい場合は、適切な選択肢となる可能性があります。

ステップ 2: 必要な API を有効にする

選択した「Gemini API」プロバイダを使用するには、Firebase プロジェクトで必要な API がすべて有効になっていることを確認してください。

プロジェクトで両方の API プロバイダを同時に有効にできます。

  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 キーが作成されます。
      この Gemini API キーをアプリのコードベースに追加しないでください。詳細

    • Vertex AI Gemini API - 課金が必要(従量課金制の Blaze 料金プランが必要)
      コンソールのワークフローにより、プロジェクトで必要な API が有効になります。

  5. この移行ガイドに沿って、アプリのライブラリと初期化を更新してください。

ステップ 3: アプリで使用されているライブラリを更新する

Firebase AI Logic ライブラリを使用するようにアプリのコードベースを更新します。

Swift

  1. Xcode でアプリ プロジェクトを開いたまま、次のいずれかの方法で Firebase パッケージを v11.13.0 以降に更新します。

    • オプション 1: すべてのパッケージを更新する: [File] > [Packages] > [Update to Latest Package Versions] に移動します。

    • オプション 2: Firebase を個別に更新する: [パッケージの依存関係] セクションで Firebase パッケージに移動します。Firebase パッケージを右クリックし、[Update Package] を選択します。

  2. Firebase パッケージに v11.13.0 以降が表示されていることを確認します。そうでない場合は、指定したパッケージ要件で v11.13.0 以降への更新が許可されていることを確認します。

  3. プロジェクト エディタでアプリのターゲットを選択し、[Frameworks, Libraries, and Embedded Content] セクションに移動します。

  4. 新しいライブラリを追加する: [+] ボタンを選択し、Firebase パッケージから FirebaseAI を追加します。

  5. アプリの移行が完了したら(このガイドの残りのセクションを参照)、古いライブラリを削除してください。
    FirebaseVertexAI-Preview を選択し、 ボタンを押します。

Kotlin

  1. モジュール(アプリレベル)の Gradle ファイル(通常は <project>/<app-module>/build.gradle.kts または <project>/<app-module>/build.gradle)で、古い依存関係(該当する場合)を以下に置き換えます。

    古い依存関係を削除する前に、アプリのコードベースを移行する(このガイドの残りのセクションを参照)方が簡単な場合があります。

    // BEFORE
    dependencies {
      implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")
    }
    
    
    // AFTER
    dependencies {
      // Import the BoM for the Firebase platform
      implementation(platform("com.google.firebase:firebase-bom:33.16.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")
    }
  2. Android プロジェクトを Gradle ファイルと同期します。

Firebase Android BoM を使用しない場合は、firebase-ai ライブラリの依存関係を追加し、Android Studio で推奨される最新バージョンを承認します。

Java

  1. モジュール(アプリレベル)の Gradle ファイル(通常は <project>/<app-module>/build.gradle.kts または <project>/<app-module>/build.gradle)で、古い依存関係(該当する場合)を以下に置き換えます。

    古い依存関係を削除する前に、アプリのコードベースを移行する(このガイドの残りのセクションを参照)方が簡単な場合があります。

    // BEFORE
    dependencies {
      implementation("com.google.firebase:firebase-vertexai:16.0.0-betaXX")
    }
    
    
    // AFTER
    dependencies {
      // Import the BoM for the Firebase platform
      implementation(platform("com.google.firebase:firebase-bom:33.16.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")
    }
  2. Android プロジェクトを Gradle ファイルと同期します。

Firebase Android BoM を使用しない場合は、firebase-ai ライブラリの依存関係を追加し、Android Studio で推奨される最新バージョンを承認します。

Web

  1. npm を使用して、ウェブ用の Firebase JS SDK の最新バージョンを取得します。

    npm i firebase@latest

    または

    yarn add firebase@latest
  2. ライブラリをインポートした場所で、インポート ステートメントを更新して代わりに firebase/ai を使用します。

    古いインポートを削除する前に、アプリのコードベースを移行する(このガイドの残りのセクションを参照)方が簡単な場合があります。

    // BEFORE
    import { initializeApp } from "firebase/app";
    import { getVertexAI, getGenerativeModel } from "firebase/vertexai-preview";
    
    
    // AFTER
    import { initializeApp } from "firebase/app";
    import { getAI, getGenerativeModel } from "firebase/ai";

Dart

  1. Flutter プロジェクト ディレクトリから次のコマンドを実行して、pubspec.yaml ファイルで firebase_ai パッケージを使用するように更新します。

    flutter pub add firebase_ai
  2. Flutter プロジェクトを再ビルドします。

    flutter run
  3. アプリの移行が完了したら(このガイドの残りのセクションを参照)、必ず古いパッケージを削除してください。

    flutter pub remove firebase_vertexai

Unity

Vertex AI in Firebase」では Unity のサポートをご利用いただけませんでした。

Firebase AI Logic SDK for Unity のスタートガイドをご覧ください。

ステップ 4: アプリの初期化を更新する

Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。

選択した 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.5-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.5-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.5-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.5-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.5-flash');

Unity

Vertex AI in Firebase」から Unity のサポートを利用できませんでした。

Firebase AI Logic SDK for Unity のスタートガイドをご覧ください。

使用する機能によっては、必ずしも GenerativeModel インスタンスを作成するとは限りません

ステップ 5: 使用する機能に応じてコードを更新する

このステップでは、使用する機能に応じて必要になる可能性のある変更について説明します。

  • Cloud Storage URL を使用していて、この移行で Gemini Developer API を使用するように切り替えた場合は、ファイルをインライン データとして含めるようにマルチモーダル リクエストを更新する必要があります(または、動画に YouTube URL を使用します)。

  • Vertex AI in Firebase」SDK の一般提供版では、いくつかの変更が導入されました。Firebase AI Logic SDK を使用する場合も、同じ変更が必要です。Firebase AI Logic SDK を取り込むためにコードで行う必要のある変更について、次のリストを確認してください。

すべての言語とプラットフォームで必須

  • 関数呼び出し
    GA より前にこの機能を実装した場合は、スキーマの定義方法を更新する必要があります。関数の宣言を記述する方法については、更新された関数呼び出しガイドをご覧ください。

  • responseSchema
    を使用して構造化された出力(JSON など)を生成する GA より前にこの機能を実装した場合は、スキーマの定義方法を更新する必要があります。JSON スキーマの作成方法については、新しい構造化出力ガイドをご覧ください。

  • タイムアウト

    • リクエストのデフォルトのタイムアウトを 180 秒に変更しました。

プラットフォームまたは言語に応じて必須

Swift

  • 列挙型

    • ほとんどの enum 型を静的変数を持つ struct に置き換えました。この変更により、下位互換性のある方法で API を進化させる際の柔軟性が向上します。switch ステートメントを使用する場合は、default: ケースを含めて、不明な値や未処理の値(今後 SDK に追加される新しい値を含む)を処理する必要があります。

    • BlockThreshold 列挙型の名前を HarmBlockThreshold に変更しました。この型は struct になりました。

    • 次の列挙型(現在は struct)から unknownunspecified のケースを削除しました: HarmCategoryHarmBlockThresholdHarmProbabilityBlockReasonFinishReason

    • 列挙型 ModelContent.PartPart というプロトコルに置き換え、下位互換性を維持したまま新しい型を追加できるようにしました。この変更については、コンテンツ パーツのセクションで詳しく説明します。

  • コンテンツ パーツ

    • ThrowingPartsRepresentable プロトコルを削除し、ModelContent のイニシャライザを簡素化して、コンパイラ エラーがまれに発生するのを回避しました。正しくエンコードされていない画像は、generateContent で使用されるときにエラーをスローします。

    • ModelContent.Part のケースを、Part プロトコルに準拠する次の struct 型に置き換えました。

      • .textからTextPart
      • .dataInlineDataPart に設定
      • .fileDataFileDataPart に設定
      • .functionCallFunctionCallPart に設定
      • .functionResponseからFunctionResponsePart
  • 有害カテゴリ

    • HarmCategorySafetySetting 型にネストされなくなりました。SafetySetting.HarmCategory と呼んでいる場合は、HarmCategory に置き換えることができます。
  • Safety feedback

    • SafetyFeedback 型はどのレスポンスでも使用されていなかったため、削除しました。
  • 引用メタデータ

    • CitationMetadatacitationSources プロパティの名前を citations に変更しました。
  • 合計課金対象文字数

    • 文字が送信されない状況を反映するため、CountTokensResponsetotalBillableCharacters プロパティを省略可能に変更しました。
  • 候補者の回答

    • 他のプラットフォームと一致するように、CandidateResponse の名前を Candidate に変更しました。
  • 生成構成

    • GenerationConfig のパブリック プロパティを internal に変更しました。これらはすべて、イニシャライザで構成可能です。

Kotlin

  • 列挙型

    • enum クラスと sealed クラスを通常のクラスに置き換えました。この変更により、下位互換性のある方法で API を進化させる際の柔軟性が向上します。

    • BlockThreshold 列挙型の名前を HarmBlockThreshold に変更しました。

    • HarmBlockThresholdHarmProbabilityHarmSeverityBlockReasonFinishReason の列挙型から値を削除しました。

  • Blob メソッド

    • 名前に Blob を含むすべてのメソッドの名前を変更し、代わりに InlineData を使用するようにしました。
  • 安全性設定

    • method フィールドを NULL 可能に変更しました。
  • Duration クラス

    • Kotlin の Duration クラスの使用箇所をすべて削除し、long に置き換えました。この変更により、Java との相互運用性が向上します。
  • 引用メタデータ

    • CitationMetadata で以前に宣言されたすべてのフィールドを Citation という新しいクラスにラップしました。引用は、CitationMetadatacitations というリストにあります。この変更により、プラットフォーム間で型の整合性が向上します。
  • トークンをカウントする

    • totalBillableCharacters フィールドを NULL 可能に変更しました。
  • 合計課金対象文字数

    • 文字が送信されない状況を反映するため、CountTokensResponsetotalBillableCharacters プロパティを省略可能に変更しました。
  • モデルのインスタンス化

    • 他のプラットフォームとの整合性を保つため、requestOptions パラメータをパラメータ リストの末尾に移動しました。
  • Live API

    • 列挙クラス ResponseModalityUNSPECIFIED 値を削除しました。代わりに null を使用します。

    • LiveGenerationConfig.setResponseModalities の名前を LiveGenerationConfig.setResponseModality に変更しました。

    • LiveContentResponse.Status クラスを削除し、代わりにステータス フィールドを LiveContentResponse のプロパティとしてネストしました。

    • LiveContentResponse クラスを削除し、代わりにモデルからのレスポンスと一致する LiveServerMessage のサブクラスを提供しました。

    • ListenableFuture<LiveSession> ではなく ListenableFuture<LiveSessionFutures> を返すように LiveModelFutures.connect を変更しました。

Java

  • 列挙型

    • enum クラスと sealed クラスを通常のクラスに置き換えました。この変更により、下位互換性のある方法で API を進化させる際の柔軟性が向上します。

    • BlockThreshold 列挙型の名前を HarmBlockThreshold に変更しました。

    • HarmBlockThresholdHarmProbabilityHarmSeverityBlockReasonFinishReason の列挙型から値を削除しました。

  • Blob メソッド

    • 名前に Blob を含むすべてのメソッドの名前を変更し、代わりに InlineData を使用するようにしました。
  • 安全性設定

    • method フィールドを NULL 可能に変更しました。
  • Duration クラス

    • Kotlin の Duration クラスの使用箇所をすべて削除し、long に置き換えました。この変更により、Java との相互運用性が向上します。
  • 引用メタデータ

    • CitationMetadata で以前に宣言されたすべてのフィールドを Citation という新しいクラスにラップしました。引用は、CitationMetadatacitations というリストにあります。この変更により、プラットフォーム間で型の整合性が向上します。
  • トークンをカウントする

    • totalBillableCharacters フィールドを NULL 可能に変更しました。
  • 合計課金対象文字数

    • 文字が送信されない状況を反映するため、CountTokensResponsetotalBillableCharacters プロパティを省略可能に変更しました。
  • モデルのインスタンス化

    • 他のプラットフォームとの整合性を保つため、requestOptions パラメータをパラメータ リストの末尾に移動しました。
  • Live API

    • 列挙クラス ResponseModalityUNSPECIFIED 値を削除しました。代わりに null を使用します。

    • LiveGenerationConfig.setResponseModalities の名前を LiveGenerationConfig.setResponseModality に変更しました。

    • LiveContentResponse.Status クラスを削除し、代わりにステータス フィールドを LiveContentResponse のプロパティとしてネストしました。

    • LiveContentResponse クラスを削除し、代わりにモデルからのレスポンスと一致する LiveServerMessage のサブクラスを提供しました。

    • ListenableFuture<LiveSession> ではなく ListenableFuture<LiveSessionFutures> を返すように LiveModelFutures.connect を変更しました。

  • さまざまな Java ビルダー メソッドが、void ではなく、クラスのインスタンスを正しく返すように変更されました。

Web

  • 列挙型

    • HarmCategoryBlockThresholdHarmProbabilityHarmSeverityBlockReasonFinishReason の列挙型から値を削除しました。
  • ブロックの理由

    • PromptFeedbackblockReason を省略可能に変更しました。

Vertex AI Gemini API の代わりに Gemini Developer API の使用を開始する場合にのみ変更が必要です。

  • 安全性設定

    • サポートされていない SafetySetting.method の使用を削除しました。
  • インライン データ

    • サポートされていない InlineDataPart.videoMetadata の使用を削除しました。

Dart

  • 列挙型

    • HarmCategoryHarmProbabilityBlockReasonFinishReason の列挙型から値を削除しました。
  • データ部分

    • 他のプラットフォームとの整合性を保つため、DataPart の名前を InlineDataPart に、static data 関数の名前を inlineData に変更しました。
  • リクエスト オプション

    • timeout が機能していなかったため、RequestOptions を削除しました。近い将来に再度追加される予定ですが、他のプラットフォームに合わせて GenerativeModel タイプに移行されます。
  • 停止シーケンス

    • GenerationConfigstopSequences パラメータを省略可能に変更し、デフォルトを空の配列ではなく null にしました。
  • 引用

    • CitationMetadatacitationSources プロパティの名前を citations に変更しました。他のプラットフォームと一致するように、CitationSource 型の名前が Citation に変更されました。
  • 不要なパブリック型、メソッド、プロパティ

    • 意図せず公開されていた次の型、メソッド、プロパティを削除しました。defaultTimeoutCountTokensResponseFieldsparseCountTokensResponseparseEmbedContentResponseparseGenerateContentResponseparseContentBatchEmbedContentsResponseContentEmbeddingEmbedContentRequestEmbedContentResponse
  • トークンをカウントする

    • 不要になった countTokens 関数から余分なフィールドを削除しました。contents のみが必要です。
  • モデルのインスタンス化

    • 他のプラットフォームに合わせて、systemInstruction パラメータをパラメータ リストの末尾に移動しました。
  • 埋め込み機能

    • モデルからサポートされていないエンベディング機能(embedContentbatchEmbedContents)を削除しました。

Unity

Vertex AI in Firebase」では Unity のサポートをご利用いただけませんでした。

Firebase AI Logic SDK for Unity のスタートガイドをご覧ください。

移行に関連して発生する可能性のあるエラー

Firebase AI Logic の一般提供版を使用するように移行する際に、この移行ガイドで説明されている必要な変更をすべて完了していないと、エラーが発生する可能性があります。

403 エラー: Requests to this API firebasevertexai.googleapis.com ... are blocked.

Requests to this API firebasevertexai.googleapis.com ... are blocked. という 403 エラーが表示された場合は、通常、Firebase 構成ファイルまたはオブジェクトの Firebase API キーの許可リストに、使用しようとしているプロダクトに必要な API が含まれていないことを意味します。

アプリで使用する Firebase API キーの「API の制限」許可リストに必要な API がすべて含まれていることを確認してください。Firebase AI Logic の場合、Firebase API キーの許可リストに Firebase AI Logic API が少なくとも 1 つ必要です。この API は、Firebase コンソールで必要な API を有効にしたときに、API キーの許可リストに自動的に追加されているはずです。

すべての API キーは、Google Cloud コンソールの [API とサービス] > [認証情報] パネルで確認できます。


Firebase AI Logic の使用感についてフィードバックを送信する