Gemini API を使用すると、複数のターンにわたる自由形式の会話を作成できます。Vertex AI in Firebase SDK は会話の状態を管理することでプロセスを簡素化するため、generateContentStream()
や generateContent()
とは異なり、会話履歴を自分で保存する必要はありません。
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、Genkit、または Firebase Extensions Gemini API を使用します。
始める前に
まだ行っていない場合は、スタートガイドを完了してください。Firebase プロジェクトの設定、アプリの Firebase への接続、SDK の追加、Vertex AI サービスの初期化、GenerativeModel
インスタンスの作成方法が記載されています。
チャット プロンプト リクエストを送信する
マルチターンの会話(チャットなど)を構築するには、まず startChat()
を呼び出してチャットを初期化します。次に、sendMessageStream()
(または sendMessage()
)を使用して新しいユーザー メッセージを送信します。これにより、メッセージとレスポンスがチャット履歴に追加されます。
会話内のコンテンツに関連付けられた role
には、次の 2 つのオプションがあります。
user
: プロンプトを提供するロール。この値はsendMessageStream()
(またはsendMessage()
)の呼び出しのデフォルト値です。別のロールが渡された場合、関数は例外をスローします。model
: レスポンスを提供するロール。このロールは、既存のhistory
でstartChat()
を呼び出す場合に使用できます。
レスポンスをストリーミングする(sendMessageStream
)か、結果全体が生成されるまでレスポンスを待機する(sendMessage
)かを選択します。
モデル生成の結果全体を待たずに、ストリーミングを使用して部分的な結果を処理することで、インタラクションを高速化できます。
この例は、startChat()
と sendMessageStream()
を使用してモデルからレスポンスをストリーミングする方法を示しています。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To stream generated text output, call sendMessageStream and pass in the message
let contentStream = try chat.sendMessageStream("How many paws are in my house?")
for try await chunk in contentStream {
if let text = chunk.text {
print(text)
}
}
または、ストリーミングではなく結果全体が返されるのを待つこともできます。結果は、モデルが生成プロセス全体を完了した後にのみ返されます。
次の例は、startChat()
と sendMessage()
を使用して新しいユーザー メッセージを送信する方法を示しています。
import FirebaseVertexAI
// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()
// Create a `GenerativeModel` instance with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")
// Optionally specify existing chat history
let history = [
ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]
// Initialize the chat with optional chat history
let chat = model.startChat(history: history)
// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")
ユースケースとアプリに適したモデルと、必要に応じてロケーションを選択する方法を学びます。
Google アシスタントの機能
- 長いプロンプトをモデルに送信する前に、トークンをカウントする方法を学びます。
- Cloud Storage for Firebase を設定して、マルチモーダル リクエストに大きなファイルを含め、プロンプトでファイルを提供するより管理されたソリューションを利用できるようにします。ファイルには、画像、PDF、動画、音声を含めることができます。
- 本番環境の準備を検討します。たとえば、不正なクライアントによる Gemini API の不正使用を防ぐために Firebase App Check を設定するなどです。また、本番環境チェックリストも必ずご確認ください。
その他の機能を試す
- テキストのみのプロンプトからテキストを生成する。
- マルチモーダル プロンプト(テキスト、画像、PDF、動画、音声など)からテキストを生成します。
- テキストとマルチモーダル プロンプトの両方から構造化出力(JSON など)を生成します。
- テキスト プロンプトから画像を生成します。
- 関数呼び出しを使用して、生成モデルを外部システムと情報に接続します。
コンテンツ生成を制御する方法
- プロンプト設計を理解する。ベスト プラクティス、戦略、プロンプトの例などをご覧ください。
- 温度や最大出力トークン(Gemini の場合)やアスペクト比と人物生成(Imagen の場合)など、モデル パラメータを構成します。
- 安全性設定を使用すると、有害と見なされる可能性のある回答が生成される可能性を調整できます。
サポートされているモデルの詳細
さまざまなユースケースで利用可能なモデルと、その割り当てと料金について学びます。Vertex AI in Firebase の使用感に関するフィードバックを送信する