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 」プロバイダを選択できます。
2 つの Gemini API プロバイダの使用の違い を確認します。特に、サポートされている機能、料金、レート制限の点に注意してください。たとえば、Gemini Developer API は Cloud Storage URL を使用したファイルの提供をサポートしていませんが、無料の階層と合理的な割り当てを利用したい場合は、Gemini Developer API が適しています。
ステップ 2 : 必要な API を有効にする
選択した「Gemini API 」プロバイダを使用するには、Firebase プロジェクトで必要な API がすべて有効になっていることを確認してください。
プロジェクトで両方の API プロバイダを同時に有効にできます。
Firebase コンソール にログインし、Firebase プロジェクトを選択します。
Firebase コンソールで、[Firebase AI Logic ] ページ に移動します。
[使ってみる ] をクリックして、プロジェクトに必要な API とリソースを設定するガイド付きワークフローを開始します。
Firebase AI Logic SDK で使用する「Gemini API」プロバイダを選択します。必要に応じて、後で他の API プロバイダを設定して使用できます。
Gemini Developer API - 課金は任意 (料金無料の Spark 料金プランで利用可能) コンソールのワークフローで、必要な API が有効になり、プロジェクトに Gemini API キーが作成されます。
この Gemini API キーをアプリのコードベースに追加しないでください 。 詳細
Vertex AI Gemini API - 課金が必要 (従量課金制の Blaze 料金プランが必要) コンソールのワークフローで、プロジェクトで必要な API が有効になります。
この移行ガイドに沿って、アプリのライブラリと初期化を更新します。
ステップ 3 : アプリで使用しているライブラリを更新する
Firebase AI Logic ライブラリを使用するようにアプリのコードを更新します。
Swift
Xcode でアプリ プロジェクトを開き、次のいずれかのオプションを使用して Firebase パッケージを v11.13.0 以降に更新します。
Firebase パッケージが v11.13.0 以降になっていることを確認します。そうでない場合は、指定したパッケージ要件 で v11.13.0 以降への更新が許可されていることを確認します。
プロジェクト エディタでアプリのターゲットを選択し、[フレームワーク、ライブラリ、埋め込みコンテンツ ] セクションに移動します。
新しいライブラリを追加します。[+ ] ボタンを選択し、Firebase パッケージから FirebaseAI を追加します。
アプリの移行が完了したら(このガイドの残りのセクションを参照)、古いライブラリを削除します。 FirebaseVertexAI-Preview を選択し、- ボタンを押します。
Kotlin
モジュール(アプリレベル)の 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.14.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" )
}
Android プロジェクトを Gradle ファイルと同期します。
Firebase Android BoM を使用しない場合は、firebase-ai
ライブラリの依存関係を追加し、Android Studio が提案する最新バージョンを承認してください。
Java
モジュール(アプリレベル)の 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.14.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" )
}
Android プロジェクトを Gradle ファイルと同期します。
Firebase Android BoM を使用しない場合は、firebase-ai
ライブラリの依存関係を追加し、Android Studio が提案する最新バージョンを承認してください。
Web
npm を使用して Firebase JS SDK for Web の最新バージョンを取得します。
npm i firebase@latest
または
yarn add firebase@latest
ライブラリをインポートした場所で、代わりに 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
Flutter プロジェクト ディレクトリで次のコマンドを実行して、pubspec.yaml
ファイルで firebase_ai
パッケージを使用するように更新します。
flutter pub add firebase_ai
Flutter プロジェクトを再ビルドします。
flutter run
アプリの移行が完了したら(このガイドの残りのセクションを参照)、古いパッケージを削除してください。
flutter pub remove firebase_vertexai
ステップ 4 : アプリの初期化を更新する
Gemini API プロバイダをクリックして、このページでプロバイダ固有のコンテンツとコードを表示します。
Gemini Developer API
Vertex AI 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.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' );
使用している機能によっては、GenerativeModel
インスタンスを作成しない場合がある ことに注意してください。
ステップ 5 : 使用する機能に応じてコードを更新する
このステップでは、使用する機能に応じて必要となる変更について説明します。
Cloud Storage URL を使用していて、この移行で Gemini Developer API を使用するように切り替えた場合は、マルチモーダル リクエストを更新してファイルをインライン データとして含める (または動画に YouTube URL を使用する)必要があります。
「Vertex AI in Firebase 」SDK の一般提供版には、いくつかの変更が加えられています。Firebase AI Logic SDK を使用する場合も、同じ変更が必要です。次のリストで、Firebase AI Logic SDK の使用に対応するためにコードで変更が必要な箇所を確認します。
すべての言語とプラットフォームで必須
関数呼び出し
一般提供前にこの機能を実装した場合は、スキーマの定義方法を更新する必要があります。関数の宣言方法については、更新された関数呼び出しガイド をご覧ください。
responseSchema
を使用して構造化出力(JSON など)を生成する
一般提供前にこの機能を実装した場合は、スキーマの定義方法を更新する必要があります。JSON スキーマの作成方法については、新しい構造化出力ガイド をご覧ください。
タイムアウト
リクエストのデフォルトのタイムアウトを 180 秒に変更しました。
列挙型
ほとんどの enum
型を、静的変数を持つ struct
に置き換えました。この変更により、下位互換性のある方法で API をより柔軟に進化させることができます。switch
ステートメントを使用する場合は、今後 SDK に追加される新しい値など、不明な値や処理されない値に対応するために、default:
ケースを含める必要があります。
BlockThreshold
列挙型の名前を HarmBlockThreshold
に変更しました。この型は struct
になりました。
HarmCategory
、HarmBlockThreshold
、HarmProbability
、BlockReason
、FinishReason
の各列挙型(現在は struct
)から unknown
と unspecified
のケースを削除しました。
列挙型 ModelContent.Part
を Part
という名前のプロトコルに置き換え、下位互換性のある方法で新しい型を追加できるようにしました。この変更の詳細については、コンテンツ部分 のセクションをご覧ください。
コンテンツ部分
有害カテゴリ
HarmCategory
を変更し、SafetySetting
型にネストされないようにしました。SafetySetting.HarmCategory
と参照している場合は、HarmCategory
に置き換えることができます。
安全性に関するフィードバック
SafetyFeedback
型はどのレスポンスでも使用されていないため、削除しました。
引用メタデータ
CitationMetadata
の citationSources
プロパティの名前を citations
に変更しました。
課金対象文字の合計数
文字が送信されない状況を反映するため、CountTokensResponse
の totalBillableCharacters
プロパティを省略可能に変更しました。
候補者の回答
他のプラットフォームと一致するように、CandidateResponse
の名前を Candidate
に変更しました。
生成構成
GenerationConfig
のパブリック プロパティを internal
に変更しました。これらはすべて、イニシャライザで構成できます。
列挙型
enum
クラスと sealed
クラスを通常のクラスに置き換えました。この変更により、下位互換性のある方法で API をより柔軟に進化させることができます。
BlockThreshold
列挙型の名前を HarmBlockThreshold
に変更しました。
HarmBlockThreshold
、HarmProbability
、HarmSeverity
、BlockReason
、FinishReason
の各列挙型から値を削除しました。
Blob メソッド
名前に Blob
を含むすべてのメソッドの名前を変更し、代わりに InlineData
を使用するようにしました。
緊急情報の設定
method
フィールドを NULL 可能に変更しました。
Duration クラス
Kotlin の Duration
クラスの使用をすべて削除し、long
に置き換えました。この変更により、Java との相互運用性が向上します。
引用メタデータ
CitationMetadata
で以前に宣言されたすべてのフィールドを、Citation
という新しいクラスにラップしました。引用は、CitationMetadata
の citations
というリストにあります。この変更により、プラットフォーム間で型をより適切に調整できるようになります。
トークンをカウントする
totalBillableCharacters
フィールドを NULL 可能に変更しました。
課金対象文字の合計数
文字が送信されない状況を反映するため、CountTokensResponse
の totalBillableCharacters
プロパティを省略可能に変更しました。
モデルのインスタンス化
他のプラットフォームに合わせて、requestOptions
パラメータをパラメータリストの末尾に移動しました。
Live API
列挙型クラス ResponseModality
の UNSPECIFIED
値を削除しました。代わりに null
を使用します。
LiveGenerationConfig.setResponseModalities
の名前を LiveGenerationConfig.setResponseModality
に変更しました。
LiveContentResponse.Status
クラスを削除し、代わりにステータス フィールドを LiveContentResponse
のプロパティとしてネストしました。
LiveContentResponse
クラスを削除し、代わりにモデルからのレスポンスに一致する LiveServerMessage
のサブクラスを用意しました。
ListenableFuture<LiveSession>
ではなく ListenableFuture<LiveSessionFutures>
を返すように LiveModelFutures.connect
を変更しました。
列挙型
次の列挙型から値を削除しました。HarmCategory
、BlockThreshold
、HarmProbability
、HarmSeverity
、BlockReason
、FinishReason
。
ブロックの理由
PromptFeedback
の blockReason
を省略可能に変更しました。
Vertex AI Gemini API ではなく Gemini Developer API の使用を開始する場合にのみ 必要な変更:
緊急情報の設定
サポートされていない SafetySetting.method
の使用を削除しました。
インライン データ
サポートされていない InlineDataPart.videoMetadata
の使用を削除しました。
列挙型
HarmCategory
、HarmProbability
、BlockReason
、FinishReason
の列挙型から値を削除しました。
データ部分
他のプラットフォームに合わせて、DataPart
の名前を InlineDataPart
に、static
data
関数の名前を inlineData
に変更しました。
リクエスト オプション
timeout
が機能しないため、RequestOptions
を削除しました。近い将来に再び追加される予定ですが、他のプラットフォームに合わせて GenerativeModel
タイプに移動されます。
停止シーケンス
GenerationConfig
の stopSequences
パラメータを省略可能にし、デフォルトを空の配列ではなく null
に変更しました。
引用
CitationMetadata
の citationSources
プロパティの名前を citations
に変更しました。他のプラットフォームに合わせて、CitationSource
型の名前を Citation
に変更しました。
不要なパブリック タイプ、メソッド、プロパティ
意図せず公開されていた次のタイプ、メソッド、プロパティを削除しました。defaultTimeout
、CountTokensResponseFields
、parseCountTokensResponse
、parseEmbedContentResponse
、parseGenerateContentResponse
、parseContent
、BatchEmbedContentsResponse
、ContentEmbedding
、EmbedContentRequest
、EmbedContentResponse
。
トークンをカウントする
不要になった余分なフィールドを countTokens
関数から削除しました。contents
のみが必須です。
モデルのインスタンス化
他のプラットフォームに合わせて、systemInstruction
パラメータをパラメータ リストの末尾に移動しました。
埋め込み機能
サポートされていないエンベディング機能(embedContent
と batchEmbedContents
)をモデルから削除しました。
移行に関連する可能性のあるエラー
Firebase AI Logic の GA バージョンを使用するように移行する際、この移行ガイドに記載されている必要な変更をすべて完了していないと、エラーが発生することがあります。
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 が含まれている必要があります。 この API は、Firebase コンソールで必要な API を有効にした ときに、API キーの許可リストに自動的に追加されているはずです。
すべての API キーは、Google Cloud コンソールの [API とサービス ] > [認証情報 ] パネルで確認できます。
注: Firebase 関連の API は、Firebase プロジェクトまたはアプリの識別 にのみ API キーを使用します。API の呼び出しの認証 には使用しません(他の API で許可されている場合を除きます)。Firebase 関連の API の認証は、Google Cloud IAM 権限、Firebase Security Rules 、または Firebase App Check を使用して、API キーとは別に処理されます。詳しくは、Firebase API キー をご覧ください。
Firebase AI Logic の使用感に関するフィードバックを送信する