このページでは、サーバー プロンプト テンプレートのベスト プラクティスと考慮事項について説明します。これには、まだサポートされていない機能も含まれます。これらの機能の多くは、サーバー プロンプト テンプレートの進化に伴って利用可能になります。最新情報については、リリースノートをご覧ください。
ベスト プラクティス
これらのベスト プラクティスの多くは、テンプレートを管理するでも詳しく説明されています。
テンプレートをバージョニングする
セマンティック バージョニング(semver)を使用するバージョンを付加したテンプレート ID を作成します。
Firebase Remote Config を使用すると、リクエスト内のテンプレートやその他の値を簡単に変更できます。
テンプレートを保護する
変更を十分にテストしていない限り、本番環境で使用されているテンプレートを編集しないでください。
本番環境に移行する前にテンプレートをロックします。
テンプレートをロックすると、意図しない編集を防ぐことができますが、ロックしても編集を完全にブロックすることはできません。適切な権限を持つプロジェクト メンバーは、いつでもテンプレートのロックを解除して編集できます。
コード(特に本番環境コード)でアクティブに使用されているテンプレートをロックすることをおすすめします。
Gemini API の使用を保護する
入力変数に強力な入力検証を記述します。これにより、次のことが可能になります。
- プロンプト インジェクションからの保護に役立ちます。
- リクエストが成功し、レスポンスが想定どおりであることを確認するのに役立ちます。
Firebase プロジェクトにテンプレートのみモードを適用して、Firebase AI Logic を介したすべての Gemini API リクエストでサーバー プロンプト テンプレートを使用するようにします。
サーバー プロンプト テンプレートでまだサポートされていない機能
これらの機能の多くは、サーバー プロンプト テンプレートの進化に伴って利用可能になります。最新情報については、リリースノートをご覧ください。
テンプレートでまだサポートされていない Firebase AI Logic の機能
Firebase AI Logic の次の標準機能は、サーバー プロンプト テンプレートではまだサポートされていません。
- 双方向ストリーミング(Gemini Live API)
- ハイブリッド推論またはデバイス上の推論
- 出力を列挙型のリストに制限する
また、Firebase コンソールで AI モニタリングを使用している場合、テンプレート ID はまだレコードに入力されていません。
テンプレートでまだサポートされていない Dotprompt の一般的な要素
サーバー プロンプト テンプレートは、近日中に、Dotprompt の次の一般的な要素をサポートする予定です。
フロントマターの入力スキーマと出力スキーマに JSON スキーマ仕様を使用する。
- この仕様は、サーバー以外のテンプレート リクエストでもサポートされていません。現在、OpenAPI スキーマ仕様のみがサポートされています。
*を使用してワイルドカード フィールド定義を宣言する。@keyを使用するか、一般的にオブジェクト入力のフィールドを反復処理する(@keyが関連する場合)。@rootを使用すると、現在のthisに関係なく、ルート変数コンテキストを参照できます。
サーバー プロンプト テンプレートは、Dotprompt の次の一般的な要素をサポートしない可能性が高いです。
- パーシャルを使用する。パーシャルは、他のテンプレートに含めることができる再利用可能なテンプレート スニペットです。
その他の考慮事項
デフォルトでは、Firebase コンソールのガイド付き UI を使用すると、Firebase AI Logic でサポート対象の地域にテンプレートがプロビジョニングされます。Agent Platform Gemini API (formerly Vertex AI) を使用し、ユースケースでロケーションベースの制限が必要な場合は、REST API を使用してテンプレートのロケーションを指定できます。
Firebase コンソールのガイド付き UI を使用する代わりに、サーバー プロンプト テンプレートをファイルとして提供する場合は、REST API を使用できます。サーバー プロンプト テンプレートは、アプリコードで定義され、テンプレートに渡されるスキーマをサポートしていません。
テンプレートはサーバー上にありますが、Firebase プロジェクトの他のサーバーサイド リソース(データベースなど)と直接やり取りすることはできません。ただし、Cloud Storage for Firebase URL(入力変数として指定可能)は例外です。