Closed4
Vertex AI for Firebase(Gemini API)の諸々

- firebase_vertexai | Flutter packageはじめFirebase版はML KitとVertex AIをクライアントからダイレクトに利用できるようにしたもの(Preview版)
- 利用にはGoogle Cloud ConsoleでのFirebase ML API, Vertex AI APIの有効化が必須
- Geminiを利用する際に嬉しいポイントが、Vertex AIでラッピングされているのでGemini API Keyをクライアントに記載する必要がなくキーの管理が不要な点
- 会社でGoogle Cloud費用を支払っていたりすると、Gemini API Keyを別で支払う必要なくVertex AIでまとめて計上されるので会計的にもラク
- API Keyが不要ということはFirebase SDKでGemini APIを利用できるということなので、App Checkの有効化は必須
- ref. Implement Firebase App Check to protect the Gemini API from unauthorized clients
- Firebaseの設定ファイルは公開前提の設計のため、有効化していなかった場合はスクリプト経由などでバンバンGemini API使われてしまうことも可能
- 構造的にはFirebase MLサーバーにまずリクエストが投げられ、プロキシゲートウェイとしてApp Checkが機能し、パスしたらGemini APIにルーティングする構造(Gemini API自体にApp Checkの機能はない)

使い方もシンプルで簡単に利用できる。デフォルトリージョンはus-central
になっておりリソース見つからないエラーになったりするので、東京リージョンなどは指定が必要。
// Firebaseパッケージで使ういつもの初期化
await Firebase.initializeApp();
// Vertex AI部分はミニマムこれだけ
final model = FirebaseVertexAI.instance.generativeModel(model: 'gemini-1.5-flash');
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await model.generateContent(prompt);
print(response.text);
例)Tokyo, Japan (asia-northeast1
)で使用したい場合
ref. https://firebase.google.com/docs/vertex-ai/locations?platform=flutter#available-locations
final vertexAI = await FirebaseVertexAI.instanceFor(location: 'asia-northeast1');
final model = vertexAI.generativeModel(model: 'MODEL_NAME');

Gemini APIの利用の前にはVertex AI Studioで色々先に試してみるのが基本的な使い方。GUIでシステムインストラクションやパラメータを調整しながら検証を繰り返し、良い塩梅の結果が得られたらそのプロンプト実装に移すのが最もラク。

GeminiはJSON outputがConfigで指定できるのが良い点
Generate JSON output with the Gemini API | Google AI for Developers
model = genai.GenerativeModel('gemini-1.5-flash',
# Set the `response_mime_type` to output JSON
generation_config={"response_mime_type": "application/json"})
このスクラップは2024/09/09にクローズされました