在每次向模型發出的要求中,您都會傳送提示,並視需要傳送結構定義和設定,藉此控制模型的回覆。使用 Firebase AI Logic 時,您可以直接從用戶端程式碼傳送所有這類資訊,也可以使用伺服器提示詞範本,在伺服器端指定這類資訊。
使用伺服器提示詞範本時,你會將提示詞、結構定義和設定儲存在伺服器端,然後應用程式只會將參照特定範本的金鑰 (範本 ID) 和該範本的必要輸入內容,從用戶端傳遞至伺服器。
使用伺服器提示詞範本時,你會將提示詞和設定儲存在伺服器端,並只在應用程式的程式碼庫中提供金鑰 (範本 ID)。這種做法的優點包括:
防止提示詞在用戶端外洩
更新提示詞和設定,不必發布新版應用程式
本指南說明如何開始使用伺服器提示範本。
支援的模型和功能
搭配任何支援的 Gemini 和 Imagen 模型使用伺服器提示詞範本,但 Gemini Live 模型除外。Firebase AI Logic
查看尚未支援的功能清單。
高階總覽
以下是使用伺服器提示詞範本的基本工作流程:
使用 Firebase 控制台的引導式 UI 建立範本。
使用 Firebase 控制台的測試功能,在實際要求中測試範本。
從應用程式存取範本。
伺服器提示詞範本的基本格式
對於 Firebase AI Logic,Firebase 控制台提供導覽式 UI,可供您指定範本內容。
伺服器提示詞範本使用以 Dotprompt 為基礎的語法和格式。 詳情請參閱範本格式、語法和範例。
以下是向 Gemini 模型發出範例要求時,最重要的元件:
---
model: 'gemini-2.5-flash'
---
{{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}}.
三條虛線內的最上方部分包含模型名稱,以及您要在要求中傳送的任何模型設定、輸入驗證或結構定義 (選用)。會以鍵/值組合的形式寫入,通常稱為 YAML 前置內容。
範本主體包含提示。也可以選擇加入系統指令和輸入值 (使用 Handlebars 語法)。
在程式碼中使用範本
|
按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。 |
如何在程式碼中使用範本:
Swift
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.googleAI.templateGenerativeModel()
val customerName = "Jane"
val response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
String customerName = "Jane";
Future response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
// ...
// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const customerName = 'Jane';
const result = await model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
const response = response.result;
const text = response.text();
Dart
Flutter 外掛程式即將支援伺服器提示範本!
Unity
Unity 套件即將支援伺服器提示範本!
詳細操作說明
本節提供詳細操作說明,協助您建立、測試及使用伺服器提示範本。
事前準備
如果尚未完成,請參閱入門指南,瞭解如何設定 Firebase 專案、將應用程式連結至 Firebase、新增 SDK、為所選Gemini API供應商初始化後端服務,以及建立
GenerativeModel執行個體。請確認您擁有建立及管理伺服器提示範本的必要權限。根據預設,所有這些權限都包含在「擁有者」角色中。
如果您使用 Vertex AI Gemini API 和 if your use case requires location-based restrictions,我們支援範本的進階工作流程。
步驟 1:建立伺服器提示範本
在大多數情況下,您會在 Firebase 控制台中建立及管理伺服器提示範本。
在 Firebase 控制台中,前往「提示範本」Firebase AI Logic分頁。
按一下「建立新範本」,然後選取新手範本選項。
這些入門範本提供常見用途的格式和語法。不過,無論選取哪個選項,您都可以完全變更範本,以符合自身需求。
本入門指南假設您已選取
Input + System Instructions選項。
輸入範本的 ID:
範本名稱:這是範本的顯示名稱 (例如
My First Template),只會在 Firebase 介面 (如 Firebase 控制台) 中顯示。範本 ID:這是範本的專屬 ID,在 Firebase 專案中不得重複 (例如
)。在應用程式中提出要求時,會參照這個 ID。my-first-template-v1-0-0建議您使用版本控管系統來管理範本 ID。
範本 ID 最多可包含 63 個字元,且只能使用小寫英文字母、數字和連字號。
視需要修改範本的「Configuration (frontmatter)」(設定 (前言)) 部分。
這個部分至少須包含模型名稱,例如:
--- model: 'gemini-2.5-flash' ---您也可以視需要指定模型設定,以及任何輸入/輸出控管機制等。如需更多詳細資料和選項,請參閱「範本格式、語法和範例」。
視需要修改範本的「提示詞和系統指令 (後者可視需要使用)」部分。
這個部分至少須包含要傳送至模型的文字提示。
Write a story about a magic backpack.您也可以建立更複雜的提示,例如: 如需更多詳細資料和選項,請參閱「範本格式、語法和範例」。
(選用,視情況而定) 使用
{{role "system"}}語法指定系統指令,並使用{{role "user"}}語法指定文字提示。(選用) 使用 Handlebars 語法 (例如
{{customerName}}) 指定輸入變數。您可以在範本中提供預設值,但這個輸入變數的值通常會傳遞至要求。
{{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}}.
步驟 2:在 Firebase 控制台中測試範本
Firebase 控制台提供範本的測試體驗。這項功能可讓您瞭解使用範本時會發生什麼情況,包括要求的格式和實際要求輸出內容。
按一下「儲存範本」,即可測試範本。
你隨時可以編輯或刪除範本。只有範本 ID 無法變更。
如果提示使用輸入變數,請在「測試輸入」欄位中加入測試值。在此範例中:
{ "customerName": "Jane" }如果 Firebase 專案中已啟用多個 Gemini API 供應商,您可以選擇要使用哪個供應商來發出測試要求。如果主控台顯示這個選項,請選取
Gemini Developer API或Vertex AI Gemini API。請注意,這項設定只適用於透過 Firebase 控制台測試體驗提交的要求。在應用程式的實際要求中,您會指定所選的 Gemini API 供應商,就像處理任何要求一樣。
按一下「建立已套用格式的測試要求」按鈕。
查看畫面右側的「格式化測試要求」,並反覆調整範本的任何欄位。
確認格式化測試要求正確無誤後,請按一下「執行提示測試」按鈕。
查看畫面右側的測試回覆,並反覆修改範本的任何欄位。
如要從應用程式的程式碼存取範本,請按一下範本右上角的
鎖頭 圖示,鎖定範本。按一下「關閉」即可結束編輯體驗。
步驟 3:透過代碼存取範本
|
按一下 Gemini API 供應商,即可在這個頁面查看供應商專屬內容和程式碼。 |
使用伺服器提示範本的要求與其他要求類似,但有以下調整:
- 使用
templateGenerativeModel(或視需要使用templateImagenModel)。 - 提供範本 ID。
- 提供範本所需的任何變數輸入值。
請注意,建立或更新範本後,您可能需要等待幾分鐘,範本才會在 Firebase 伺服器中傳播,之後才能從程式碼存取範本。
Swift
建立 templateGenerativeModel 執行個體 (或 templateImagenModel),以便在要求中使用範本。
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).templateGenerativeModel()
let customerName = "Jane"
do {
let response = try await model.generateContent(
// Specify your template ID
templateID: "my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
inputs: [
"customerName": customerName
]
)
if let text = response.text {
print("Response Text: \(text)")
}
} catch {
print("An error occurred: \(error)")
}
print("\n")
Kotlin
建立 templateGenerativeModel 執行個體 (或 templateImagenModel),以便在要求中使用範本。
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
val model = Firebase.googleAI.templateGenerativeModel()
val customerName = "Jane"
val response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf(
"customerName" to customerName
)
)
val text = response.text
println(text)
Java
建立 templateGenerativeModel 執行個體 (或 templateImagenModel),以便在要求中使用範本。
// ...
// Initialize the Gemini Developer API backend service
// Create a `TemplateGenerativeModel` instance
TemplateGenerativeModel generativeModel = FirebaseAI.getInstance().templateGenerativeModel();
TemplateGenerativeModelFutures model = TemplateGenerativeModelFutures.from(generativeModel);
String customerName = "Jane";
Future response = model.generateContent(
// Specify your template ID
"my-first-template-v1-0-0",
// Provide the values for any input variables required by your template.
mapOf("customerName", customerName)
);
addCallback(response,
new FutureCallback() {
public void onSuccess(GenerateContentResponse result) {
System.out.println(result.getText());
}
public void onFailure(Throwable t) {
reportError(t);
}
}
executor);
Web
建立 templateGenerativeModel 執行個體 (或 templateImagenModel),以便在要求中使用範本。
// ...
// Initialize the Gemini Developer API backend service
const ai = getAI(app, { backend: new GoogleAIBackend() });
// Create a `TemplateGenerativeModel` instance
const model = getTemplateGenerativeModel(ai);
const customerName = 'Jane';
const result = await model.generateContent(
// Specify your template ID
'my-first-template-v1-0-0',
// Provide the values for any input variables required by your template
{
customerName: customerName,
}
);
const response = response.result;
const text = response.text();
Dart
Flutter 外掛程式即將支援伺服器提示範本!
Unity
Unity 套件即將支援伺服器提示範本!
後續步驟
瞭解使用伺服器提示詞範本的最佳做法和注意事項。
進一步瞭解範本格式和語法,以及相關範例。
管理範本,包括編輯、鎖定及版本控管。