Используйте системные инструкции для управления поведением модели.

Системные инструкции — это своего рода «преамбула», которую вы добавляете перед тем, как модель будет подвергнута каким-либо дальнейшим инструкциям со стороны конечного пользователя. Она позволяет вам управлять поведением модели в соответствии с вашими конкретными потребностями и сценариями использования.

Системные инструкции поддерживаются всеми моделями Gemini . Модели Imagen их не поддерживают.

Перейти к примерам кода


При создании системной инструкции вы предоставляете модели дополнительный контекст для понимания задачи, обеспечения более персонализированных ответов и соблюдения конкретных рекомендаций на протяжении всего взаимодействия пользователя с моделью. В системных инструкциях можно указать поведение на уровне продукта, отдельно от подсказок, предоставляемых конечными пользователями. Например, можно включить такие элементы, как роль или профиль, контекстную информацию и инструкции по форматированию.

Системные инструкции можно использовать различными способами, в том числе:

  • Определение образа или роли (например, для чат-бота).
  • Определение формата вывода (Markdown, YAML и т. д.)
  • Определение стиля и тональности текста (например, многословность, формальность и целевой уровень сложности для чтения).
  • Определение целей или правил для выполнения задачи (например, возврат фрагмента кода без дополнительных пояснений).
  • Предоставление дополнительного контекста к вопросу (например, порогового значения уровня знаний).

Когда устанавливается системная инструкция, она применяется ко всему запросу. Она работает для нескольких пользовательских и модельных циклов, если включена в подсказку. Хотя системные инструкции отделены от содержимого подсказки, они все же являются частью ваших общих подсказок и, следовательно, подпадают под действие стандартных правил использования данных.

Настройка системных инструкций

Чтобы просмотреть контент и код, относящиеся к вашему поставщику API Gemini , нажмите на него.

Настройте системные инструкции для общих сценариев использования.

Быстрый

systemInstruction необходимо указать при создании экземпляра GenerativeModel .


import FirebaseAILogic

// Specify the system instructions as part of creating the `GenerativeModel` instance
let model = FirebaseAI.firebaseAI(backend: .googleAI()).generativeModel(
  modelName: "GEMINI_MODEL_NAME",
  systemInstruction: ModelContent(role: "system", parts: "You are a cat. Your name is Neko.")
)

Kotlin

systemInstruction необходимо указать при создании экземпляра GenerativeModel .


// Specify the system instructions as part of creating the `GenerativeModel` instance
val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
  modelName = "GEMINI_MODEL_NAME",
  systemInstruction = content { text("You are a cat. Your name is Neko.") }
)

Java

systemInstruction необходимо указать при создании экземпляра GenerativeModel .


// Specify the system instructions as part of creating the `GenerativeModel` instance
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
    .generativeModel(
      /* modelName */ "GEMINI_MODEL_NAME",
      /* 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()
    );

GenerativeModelFutures model = GenerativeModelFutures.from(ai);

Web

systemInstruction необходимо указать при создании экземпляра GenerativeModel .


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Specify the system instructions as part of creating the `GenerativeModel` instance
const model = getGenerativeModel(ai, {
  model: "GEMINI_MODEL_NAME",
  systemInstruction: "You are a cat. Your name is Neko."
});

Dart

systemInstruction необходимо указать при создании экземпляра GenerativeModel .


// ...

// Specify the system instructions as part of creating the `GenerativeModel` instance
final model = FirebaseAI.googleAI().generativeModel(
  model: 'GEMINI_MODEL_NAME',
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);

// ...

Единство

systemInstruction необходимо указать при создании экземпляра GenerativeModel .


// ...

var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());

// Specify the system instructions as part of creating the `GenerativeModel` instance
var model = ai.GetGenerativeModel(
  modelName: "GEMINI_MODEL_NAME",
  systemInstruction: ModelContent.Text("You are a cat. Your name is Neko.")
);

Установите системные инструкции для Gemini Live API

Быстрый

Инструкцию systemInstruction вы указываете при создании экземпляра LiveModel .


// ...

// Specify the system instructions as part of creating the `liveModel` instance
let liveModel = FirebaseAI.firebaseAI(backend: .googleAI()).liveModel(
  modelName: "GEMINI_LIVE_MODEL_NAME",
  systemInstruction: ModelContent(role: "system", parts: "You are a cat. Your name is Neko."),
  // ...
)

// ...

Kotlin

Инструкцию systemInstruction вы указываете при создании экземпляра LiveModel .


// ...

// Specify the system instructions as part of creating the `LiveModel` instance
val liveModel = Firebase.ai(backend = GenerativeBackend.googleAI()).liveModel(
    modelName = "GEMINI_LIVE_MODEL_NAME",
    systemInstruction = content { text("You are a cat. Your name is Neko.") },
    // ...
)

// ...

Java

Инструкцию systemInstruction вы указываете при создании экземпляра LiveModel .


// ...

// Specify the system instructions as part of creating the `LiveModel` instance
LiveGenerativeModel lm = FirebaseAI.getInstance(GenerativeBackend.googleAI()).liveModel(
          /* modelName */ "GEMINI_LIVE_MODEL_NAME",
          /* systemInstruction (optional) */ new Content.Builder().addText("You are a cat. Your name is Neko.").build()
          // ...
);

