テンプレートのベスト プラクティスと考慮事項


このページでは、サーバー プロンプト テンプレートのベスト プラクティスと考慮事項について説明します。これには、まだサポートされていない機能も含まれます。これらの機能の多くは、サーバー プロンプト テンプレートの進化に伴って利用可能になります。最新情報については、リリースノートをご覧ください。

ベスト プラクティス

これらのベスト プラクティスの多くは、テンプレートを管理するでも詳しく説明されています。

テンプレートをバージョニングする

テンプレートを保護する

  • 変更を十分にテストしていない限り、本番環境で使用されているテンプレートを編集しないでください。

  • 本番環境に移行する前にテンプレートをロックします。

    • テンプレートをロックすると、意図しない編集を防ぐことができますが、ロックしても編集を完全にブロックすることはできません。適切な権限を持つプロジェクト メンバーは、いつでもテンプレートのロックを解除して編集できます。

    • コード(特に本番環境コード)でアクティブに使用されているテンプレートをロックすることをおすすめします。

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(入力変数として指定可能)は例外です。