借助系统指令,您可以为模型设置角色、指定回答的语气,或提供模型必须遵循的特定规则。这些指令与用户的提示分开,模型会以更高的优先级处理这些指令,以确保其行为符合预期。
常见用例包括:
- 设置角色:例如,“你是一名乐于助人的数学辅导老师。”
- 强制执行输出格式:例如,“始终以要点形式回答。”
- 设置限制:例如,“不要回答有关政治的问题”。
前提条件
系统指令适用于搭载 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 个 token)。
- 测试和迭代:模型行为可能会因措辞而异。使用各种用户输入进行测试,确保模型始终保持其角色。