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


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

ベスト プラクティス

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

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

テンプレートを保護する

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

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

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

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

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使用可能なすべてのリージョンにテンプレートがプロビジョニングされます。Vertex AI Gemini API を使用していて、ユースケースでロケーション ベースの制限が必要な場合は、REST API を使用してテンプレートのロケーションを指定できます。

  • サーバー プロンプト テンプレートをファイルとして提供するFirebase コンソールのガイド付き UI を使用するのではなく)場合は、REST API を使用できます。サーバー プロンプト テンプレートは、アプリコードで定義され、テンプレートに渡されるスキーマをサポートしていません。

  • テンプレートはサーバー上にありますが、Cloud Storage for Firebase URL(入力変数として指定可能)を除き、Firebase プロジェクトの他のサーバーサイド リソース(データベースなど)と直接やり取りすることはできません。