System instructions let you give the model a persona, set the tone of its responses, or provide specific rules it must follow. These instructions are separate from the user's prompt and are treated with higher priority by the model to ensure it behaves as expected.
К типичным сценариям использования относятся:
- Создание образа: Например, «Вы — полезный репетитор по математике».
- Обеспечение соблюдения формата вывода: например, «Всегда отвечайте в виде маркированного списка».
- Установление ограничений: например, «Не отвечайте на вопросы о политике».
Предварительные требования
Системные инструкции работают на устройствах под управлением Gemini Nano V3 и более поздних версий. Список поддерживаемых устройств см. в разделе «Поддержка устройств через Prompt API» .
Ограничения
Мы не рекомендуем использовать системные инструкции с префиксным кэшированием . В целом, используйте системные инструкции для коротких инструкций, определяющих поведение модели; используйте префиксное кэширование, если вам необходимо повторять большую часть запроса между различными запросами и оптимизировать производительность.
How to use system instructions
Для предоставления системных инструкций создайте объект 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
}
Передовые методы
Here are some best practices when using system instructions:
- Будьте ясными и прямыми: модель лучше следует ясным и прямым инструкциям, чем двусмысленным. Вот несколько примеров:
- Нечетко (избегайте): «Не пишите слишком много. Старайтесь быть полезными и дружелюбными, и красиво оформляйте текст».
- Четко (желательно): «Вы — дружелюбный сотрудник службы поддержки клиентов. Ограничьте свои ответы максимум тремя предложениями. Списки следует оформлять с помощью маркированных списков».
- Будьте краткими: хотя системные инструкции обладают большой мощностью, очень длинные инструкции могут занимать всё ограниченное контекстное окно модели.
- Учитывайте количество токенов: убедитесь, что ваша логика подсчета токенов включает системные инструкции, чтобы избежать недооценки размера запроса. Мы рекомендуем, чтобы ваши системные инструкции не превышали 150 слов (100-200 токенов).
- Тестирование и итерации: поведение модели может меняться в зависимости от формулировки. Тестируйте с различными пользовательскими входными данными, чтобы убедиться, что модель последовательно сохраняет свой пользовательский образ.