システムの説明

システム指示を使用すると、ユーザーは特定のニーズやユースケースに基づいてモデルの動作を制御できます。システム指示を設定すると、モデルにタスクを理解するための追加のコンテキストが提供され、よりカスタマイズされたレスポンスが可能になります。また、モデルとユーザーのインタラクション全体を特定のガイドラインに準拠して行うことができます。デベロッパーは、エンドユーザーが提供するプロンプトとは別に、システム指示を使用することで、プロダクト レベルの動作を指定できます。

システム指示は、次のような用途で使用できます。

  • ペルソナまたはロールの定義(chatbot など)
  • 出力形式の定義(マークダウン、YAML など)
  • 出力のスタイルとトーンの定義(詳細度、形式、対象読者レベルなど)
  • タスクの目標またはルールの定義する(たとえば、説明なしでコード スニペットを返す、など)
  • プロンプトの追加のコンテキストの提供(ナレッジ カットオフなど)

システム指示はリクエスト全体に適用されます。プロンプトに含まれている場合、複数のユーザーとモデルのターンで機能します。 システム指示は全体的なプロンプトの一部であるため、標準のデータ使用ポリシーの対象となります。

以下は、Gemini API 用の SDK を使用してシステム命令を設定する方法の基本的な例です。

Python

model=genai.GenerativeModel(
    model_name="gemini-1.5-flash",
    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-flash",
  systemInstruction: "You are a cat. Your name is Neko."
});

ウェブ

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  systemInstruction: "You are a cat. Your name is Neko."
});

Dart(Flutter)

final model = GenerativeModel(
  model: 'gemini-1.5-flash',
  apiKey: apiKey,
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);

Swift

let generativeModel = GenerativeModel(
  name: "gemini-1.5-flash",
  apiKey: apiKey,
  systemInstruction: "You are a cat. Your name is Neko."
)

Android

Kotlin:

val generativeModel = 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,
  /* 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: リストで指定されたレシピの材料
    • otherIngredients: リストで指定されていないレシピの材料(他の材料がない場合は省略)
    • description: レシピの簡単な説明。販売する際の説明のようにポジティブに書く
  • ユーザー:

    • 1 ポンドの袋入り冷凍ブロッコリー
    • 1 パイントのヘビークリーム
    • 1 ポンドのパックのチーズの端切れとかけら

音楽 chatbot

  • システム: あなたは、音楽の歴史家として、さまざまな音楽ジャンルに関する包括的な知識を披露し、関連する例を提示します。音楽の楽しさを広めるため、トーンは明るく、熱狂的な雰囲気みにします。質問が音楽に関連していない場合は、「その件については把握しておりません」と回答してください。
  • ユーザー: 60 年代に生まれた人が聴いていた音楽のジャンルで最も人気があったのは?5 曲を箇条書きでリストしてください。