Firebase AI Logic の場合、Firebase コンソールには、テンプレートの内容を指定するためのガイド付き UI が用意されています 。
サーバー プロンプト テンプレートでは、Dotprompt ベースの構文と形式が使用されます。このページでは、 テンプレートの形式と構文の詳細な説明と、 Gemini と Imagen の両方の例を確認できます。
Gemini モデルへのリクエスト例の最も重要なコンポーネントは次のとおりです。
---
model: 'gemini-3-flash-preview'
---
{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.
{{role "user"}}
Create an example customer invoice for a customer named {{customerName}}.
3 つのダッシュ記号で囲まれた上部のセクションには、モデル名と、リクエストで送信するモデル構成、入力検証、スキーマ(省略可)が含まれます。これは Key-Value ペアとして記述され、一般に YAML フロントマターと呼ばれます。
テンプレートの本文にはプロンプトが含まれます。また、 システム指示と入力値( Handlebars 構文を使用)を含めることもできます。
このページでは、テンプレートの形式と構文の詳細な説明と、次の例を示します。
Imagen (非推奨)
Gemini
このセクションのすべての例では
gemini-3-flash-preview を使用するテンプレートを示していますが、Gemini モデル(Gemini Live モデルを除く)でサポートされている
Firebase AI Logic を使用できます。
Hello world
サーバー プロンプト テンプレートの最小限の例を次に示します。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
---
プロンプトと(該当する場合は)システム指示
Write a story about a magic backpack.
レスポンスの生成を制御する
ユースケースと必要な制御レベルに応じて、さまざまな方法でレスポンスの生成を制御できます。
モデルの構成
モデル構成を設定して、 モデルがレスポンスを生成する方法( 最大出力トークン、Temperature、Top-K、Top-P など)を制御します。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
config:
candidateCount: 1
temperature: 0.9
topP: 0.1
topK: 16
maxOutputTokens: 200
stopSequences: ["red"]
---
プロンプトと(該当する場合は)システム指示
Write a story about a magic backpack.
思考モードの構成
思考をサポートするモデルの思考関連の構成 を指定します。
構成(フロントマター)
Gemini 3 以降のモデル(思考レベル)
--- model: 'gemini-3-flash-preview' config: thinkingConfig: thinkingLevel: medium includeThoughts: true ---Gemini 2.5 モデル(思考予算)
--- model: 'gemini-3-flash-preview' config: thinkingConfig: thinkingBudget: 1024 includeThoughts: true ---
プロンプトと(該当する場合は)システム指示
Solve x^2 + 4x + 4 = 0
安全性設定
安全性設定を使用して、有害とみなされる可能性のあるレスポンスを取得する可能性を調整します。
構成(フロントマター)
安全性設定が 1 つの例:
---
model: 'gemini-3-flash-preview'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
---
安全性設定が複数の例:
---
model: 'gemini-3-flash-preview'
config:
safetySettings:
- category: HARM_CATEGORY_HARASSMENT
threshold: BLOCK_ONLY_HIGH
- category: HARM_CATEGORY_HATE_SPEECH
threshold: BLOCK_MEDIUM_AND_ABOVE
---
プロンプトと(該当する場合は)システム指示
Write a story about a magic backpack.
システム指示
システム指示を設定して、モデルの 動作を制御します。プロンプトの一部として含めます。
{{role "system"}}構文を使用してシステム指示を指定します。{{role "user"}}構文を使用してテキスト プロンプトを指定します。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
---
プロンプトと(該当する場合は)システム指示
{{role "system"}}
All output must be a clearly structured invoice document.
Use a tabular or clearly delineated list format for line items.
{{role "user"}}
Create an example customer invoice for a customer.
入力変数
プロンプトは静的なものもありますが、プロンプトの一部としてユーザーからのデータを含める必要がある場合もあります。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
---
プロンプトと(該当する場合は)システム指示
Create an example customer invoice for a customer named {{customerName}}.
テンプレートでデフォルト値を 指定できますが、通常、入力変数の値はリクエストの一部としてクライアントから 提供されます。
制御フロー(ループと条件)
より複雑なプロンプトを作成するには、条件ブロック(#if、else、#unless など)と反復(#each)を使用します。
特別な @ 接頭辞が付いた変数として、追加のコンテキスト情報を提供できます。
@first:#eachブロックの最初のアイテムを反復処理する場合は true。@last:#eachブロックの最後のアイテムを反復処理する場合は true。@index: 現在の要素のインデックス位置(0 ベース)を示します。
組み込みの論理ヘルパーの詳細については、 Handlebars のドキュメント をご覧ください。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
---
プロンプトと(該当する場合は)システム指示
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
条件では、変数参照のみを受け入れ、任意の種類の式は受け入れません。例:
- 次のコードは機能します:
{{#if isVipCustomer}} ... {{/if}} - 次のコードは機能しません。 ない:
{{#if customer.type == 'vip'}} ... {{/if}}
変数がブール値の場合、条件は想定どおりに機能します。 変数がブール値でない場合、条件は事実上「null ではない」チェックになります。 これは、省略可能な入力を処理する場合に便利です。例:
{{#if customerName}}
Hello {{customerName}}
{{else}}
Hello Guest
{{/if}}
入力検証とスキーマ
クライアントからデータが送信される場合は、入力スキーマを使用してプロンプト インジェクションを防ぎ、リクエストで渡されたデータが想定どおりであることを確認することを強くおすすめします。
クライアントが値を指定しない場合に備えて、デフォルト値を指定できます。
スキーマは、スカラー型
string、integer、number、boolean、objectをサポートしています。オブジェクト、配列、列挙型は、フィールド名の後に括弧で囲んで記述します。?で省略可能として指定しない限り、すべてのプロパティは必須とみなされます。プロパティが省略可能としてマークされている場合、そのプロパティは null 値許容型にもなるため、LLM はフィールドを省略するかわりに null を返すことも可能になります。
入力スキーマを指定する基本的な例 を次に示します。より高度なスキーマは、すぐ下にあります。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
input:
default:
isVipCustomer: false
schema:
customerName: string, the customers name # string, number, and boolean types are defined like this
productNames?(array, list of products to include in the invoice): string # optional fields are marked with a ?
isVipCustomer?: boolean, whether or not the customer is a VIP
---
プロンプトと(該当する場合は)システム指示
Create an example customer invoice for a customer named {{customerName}}.
Include entries for each of the following products
{{#each productNames}}
{{#if @first}}
Include line items for the following purchases
{{/if}}
- {{this}}
{{/each}}
{{#if isVipCustomer}}
Give the customer a 5% discount.
{{/if}}
出力スキーマ
モデルに
構造化された JSON 出力を生成させる場合は、
出力スキーマを指定できます。format: json を指定すると、モデルは常に指定されたスキーマに従った JSON レスポンスを返すようになります。
スキーマは、スカラー型
string、integer、number、boolean、objectをサポートしています。オブジェクト、配列、列挙型は、フィールド名の後に括弧で囲んで記述します。?で省略可能として指定しない限り、すべてのプロパティは必須とみなされます。プロパティが省略可能としてマークされている場合、そのプロパティは null 値許容型にもなるため、LLM はフィールドを省略するかわりに null を返すことも可能になります。
構造化された JSON 出力を生成する基本的な例 を次に示します。より高度なスキーマは、すぐ下にあります。
構成(フロントマター)
---
model: gemini-3-flash-preview
output:
format: json
schema:
invoiceId: string
invoiceFile(object, an invoice file):
url?: string
contents: string
mimeType: string
---
プロンプトと(該当する場合は)システム指示
Create an example customer invoice.
マルチモーダル入力
Gemini モデルに送信されるマルチモーダル プロンプトには、 ファイル (画像、PDF、プレーン テキスト ファイル、音声、動画を含むテキストなど)を含む複数の種類の入力を含めることができます。
{{media url}}構文を使用して、URL でファイルを提供します。{{media type="mime_type" data="contents"}}構文を使用して、インライン ファイルを提供します。
基本的な例(マルチモーダル入力)
マルチモーダル入力を行う基本的な例 を次に示します。より複雑な例は、すぐ下にあります。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
---
プロンプトと(該当する場合は)システム指示
Describe this image
{{media type="mimeType" data="imageData"}}
複雑な例(マルチモーダル入力)
マルチモーダル入力を行う複雑な例 を次に示します。
構成(フロントマター)
---
model: gemini-3-flash-preview
input:
schema:
image_urls?(array, urls of external images): string
inline_images?(array, inline image data):
type: object
properties:
mime_type: string
contents: string # inline data must be base64-encoded
---
プロンプトと(該当する場合は)システム指示
{{role "system"}}
Use the following image as the basis for comparisons
{{media url="http://example.com/reference_img.bmp"}}
{{role "user"}}
What do the following images have in common?
{{#each image_urls}}
{{media url="this"}}
{{/each}}
{{#each inline_images}}
{{media type="mime_type" data="contents"}}
{{/each}}
ツールの使用
サーバー プロンプト テンプレートは、次のツールをサポートしています。関数呼び出しは まだサポートされていませんが、近日中にサポートされる予定です。
ユーザーがモデルへのリクエストに追加情報を提供できるようにする場合は、 入力検証とともに、サーバー プロンプト テンプレート内で入力変数を使用します。
コードの実行
コード実行ツールを使用すると、モデルで Python コードを生成して実行できます。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
tools:
- codeExecution
---
プロンプトと(該当する場合は)システム指示
What is the sum of the first 50 prime numbers?
Generate and run code for the calculation, and make sure you get all 50.
URL コンテキスト
URL コンテキスト ツールを使用すると、URL の形式で追加のコンテキストをモデルに提供できます。この例では、ユーザーが URL を提供した場合に入力検証を指定する方法も示します。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
input:
schema:
url1:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
url2:
type: string
pattern: '^https?://[\w.-]+\.[a-z]{2,}\S*$'
maxLength: 100
tools:
- urlContext
---
プロンプトと(該当する場合は)システム指示
Compare the ingredients and cooking times from the recipes at {{url1}} and {{url2}}
Google 検索によるグラウンディング
Google 検索によるグラウンディング ツール は、モデルをリアルタイムで一般公開されているウェブ コンテンツに接続します。
構成(フロントマター)
---
model: 'gemini-3-flash-preview'
tools:
- googleSearch
---
プロンプトと(該当する場合は)システム指示
Who won the Euro 2024?
Imagen (画像の生成) (非推奨)
最初のリリースでは、サーバー プロンプト テンプレートは Imagenモデルとテキストのみのプロンプトを使用した画像の生成をサポートしています。 Vertex AI Gemini API を使用した Imagen での画像の編集など、近日中にサポートが追加される予定です。ImagenVertex AI Gemini API
Basic
この例は、 Imagen で画像を生成するための基本的なテンプレートを示しています。入力変数 と 入力検証 を使用します。 Gemini
構成(フロントマター)
---
model: 'imagen-4.0-generate-001'
input:
schema:
prompt: 'string'
---
プロンプトと(該当する場合は)システム指示
Create an image containing {{prompt}}
高精度
この例では、 モデル構成を追加し、 安全性設定を指定し、 Gemini と同様のGemini入力変数、 入力検証、および 制御フロー などの高度な機能をプロンプトで使用する方法を示します。
構成(フロントマター)
---
model: 'imagen-4.0-fast-generate-001'
config:
sampleCount: 1
aspectRatio: "16:9"
personGeneration: dont_allow
includeRaiReason: true
safetySetting: block_medium_and_above
input:
schema:
style(enum, The style of image): [photo, sketch, painting]
subject: string, The object or animal or scenery to generate.
context?: string, Optional background or context description.
default:
style: photo
---
プロンプトと(該当する場合は)システム指示
A {{style}} of {{subject}}{{#if context}}{{context}}{{/if}}.