マルチモーダル リクエストにサイズの大きいファイルを含め、Cloud Storage for Firebase を使用してファイルを管理する

Vertex AI for Firebase SDK を使用してアプリから Gemini API を呼び出す場合、マルチモーダル入力に基づいてテキストを生成するように Gemini モデルに指示できます。マルチモーダル プロンプトには、テキスト、画像、PDF、動画、音声など、複数のモダリティ(または入力の種類)を含めることができます。

入力のテキスト以外の部分(メディア ファイルなど)については、必要に応じて Cloud Storage for Firebase を使用してリクエストにファイルを含めることができます。この機能について知っておくべきことの概要は次のとおりです。

  • Cloud Storage for Firebase は、任意のマルチモーダル リクエスト(テキスト生成とチャットなど)で使用できます。このガイドのは、基本的なテキストと画像の入力を示しています。

  • リクエスト入力では、ファイルの MIME タイプと Cloud Storage for Firebase の URL(常に gs:// で始まります)を指定します。これらの値は、Cloud Storage バケットにアップロードされたファイルに自動的に割り当てられるメタデータです。

  • サポートされているファイル形式と URL を使用する必要があります。


このソリューション ガイドでは、Google Cloud で Cloud Storage for Firebase を設定し、アプリから Cloud Storage for Firebase バケットにファイルをアップロードして、Gemini API へのマルチモーダル リクエストにファイルの MIME タイプと Cloud Storage for Firebase URL を含める方法について説明します。

コード例を確認しますか?または、すでに Cloud Storage for Firebase が設定されていて、マルチモーダル リクエストでそれを使用する準備ができているかどうか。

コードサンプルに移動

アプリで Cloud Storage for Firebase を使用する理由

Cloud Storage for Firebase は、Google Cloud Storage と同じ高速かつ安全でスケーラブルなインフラストラクチャを使用して blob とファイルを保存します。また、そのクライアント SDK はモバイルアプリとウェブアプリ専用に構築されています。

Vertex AI for Firebase SDK の場合、リクエストの最大サイズは 20 MB です。リクエストが大きすぎると、HTTP 413 エラーが発生します。ファイルサイズが原因でリクエストの合計サイズが 20 MB を超える場合は、Cloud Storage for Firebase の URL を使用して、そのファイルをマルチモーダル リクエストに含めます。ただし、ファイルが小さい場合は、インライン データとして直接渡すこともよくあります(ただし、インライン データとして提供されるファイルは転送時に base64 にエンコードされるため、リクエストのサイズが増加します)。

Cloud Storage for Firebase を使用すると、さらに次のようなメリットがあります。

  • エンドユーザーがアプリから Cloud Storage for Firebase バケットに画像を直接アップロードできるようにします。その後、ファイルの MIME タイプと Cloud Storage for Firebase URL(ファイルの識別子)を指定するだけで、それらの画像をマルチモーダル プロンプトに含めることができます。

  • エンドユーザーが画像を提供する必要がある場合、特にネットワーク品質が悪い場合や不安定な場合、エンドユーザーの時間と帯域幅を節約できます。

    • ファイルのアップロードまたはダウンロードが中断された場合、Cloud Storage for Firebase SDK は中断したところからオペレーションを自動的に再開します。
    • エンドユーザーは、アプリで必要になるたびに(新しいマルチモーダル リクエストなど)、同じファイルをアップロードしなくても、アップロードした同じファイルを複数回使用できます。
  • Firebase セキュリティ ルールを使用して、Cloud Storage for Firebase に保存されているファイルへのエンドユーザーのアクセスを制限できます。これにより、承認されたユーザーのみにファイルのアップロード、ダウンロード、削除が許可されます。

  • バケット内のファイルには Firebase または Google Cloud からアクセスでき、Google Cloud Storage API を使用して、画像のフィルタリングや動画のコード変換などのサーバー側の処理を柔軟に行うことができます。

サポートされるファイルや URL の種類

Vertex AI for Firebase SDK で Cloud Storage for Firebase URL を使用する場合のファイルと URL の要件は次のとおりです。

  • ファイルは、Vertex AI for Firebase SDK を使用する場合、マルチモーダル リクエストの入力ファイルの要件を満たしている必要があります。これには、MIME タイプやファイルサイズなどの要件が含まれます。

  • ファイルは Cloud Storage for Firebase バケットに保存されている必要があります(つまり、そのバケットは Firebase セキュリティ ルールなどの Firebase サービスからアクセスできます)。バケットが Firebase コンソールで表示できる場合、そのバケットは Cloud Storage for Firebase バケットです。

  • Cloud Storage for Firebase バケットは、アプリを登録したのと同じ Firebase プロジェクトに存在する必要があります。

  • ファイルの Cloud Storage for Firebase URL は gs:// で始める必要があります。これにより、Google Cloud Storage のすべての URL が作成されます。

  • ファイルの URL を「ブラウザ」URL(インターネット上にある画像の URL など)にすることはできません。

また、バケットの Firebase セキュリティ ルールでファイルへの適切なアクセスを許可する必要があります。次に例を示します。

  • 公開ルールがある場合、任意のユーザーまたはクライアントがファイルにアクセスし、Vertex AI for Firebase SDK を使用して呼び出しでその URL を指定できます。このタイプのルールは、開始時と初期のプロトタイピング時にのみ使用してください(ただし、ファイルが実際に完全に一般公開されている場合を除きます)。

  • 堅牢なルールが設定されている場合(強く推奨)、Firebase は、ログインしたユーザーまたはクライアントがファイルへの十分なアクセス権を持っていることを確認してから、指定された URL での呼び出しを許可します。

Vertex AI for Firebase で Cloud Storage for Firebase URL を使用する

ステップ 1: Cloud Storage for Firebase を設定する

大まかな作業は次のとおりです。

  1. Firebase プロジェクトに Cloud Storage for Firebase バケットを作成します。

  2. このバケットに Firebase セキュリティ ルールを適用します。Firebase セキュリティ ルールを使用すると、承認されたエンドユーザーにアクセスを制限することでファイルを保護できます。

  3. Cloud Storage for Firebase のクライアント ライブラリをアプリに追加します。

    このタスクはスキップできますが、スキップする場合は、常に MIME タイプと Cloud Storage for Firebase の URL 値をマルチモーダル リクエストに明示的に含める必要があります。

ステップ 2: ファイルをバケットにアップロードする

ファイルをバケットにアップロードすると、Cloud Storage は次の 2 つの情報を自動的にファイルに適用します。これらの値は、マルチモーダル リクエストに含める必要があります(このガイドの次のステップで説明します)。

  • MIME タイプ: ファイルのメディアタイプ(例: image/png)です。Cloud Storage for Firebase は、アップロード時に MIME タイプを自動的に検出し、そのメタデータをバケット内のオブジェクトに適用します。ただし、必要に応じてアップロード時に MIME タイプを指定できます。

  • Cloud Storage for Firebase URL: ファイルの一意の識別子です。URL の先頭は gs:// にする必要があります。

ステップ 3: マルチモーダル リクエストにファイルの MIME タイプと URL を含める

Cloud Storage for Firebase バケットにファイルを保存したら、その MIME タイプと Cloud Storage for Firebase URL をマルチモーダル リクエストに追加できます。以下の例は非ストリーミング generateContent リクエストを示していますが、ストリーミングとチャットでも Cloud Storage for Firebase URL を使用できます。

リクエストにファイルを含めるには、次のいずれかのオプションを使用します。

方法 1: Storage 参照を使用して MIME タイプと URL を含める

このオプションは、ファイルをバケットにアップロードしたばかりで、すぐに(Storage 参照を介して)マルチモーダル リクエストにファイルを含める場合に使用します。この呼び出しには、MIME タイプと Cloud Storage for Firebase URL の両方が必要です。

方法 2: MIME タイプと URL を明示的に指定する

このオプションは、MIME タイプと Cloud Storage for Firebase URL の値がわかっていて、それらを明示的にマルチモーダル リクエストに含める場合に使用します。呼び出しには MIME タイプと URL の両方が必要です。