Как задать системные инструкции

Системные инструкции позволяют задать для модели роль, тон ответов или правила, которым она должна следовать. Эти инструкции отделены от запроса пользователя и обрабатываются моделью с более высоким приоритетом, чтобы обеспечить ожидаемое поведение.

Вот несколько примеров:

  • Задайте роль. Например: "Ты – репетитор по математике".
  • Формат вывода. Например, "Всегда отвечай в виде маркированного списка".
  • Ограничения. Например, "Не отвечай на вопросы о политике".

Требования

Системные инструкции работают на устройствах с Gemini Nano V3 и более поздними версиями. Список поддерживаемых устройств приведен в статье Поддержка устройств с прямым доступом к модели.

Ограничения

Мы не рекомендуем использовать системные инструкции с кешированием префиксов. В целом, используйте системные инструкции для коротких инструкций, определяющих, как должна вести себя модель. Используйте кеширование префиксов, если вам нужно повторить большую часть подсказки в разных запросах и оптимизировать производительность.

Как использовать системные инструкции

Чтобы предоставить системные инструкции, создайте объект 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
}

Рекомендации

Вот несколько рекомендаций по использованию системных инструкций:

  • Выражайтесь ясно и прямо. Модель лучше понимает четкие и прямые инструкции, чем двусмысленные. Вот несколько примеров:
    • Неопределенный (не рекомендуется): "Не пиши слишком много. Старайся быть полезным и дружелюбным, а также красиво форматируй ответ".
    • Понятный (предпочтительный): "Ты дружелюбный специалист службы поддержки. Ограничьте свои ответы максимум тремя предложениями. Оформи списки в виде маркированных списков".
  • Будьте кратки. Системные инструкции – мощный инструмент, но если они будут слишком длинными, то могут занять все ограниченное окно контекста модели.
  • Учитывайте количество токенов. Убедитесь, что логика подсчета токенов включает системные инструкции, чтобы избежать недооценки размера запроса. Рекомендуем ограничить системные инструкции 150 словами (100–200 токенов).
  • Тестируйте и дорабатывайте. Поведение модели может меняться в зависимости от формулировок. Протестируйте модель с различными входными данными, чтобы убедиться, что она сохраняет свою личность.