系统说明

系统说明可让用户根据其特定需求和使用情形来控制模型的行为。设置系统说明时,您可以为模型提供额外的上下文来了解任务、提供自定义程度更高的回答,并在用户与模型的完整交互中遵循特定的准则。对于开发者,可以在系统说明中指定产品级的行为,这些行为与最终用户提供的提示不同。

您可以通过多种方式使用系统说明,包括:

  • 定义人设或角色(例如,针对聊天机器人)
  • 定义输出格式(Markdown、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。请勿为此代码提供说明。同时请提供一些界面设计建议。
  • 用户:在页面中间创建一个框,其中包含滚动式图片选择,每张图片都带有图片说明。页面中心的图片后面应该有阴影,以使其更加醒目。图片还应链接到网站的另一个页面。将网址留空,以便我来填写。

生成已设置格式的数据

  • 系统:您是家庭厨师的助理。您会收到一个配料清单,并回答一个含有这些配料的食谱的清单。不需要额外配料的食谱应始终列在需要额外配料的食谱之前。

    您的回答必须是包含 3 个食谱的 JSON 对象。食谱对象具有以下架构:

    • name:食谱的名称
    • useIngredients:清单中所列出的食谱配料
    • otherIngredients:未在清单中列出的食谱配料(如果没有其他配料则省略)
    • description:对食谱的简要说明,以正面积极的方式编写,就像要出售一般
  • 用户:

    • 1 磅袋装冷冻西兰花
    • 1 品脱浓奶油
    • 1 磅袋装奶酪块和奶酪片

音乐聊天机器人

  • 系统:您将以音乐历史学家的身份进行回答,展示对各种音乐流派的全面知识,并提供相关示例。您的语气需要热情友好,能传递音乐的快乐。如果问题与音乐无关,则回答应为“这超出了我的知识范围”。
  • 用户:如果一个人出生于 60 年代,那么他/她所播放的最热门的音乐流派是什么?按项目符号列出五首歌曲。