Vertex AI in Firebase SDK を使用してアプリから Gemini API を呼び出すときに、マルチモーダル入力に基づいてテキストを生成するように Gemini モデルにプロンプトを出すことができます。マルチモーダル プロンプトには、テキスト、画像、PDF、テキスト ファイル、動画、音声など、複数のモダリティ(または入力タイプ)を含めることができます。
各マルチモーダル リクエストで、必ず次の情報を指定する必要があります。
ファイルの
mimeType
。各入力ファイルでサポートされている MIME タイプについて確認する。ファイル。ファイルは、(このページに示すように)インライン データとして指定することも、URL または URI を使用して指定することもできます。
マルチモーダル プロンプトのテストと反復処理には、Vertex AI Studio を使用することをおすすめします。
Gemini API を操作するためのその他のオプション
必要に応じて、Gemini API
の代替の「Google AI」バージョンをテストします。Google AI Studio と Google AI クライアント SDK を使用して、(制限内で、利用可能な場合)無料アクセスを取得します。これらの SDK は、モバイルアプリとウェブアプリのプロトタイピングのみに使用してください。Gemini API の仕組みに慣れたら、Vertex AI in Firebase SDK に移行(このドキュメント)します。Vertex AI in Firebase SDK には、Firebase App Check を使用した API の不正使用からの保護や、リクエスト内の大規模なメディア ファイルのサポートなど、モバイルアプリとウェブアプリに重要な多くの追加機能が含まれています。
必要に応じて、Vertex AI Gemini API サーバーサイドを呼び出す(Python、Node.js、Go など)
サーバーサイド Vertex AI SDK、Firebase Genkit、または Firebase Extensions を使用して Gemini API を呼び出す。
始める前に
Vertex AI in Firebase SDK のスタートガイドをまだ完了していない場合は、必ず完了してください。以下の手順をすべて完了していることを確認します。
Blaze お支払いプランの使用や必要な API の有効化など、新規または既存の Firebase プロジェクトを設定します。
アプリを Firebase に接続して、アプリの登録や Firebase 構成のアプリへの追加などを行います。
SDK を追加し、アプリで Vertex AI サービスと生成モデルを初期化します。
アプリを Firebase に接続し、SDK を追加して、Vertex AI サービスと生成モデルを初期化したら、Gemini API を呼び出す準備が整います。
テキストと 1 つの画像からテキストを生成する テキストと複数の画像からテキストを生成する テキストと動画からテキストを生成する
サンプル メディア ファイル
メディア ファイルがない場合は、次の一般公開ファイルを使用できます。これらのファイルは Firebase プロジェクトにないバケットに保存されているため、URL には https://storage.googleapis.com/BUCKET_NAME/PATH/TO/FILE
形式を使用する必要があります。
画像:
https://storage.googleapis.com/cloud-samples-data/generative-ai/image/scones.jpg
(MIME タイプはimage/jpeg
)。この画像を表示またはダウンロードするPDF: MIME タイプが
application/pdf
のhttps://storage.googleapis.com/cloud-samples-data/generative-ai/pdf/2403.05530.pdf
。こちらの PDF を表示またはダウンロードする。動画:
https://storage.googleapis.com/cloud-samples-data/video/animals.mp4
(MIME タイプはvideo/mp4
)。こちらの動画を視聴またはダウンロードする。音声:
https://storage.googleapis.com/cloud-samples-data/generative-ai/audio/pixel.mp3
(MIME タイプはaudio/mp3
)。この音声を聴くまたはダウンロードする。
テキストと 1 つの画像からテキストを生成する
このサンプルを試す前に、このガイドの始める前にのセクションを完了してください。
Gemini API は、テキストと単一のファイル(この例の画像など)の両方を含むマルチモーダル プロンプトで呼び出すことができます。これらの呼び出しでは、プロンプトでメディアをサポートするモデル(Gemini 2.0 Flash など)を使用する必要があります。
入力ファイルの要件と推奨事項を確認してください。
レスポンスをストリーミングするか(generateContentStream
)、結果全体が生成されるまでレスポンスを待つか(generateContent
)を選択します。
モデル生成の結果全体を待たずに、ストリーミングを使用して部分的な結果を処理することで、インタラクションを高速化できます。
この例では、generateContentStream()
を使用して、テキストと 1 つの画像を含むマルチモーダル プロンプト リクエストから生成されたテキストをストリーミングする方法を示します。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
または、ストリーミングではなく結果全体が返されるのを待つこともできます。結果は、モデルが生成プロセス全体を完了した後にのみ返されます。
この例では、generateContent()
を使用して、テキストと 1 つの画像を含むマルチモーダル プロンプト リクエストからテキストを生成する方法を示します。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image = UIImage(systemName: "bicycle") else { fatalError() }
// Provide a text prompt to include with the image
let prompt = "What's in this picture?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")
ユースケースとアプリに適したモデルと、必要に応じてロケーションを選択する方法を学びます。
テキストと複数の画像からテキストを生成する
このサンプルを試す前に、このガイドの始める前にのセクションを完了してください。
Gemini API は、テキストと複数のファイル(この例の画像など)の両方を含むマルチモーダル プロンプトで呼び出すことができます。これらの呼び出しでは、プロンプトでメディアをサポートするモデル(Gemini 2.0 Flash など)を使用する必要があります。
入力ファイルの要件と推奨事項を確認してください。
レスポンスをストリーミングするか(generateContentStream
)、結果全体が生成されるまでレスポンスを待つか(generateContent
)を選択します。
モデル生成の結果全体を待たずに、ストリーミングを使用して部分的な結果を処理することで、インタラクションを高速化できます。
この例では、generateContentStream()
を使用して、テキストと複数の画像を含むマルチモーダル プロンプト リクエストから生成されたテキストをストリーミングする方法を示します。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
ストリーミングする代わりに、結果全体が返されるまで待つこともできます。結果は、モデルが生成プロセス全体を完了した後にのみ返されます。
この例では、generateContent()
を使用して、テキストと複数の画像を含むマルチモーダル プロンプト リクエストからテキストを生成する方法を示します。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }
// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"
// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")
ユースケースとアプリに適したモデルと、必要に応じてロケーションを選択する方法を学びます。
テキストと動画からテキストを生成する
このサンプルを試す前に、このガイドの始める前にのセクションを完了してください。
Gemini API は、テキスト ファイルと動画ファイルの両方を含むマルチモーダル プロンプトを使用して呼び出すことができます(この例を参照)。これらの呼び出しでは、プロンプトでメディアをサポートするモデル(Gemini 2.0 Flash など)を使用する必要があります。
入力ファイルの要件と推奨事項を確認してください。
レスポンスをストリーミングするか(generateContentStream
)、結果全体が生成されるまでレスポンスを待つか(generateContent
)を選択します。
モデル生成の結果全体を待たずに、ストリーミングを使用して部分的な結果を処理することで、インタラクションを高速化できます。
この例では、generateContentStream()
を使用して、テキストと 1 つの動画を含むマルチモーダル プロンプト リクエストから生成されたテキストをストリーミングする方法を示します。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
または、ストリーミングではなく結果全体が返されるのを待つこともできます。結果は、モデルが生成プロセス全体を完了した後にのみ返されます。
この例では、generateContent()
を使用して、テキストと 1 つの動画を含むマルチモーダル プロンプト リクエストからテキストを生成する方法を示します。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")
// Provide a text prompt to include with the video
let prompt = "What is in the video?"
// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")
ユースケースとアプリに適したモデルと、必要に応じてロケーションを選択する方法を学びます。
入力ファイルの要件と推奨事項
以下については、サポートされている入力ファイルと Vertex AI Gemini API の要件をご覧ください。
- リクエストでファイルを提供するさまざまな方法
- サポートされているファイル形式
- サポートされている MIME タイプとその指定方法
- ファイルとマルチモーダル リクエストの要件とベスト プラクティス
Google アシスタントの機能
- 長いプロンプトをモデルに送信する前に、トークンをカウントする方法を学びます。
- Cloud Storage for Firebase を設定して、マルチモーダル リクエストに大きなファイルを含め、プロンプトでファイルを提供するより管理されたソリューションを利用できるようにします。ファイルには、画像、PDF、動画、音声を含めることができます。
- 不正なクライアントによる Gemini API の不正使用から保護するために Firebase App Check を設定するなど、本番環境の準備を検討します。また、本番環境チェックリストも必ずご確認ください。
Gemini API のその他の機能を試す
- マルチターンの会話(チャット)を構築します。
- テキストのみのプロンプトからテキストを生成する。
- テキストとマルチモーダル プロンプトの両方から構造化出力(JSON など)を生成します。
- 関数呼び出しを使用して、生成モデルを外部システムと情報に接続します。
コンテンツ生成を制御する方法
- プロンプト設計を理解する。ベスト プラクティス、戦略、プロンプトの例などをご覧ください。
- 温度や最大出力トークン(Gemini の場合)やアスペクト比と人物生成(Imagen の場合)など、モデル パラメータを構成します。
- 安全性設定を使用すると、有害と見なされる可能性のある回答が生成される可能性を調整できます。
サポートされているモデルの詳細
さまざまなユースケースで利用可能なモデルと、その割り当てと料金について学びます。Vertex AI in Firebase の使用感に関するフィードバックを送信する