マルチモーダル リクエストにサイズの大きいファイルを含め、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 を使用する理由

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: ファイルをバケットにアップロードする

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

  • 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: ストレージ参照を使用して MIME タイプと URL を追加する

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

オプション 2: MIME タイプと URL を明示的に指定する

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