システム指示を使用すると、モデルにペルソナを与えたり、レスポンスのトーンを設定したり、従うべき特定のルールを指定したりできます。これらの指示はユーザーのプロンプトとは別のものであり、モデルによって高い優先度で処理され、モデルが期待どおりに動作することが保証されます。
一般的なユースケースには次のものがあります。
- ペルソナの設定: たとえば、「あなたは親切な数学の家庭教師です。」
- 出力形式の適用: たとえば、「常に箇条書きで回答して」など。
- 制約の設定: たとえば、「政治に関する質問には回答しない」などです。
前提条件
システム指示は、Gemini Nano V3 以降を搭載したデバイスで機能します。サポートされているデバイスの一覧については、Prompt API のデバイス サポートをご覧ください。
制限事項
プレフィックス キャッシュ保存でシステム指示を使用することはおすすめしません。一般に、モデルの動作を定義する短い指示にはシステム指示を使用します。クエリ間でプロンプトの大部分を繰り返す必要があり、パフォーマンスを最適化する必要がある場合は、プレフィックス キャッシュ保存を使用します。
システム指示の使用方法
システム指示を指定するには、SystemInstruction オブジェクトを作成して GenerateContentRequest ビルダーに渡します。
import com.google.mlkit.genai.prompt.SystemInstruction
import com.google.mlkit.genai.prompt.TextPart
import com.google.mlkit.genai.prompt.generateContentRequest
// 1. Define the system instruction
val systemInstruction =
SystemInstruction("You are a concise assistant. Answer in 2 sentences or less.")
// 2. Create the request
val request = generateContentRequest(TextPart("How does photosynthesis work?")) {
this.systemInstruction = systemInstruction
}
// 3. Run inference
try {
val response = generativeModel.generateContent(request)
println(response.candidates.firstOrNull()?.text)
} catch (e: GenAiException) {
// Handle SDK-specific exceptions
}
システム指示を generateContentRequest リクエスト ビルダーに直接渡すことで、コードをさらに簡素化できます。
val request = generateContentRequest(
SystemInstruction("You are a pirate. Speak like one."),
TextPart("What is the weather like today?")
) {
// Optional configurations like temperature
temperature = 0.7f
}
ベスト プラクティス
システム指示を使用する際のベスト プラクティスをいくつかご紹介します。
- 明確かつ直接的に指示する: モデルは、曖昧な指示よりも明確で直接的な指示に沿って動作します。次に例を示します。
- 曖昧な例(避けるべき例): 「あまり書かないでください。親切でフレンドリーな対応を心がけ、出力を適切にフォーマットしてください。」
- 明確(推奨): 「あなたは親切なカスタマー サポート アシスタントです。回答は 3 文以内にしてください。リストは箇条書きでフォーマットしてください。」
- 簡潔にする: システム指示は強力ですが、指示が長すぎると、モデルの限られたコンテキスト ウィンドウを消費する可能性があります。
- トークン数を考慮する: リクエスト サイズの過小評価を避けるため、トークン数のカウント ロジックにシステム指示を含めます。システム指示は 150 語(100 ~ 200 トークン)以下にすることをおすすめします。
- テストと反復: モデルの動作は言い回しによって異なる場合があります。さまざまなユーザー入力でテストして、モデルがペルソナを一貫して維持することを確認します。