Как использовать системные инструкции, чтобы управлять поведением модели

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

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

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


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

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

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

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

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

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

.

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

Swift

Вы указываете 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.'),
);

// ...

Unity

Вы указываете 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

Swift

Вы указываете 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.'),
  // ...
);

// ...

Unity

Вы указываете 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 пустым, чтобы я мог заполнить его.

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

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

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

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

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

    Your response must be a JSON object containing 3 recipes. Объект рецепта имеет следующую схему:

    • name – название рецепта;
    • usedIngredients – ингредиенты из списка, которые используются в рецепте;
    • otherIngredients – ингредиенты, которые не были указаны в списке (если других ингредиентов нет, это свойство не используется).
    • description: краткое описание рецепта, написанное в положительном ключе, как будто вы хотите его продать.
  • Запрос пользователя:

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

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

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