LiveModelFutures liveModel = LiveModelFutures.from(lm);

// ...

Web

Параметр systemInstruction указывается при создании экземпляра LiveGenerativeModel .


// ...

const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });

// Specify the system instructions as part of creating the `LiveGenerativeModel` instance
const liveModel = getLiveGenerativeModel(ai, {
  model: "GEMINI_LIVE_MODEL_NAME",
  systemInstruction: "You are a cat. Your name is Neko.",
  // ...
});

// ...

Dart

Параметр systemInstruction указывается при создании экземпляра LiveGenerativeModel .


// ...

// Specify the system instructions as part of creating the `liveGenerativeModel` instance
final liveModel = FirebaseAI.googleAI().liveGenerativeModel(
  model: 'GEMINI_LIVE_MODEL_NAME',
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
  // ...
);

// ...

Единство

Инструкцию systemInstruction вы указываете при создании экземпляра LiveModel .


// ...

// Specify the system instructions as part of creating the `LiveModel` instance
var liveModel = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI()).GetLiveModel(
  modelName: "GEMINI_LIVE_MODEL_NAME",
  systemInstruction: ModelContent.Text("You are a cat. Your name is Neko."),
  // ...
);

// ...

Примеры системных инструкций

Ниже приведены несколько примеров системных инструкций, которые помогают управлять ожидаемым поведением модели. В некоторых примерах также показан пример запроса, для которого системная инструкция может быть полезна.

Генерация кода

  • Системная инструкция:
    Вы — эксперт в программировании, специализирующийся на рендеринге кода для фронтенд-интерфейсов. Когда я буду описывать компонент веб-сайта, который хочу создать, пожалуйста, предоставьте HTML и CSS, необходимые для этого. Не давайте пояснений к этому коду. Также предложите несколько вариантов дизайна пользовательского интерфейса.

  • Запрос пользователя:
    Создайте в центре страницы блок, содержащий сменяющиеся изображения, каждое с подписью. Изображение в центре страницы должно иметь тень, чтобы выделяться. Оно также должно содержать ссылку на другую страницу сайта. Оставьте поле URL пустым, чтобы я мог его заполнить.

Музыкальный чат-бот

  • Системная инструкция:
    Вы должны ответить как историк музыки, продемонстрировав всесторонние знания в различных музыкальных жанрах и приведя соответствующие примеры. Ваш тон должен быть оптимистичным и полным энтузиазма, распространяя радость музыки. Если вопрос не связан с музыкой, ответ должен быть: «Это выходит за рамки моих знаний».

  • Запрос пользователя:
    Если человек родился в шестидесятые годы, какой музыкальный жанр был самым популярным? Перечислите пять песен по пунктам.

Генерация форматированных данных

  • Системная инструкция:
    Вы работаете помощником у домашних поваров. Вы получаете список ингредиентов и отвечаете списком рецептов, в которых эти ингредиенты используются. Рецепты, не требующие дополнительных ингредиентов, всегда следует указывать перед теми, которые их требуют.

    В ответе должен быть JSON-объект, содержащий 3 рецепта. Объект рецепта имеет следующую схему:

    • Название: Название рецепта
    • Используемые ингредиенты: Ингредиенты, указанные в рецепте в списке.
    • otherIngredients: Ингредиенты, указанные в рецепте, но не включенные в список (опускаются, если других ингредиентов нет).
    • Описание: Краткое описание рецепта, написанное в позитивном ключе, как бы с целью его продажи.
  • Запрос пользователя:

    • 1 фунт (450 г) замороженной брокколи
    • 1 пинта жирных сливок
    • Упаковка сырных обрезков и кусочков (1 фунт)

Другие варианты управления генерацией контента.

  • Узнайте больше о разработке подсказок , чтобы вы могли влиять на модель и генерировать результаты, соответствующие вашим потребностям.
  • Настройте параметры модели , чтобы управлять тем, как модель генерирует ответ. Для моделей Gemini эти параметры включают максимальное количество выходных токенов, температуру, topK и topP. Для моделей Imagen это включает соотношение сторон, генерацию людей, водяные знаки и т. д.
  • Используйте настройки безопасности , чтобы скорректировать вероятность получения ответов, которые могут быть расценены как вредные, включая разжигание ненависти и контент сексуального характера.
  • Передайте схему ответа вместе с запросом, чтобы указать конкретную схему вывода. Эта функция чаще всего используется при генерации выходных данных в формате JSON , но ее также можно использовать для задач классификации (например, когда вы хотите, чтобы модель использовала определенные метки или теги).