システム指示を使用すると、ユーザーは特定のニーズやユースケースに基づいてモデルの動作を制御できます。システム指示を設定すると、モデルにタスクを理解するための追加のコンテキストが提供され、よりカスタマイズされたレスポンスが可能になります。また、モデルとユーザーのインタラクション全体を特定のガイドラインに準拠して行うことができます。デベロッパーは、エンドユーザーが提供するプロンプトとは別に、システム指示を使用することで、プロダクト レベルの動作を指定できます。
システム指示は、次のような用途で使用できます。
- ペルソナまたはロールの定義(chatbot など)
- 出力形式の定義(マークダウン、YAML など)
- 出力のスタイルとトーンの定義(詳細度、形式、対象読者レベルなど)
- タスクの目標またはルールの定義する(たとえば、説明なしでコード スニペットを返す、など)
- プロンプトの追加のコンテキストの提供(ナレッジ カットオフなど)
システム指示はリクエスト全体に適用されます。プロンプトに含めると、複数のユーザーとモデルのターンで機能します。システム手順はプロンプト全体の一部であるため、標準のデータ使用ポリシーが適用されます。
例
以下は、Gemini API 用の SDK を使用してシステム命令を設定する方法の基本的な例です。
Python
model=genai.GenerativeModel(
model_name="gemini-1.5-pro-latest",
system_instruction="You are a cat. Your name is Neko.")
Go
model.SystemInstruction = &genai.Content{
Parts: []genai.Part{genai.Text("You are a cat. Your name is Neko.")},
}
Node.js
const generativeModel = genAI.getGenerativeModel({
model: "gemini-1.5-pro-latest",
systemInstruction: "You are a cat. Your name is Neko."
});
ウェブ
const generativeModel = genAI.getGenerativeModel({
model: "gemini-1.5-pro-latest",
systemInstruction: "You are a cat. Your name is Neko."
});
Dart(Flutter)
final model = GenerativeModel(
model: 'gemini-1.5-pro-latest',
apiKey: apiKey,
systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);
Swift
let generativeModel = GenerativeModel(
name: "gemini-1.5-pro-latest",
apiKey: apiKey,
systemInstruction: "You are a cat. Your name is Neko."
)
Android
Kotlin:
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-pro-latest",
apiKey = BuildConfig.apiKey,
systemInstruction = content { text("You are a cat. Your name is Neko.") },
)
Java:
GenerativeModel model = new GenerativeModel(
/* modelName */ "gemini-1.5-pro-latest",
/* apiKey */ BuildConfig.apiKey,
/* generationConfig (optional) */ null,
/* safetySettings (optional) */ null,
/* requestOptions (optional) */ new RequestOptions(),
/* tools (optional) */ null,
/* toolsConfig (optional) */ null,
/* systemInstruction (optional) */ new Content.Builder().addText("You are a cat. Your name is Neko.").build()
)
モデルの想定される動作を定義するシステム プロンプトの例を次に示します。
コード生成
- システム: あなたは、フロントエンド インターフェースのコードのレンダリングを専門とするコーディングの専門家です。作成するウェブサイトのコンポーネントを説明する際は、作成に必要な HTML と CSS を返してください。このコードの説明は行わないでください。UI デザインも提案してください。
- ユーザー: ページの中央で、選択した画像を回転させ、キャプションを表示するボックスを作成してください。ページの中央にある画像は、目立つように影付きにしてください。また、サイトの別のページにリンクする必要があります。URL は空欄のままにしてください。
フォーマット済みデータの生成
システム:家庭料理のアシスタントです。食材のリストを受け取り、その材料を使用したレシピのリストを返します。追加の材料を必要としないレシピは、必ず追加材料の前に記載する必要があります。
レスポンスは、3 つのレシピを含む JSON オブジェクトである必要があります。レシピ オブジェクトのスキーマは次のとおりです。
- name: レシピの名前
- usedIngredients: リストに記載されているレシピの材料
- otherIngients: リストに記載されていないレシピの材料(他の材料がない場合は省略)
- description: レシピの簡単な説明。販売することを肯定的に表現したもの
ユーザー:
- 冷凍ブロッコリ 500 g 袋
- ヘビークリーム 1 パイント
- チーズ入り 1 kg 入り
音楽 chatbot
- システム: あなたは、音楽の歴史家として、さまざまな音楽ジャンルに関する包括的な知識を披露し、関連する例を提示します。音楽の楽しさを広めるため、トーンは明るく、熱狂的な雰囲気みにします。質問が音楽に関連していない場合は、「その件については把握しておりません」と回答してください。
- ユーザー: 60 年代に生まれた人が聴いていた音楽のジャンルで最も人気があったのは?5 曲を箇条書きでリストしてください。