Vertex AI in Firebase SDK を使用してアプリから Gemini API を呼び出すと、マルチモーダル入力に基づいてテキストを生成するように Gemini モデルにプロンプトを出すことができます。マルチモーダル プロンプトには、テキスト、画像、PDF、テキスト ファイル、動画、音声など、複数のモダリティ(または入力タイプ)を含めることができます。
各マルチモーダル リクエストで、必ず次の情報を指定する必要があります。
ファイルの
mimeType
。各入力ファイルでサポートされている MIME タイプについて確認する。ファイル。ファイルは、(このページに示すように)インライン データとして指定することも、URL または URI を使用して指定することもできます。
マルチモーダル プロンプトのテストと反復処理には、Vertex AI Studio を使用することをおすすめします。
始める前に
Vertex AI in Firebase SDK のスタートガイドの手順をまだ完了していない場合は、完了してください。以下の手順をすべて完了していることを確認します。
Blaze お支払いプランの使用や必要な API の有効化など、新規または既存の Firebase プロジェクトを設定します。
アプリを Firebase に接続して、アプリの登録や Firebase 構成のアプリへの追加などを行います。
SDK を追加し、アプリで Vertex AI サービスと生成モデルを初期化します。
アプリを Firebase に接続し、SDK を追加して、Vertex AI サービスと生成モデルを初期化したら、Gemini API を呼び出す準備が整います。
テキストと 1 つの画像からテキストを生成する テキストと複数の画像からテキストを生成する テキストと動画からテキストを生成する
サンプル メディア ファイル
メディア ファイルがない場合は、次の一般公開ファイルを使用できます。
画像:
gs://cloud-samples-data/generative-ai/image/scones.jpg
(MIME タイプはimage/jpeg
)。
この画像を表示またはダウンロードする。PDF: MIME タイプが
application/pdf
のgs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf
。
こちらの PDF を表示またはダウンロードする。動画:
gs://cloud-samples-data/video/animals.mp4
(MIME タイプはvideo/mp4
)。
こちらの動画を視聴またはダウンロードする。音声:
gs://cloud-samples-data/generative-ai/audio/pixel.mp3
(MIME タイプはaudio/mp3
)。
この音声を聴く、またはダウンロードする。
テキストと 1 つの画像からテキストを生成する
このサンプルを試す前に、このガイドの始める前にのセクションを完了してください。
Gemini API は、テキストと単一のファイル(この例の画像など)の両方を含むマルチモーダル プロンプトで呼び出すことができます。これらの呼び出しでは、プロンプトでメディアをサポートするモデル(Gemini 1.5 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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 モデルと、必要に応じてロケーションを選択する方法を学びます。
テキストと複数の画像からテキストを生成する
このサンプルを試す前に、このガイドの始める前にのセクションを完了してください。
Gemini API は、テキストと複数のファイル(この例の画像など)の両方を含むマルチモーダル プロンプトで呼び出すことができます。これらの呼び出しでは、プロンプトでメディアをサポートするモデル(Gemini 1.5 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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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 モデルと、必要に応じてロケーションを選択する方法を学びます。
テキストと動画からテキストを生成する
このサンプルを試す前に、このガイドの始める前にのセクションを完了してください。
Gemini API は、テキスト ファイルと動画ファイルの両方を含むマルチモーダル プロンプトを使用して呼び出すことができます(この例を参照)。これらの呼び出しでは、プロンプトのメディアをサポートするモデル(Gemini 1.5 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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-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.")
ユースケースとアプリに適した Gemini モデルと、必要に応じてロケーションを選択する方法を学びます。
入力ファイルの要件と推奨事項
以下については、サポートされている入力ファイルと Vertex AI Gemini API の要件をご覧ください。
- リクエストでファイルを提供するさまざまな方法
- サポートされているファイル形式
- サポートされている MIME タイプとその指定方法
- ファイルとマルチモーダル リクエストの要件とベスト プラクティス
Google アシスタントの機能
- 長いプロンプトをモデルに送信する前に、トークンをカウントする方法を学びます。
- Cloud Storage for Firebase を設定して、マルチモーダル リクエストに大きなファイルを含め、プロンプトでファイルを提供するより管理されたソリューションを利用できるようにします。ファイルには、画像、PDF、動画、音声を含めることができます。
- 本番環境の準備を開始します。たとえば、Firebase App Check を設定して、Gemini API を不正なクライアントによる不正使用から保護します。
Gemini API の他の機能を試す
- マルチターンの会話(チャット)を構築します。
- テキストのみのプロンプトからテキストを生成する。
- テキストとマルチモーダル プロンプトの両方から構造化出力(JSON など)を生成します。
- 関数呼び出しを使用して、生成モデルを外部システムと情報に接続します。
コンテンツ生成を制御する方法
- プロンプト設計を理解する。ベスト プラクティス、戦略、プロンプトの例などをご覧ください。
- 温度や最大出力トークンなどのモデル パラメータを構成する。
- 安全性設定を使用すると、有害と見なされる可能性のある回答が生成される可能性を調整できます。
Gemini モデルの詳細
さまざまなユースケースで利用可能なモデルと、その割り当てと料金について学びます。Vertex AI in Firebase の使用感に関するフィードバックを送信する