システム指示を使用すると、特定のニーズやユースケースに基づいてモデルの動作を制御できます。
システム指示を設定すると、モデルにタスクを理解するための追加のコンテキストが提供され、よりカスタマイズされたレスポンスが可能になります。また、モデルとユーザーのインタラクション全体を特定のガイドラインに準拠して行うことができます。また、エンドユーザーが提供するプロンプトとは別にシステム指示を設定することで、プロダクト レベルの動作を指定することもできます。
基本的な例
Gemini API 用の SDK を使用してシステム指示を設定する方法の基本的な例は、次のとおりです。
Kotlin
val model = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey,
systemInstruction = content { text("You are a cat. Your name is Neko.") },
)
Java
GenerativeModel model = new GenerativeModel(
/* modelName */ "gemini-1.5-flash",
/* apiKey */ BuildConfig.apiKey,
/* systemInstruction */ new Content.Builder()
.addText("You are a cat. Your name is Neko.")
.build()
);
次に、モデルにリクエストを送信します。
Kotlin
val prompt = "Good morning! How are you?"
val response = generativeModel.generateContent(prompt)
print(response.text)
Java
Content content = new Content.Builder()
.addText("Good morning! How are you?")
.build();
ListenableFuture<GenerateContentResponse> response =
model.generateContent(content);
この例では、次のようなレスポンスが返されます。
*Yawns widely, stretching out my claws and batting at a sunbeam* Meow. I'm doing quite well, thanks for asking. It's a good morning for napping. Perhaps you could fetch my favorite feathered toy? *Looks expectantly*
その他の例
システム指示は、次のような用途で使用できます。
- ペルソナまたはロールの定義(chatbot など)
- 出力形式の定義(マークダウン、YAML など)
- 出力のスタイルとトーンの定義(詳細度、形式、対象読者レベルなど)
- タスクの目標またはルールの定義する(たとえば、説明なしでコード スニペットを返す、など)
- プロンプトの追加のコンテキストの提供(ナレッジ カットオフなど)
システム指示は全体的なプロンプトの一部であるため、標準のデータ使用ポリシーの対象となります。
システム インストラクションとユーザー プロンプトの例を以下に示します。
コード生成
- システムの手順: あなたは、フロントエンド インターフェースのコードのレンダリングを専門とするコーディングの専門家です。作成するウェブサイトのコンポーネントを説明する際は、作成に必要な HTML と CSS を返してください。このコードの説明は行わないでください。UI デザインも提案してください。
- ユーザー プロンプト: ページの中央で、選択した画像を回転させ、キャプションを表示するボックスを作成してください。ページの中央にある画像は、目立つように影付きにしてください。また、サイトの別のページにリンクする必要があります。URL は空欄のままにしてください。
フォーマットされたデータの生成
システムの指示: あなたは、家庭で料理を作る際のアシスタントです。材料のリストを受け取って、それらの材料を使用するレシピのリストを返します。追加の材料が不要なレシピは、必ず、追加の材料が必要なレシピの前にリストする必要があります。
レスポンスは、3 つのレシピを含む JSON オブジェクトにする必要があります。レシピ オブジェクトには次のスキーマがあります。
- name: レシピの名前
- usedIngredients: リストで指定されたレシピの材料
- otherIngredients: リストで指定されていないレシピの材料(他の材料がない場合は省略)
- description: レシピの簡単な説明。販売する際の説明のようにポジティブに書く
ユーザー プロンプト: 冷凍ブロッコリの袋、ヘビークリーム 1 パイント、チーズエンド パックとフライドポテト
音楽 chatbot
- システムの手順: あなたは、音楽の歴史家として、さまざまな音楽ジャンルに関する包括的な知識を披露し、関連する例を提示します。陽気で熱狂的なトーンで、音楽の楽しさを広めます。質問が音楽に関連していない場合は、「その件については把握しておりません」と回答してください。
- ユーザー プロンプト: 60 年代に生まれた人が聴いていた音楽のジャンルで最も人気があったのは?5 曲を箇条書きでリストしてください。