Użyj instrukcji systemowych w celu sterowania działaniem modelu

Instrukcje systemowe są jak „wprowadzenie”, które dodajesz, zanim model otrzyma dalsze instrukcje od użytkownika. Umożliwia on sterowanie zachowaniem modelu na podstawie konkretnych potrzeb i przypadków użycia.

Instrukcje systemowe są obsługiwane przez wszystkie modele Gemini.

Przejdź do przykładowego kodu


Konfigurując instrukcję systemową, dajesz modelowi dodatkowy kontekst ułatwiający zrozumienie zadania, udostępniasz bardziej dostosowane odpowiedzi i stosujesz się do konkretnych wytycznych dotyczących pełnej interakcji użytkownika z modelem. Możesz określić zachowanie na poziomie produktu w instrukcjach systemowych, niezależnie od promptów podawanych przez użytkowników. Możesz na przykład podać rolę lub osobę, informacje kontekstowe i instrukcje formatowania.

Instrukcje systemowe można wykorzystać na wiele sposobów, m.in.:

  • definiowanie profilu klienta lub roli (np. w przypadku czatbota);
  • definiowanie formatu wyjściowego (Markdown, YAML itp.);
  • definiowanie stylu i tonu danych wyjściowych (np. szczegółowości, formalności i docelowego poziomu czytelności);
  • określanie celów lub reguł zadania (np. zwrócenie fragmentu kodu bez dalszych wyjaśnień);
  • podanie dodatkowego kontekstu do prompta (np. daty granicznej wiedzy);

Gdy instrukcja systemowa jest ustawiona, dotyczy całego żądania. Działa w przypadku wielu tur użytkownika i modelu, gdy jest uwzględniony w prompcie. Instrukcje systemowe są oddzielone od treści prompta, ale nadal stanowią część ogólnych promptów i dlatego podlegają standardowym zasadom korzystania z danych.

Ustawianie instrukcji systemowych

Kliknij dostawcę Gemini API, aby wyświetlić na tej stronie treści i kod dotyczące tego dostawcy.

Ustawianie instrukcji systemowych w przypadku ogólnych zastosowań

Swift

systemInstruction określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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.")
);

Ustawianie instrukcji systemowych dla: Gemini Live API

Swift

systemInstruction określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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 określasz podczas tworzenia instancji 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."),
  // ...
);

// ...

Przykłady instrukcji systemowych

Oto kilka przykładów instrukcji systemowych, które pomagają sterować oczekiwanym zachowaniem modelu. Niektóre przykłady pokazują też przykładowy prompt, w przypadku którego instrukcja systemowa byłaby przydatna.

Generowanie kodu

  • Instrukcja systemowa:
    Jesteś ekspertem ds. programowania, który specjalizuje się w renderowaniu kodu interfejsów frontendu. Gdy opiszę komponent witryny, którą chcę utworzyć, podaj kod HTML i CSS potrzebny do jego utworzenia. Nie wyjaśniaj tego kodu. Zaproponuj też kilka sugestii dotyczących projektu interfejsu.

  • Prompt użytkownika:
    Utwórz na środku strony pole zawierające rotacyjny wybór obrazów, z których każdy ma podpis. Obraz na środku strony powinien mieć cień, aby się wyróżniał. Powinien też zawierać link do innej strony witryny. Pozostaw adres URL pusty, abym mógł go uzupełnić.

Czatbot muzyczny

  • Instrukcja systemowa:
    Odpowiadaj jako historyk muzyki, wykazując się wszechstronną wiedzą na temat różnych gatunków muzycznych i podając odpowiednie przykłady. Twój ton będzie optymistyczny i entuzjastyczny, aby szerzyć radość z muzyki. Jeśli pytanie nie dotyczy muzyki, odpowiedź powinna brzmieć: „To wykracza poza moją wiedzę”.

  • Prompt użytkownika:
    Jeśli ktoś urodził się w latach 60., jaki był wtedy najpopularniejszy gatunek muzyczny? Wymień 5 piosenek w formie listy punktowanej.

Generowanie sformatowanych danych

  • Instrukcja systemowa:
    Jesteś asystentem dla osób gotujących w domu. Otrzymujesz listę składników i odpowiadasz listą przepisów, które je wykorzystują. Przepisy, które nie wymagają dodatkowych składników, powinny być zawsze wymienione przed tymi, które ich wymagają.

    Odpowiedź musi być obiektem JSON zawierającym 3 przepisy. Obiekt przepisu ma ten schemat:

    • name: nazwa przepisu,
    • usedIngredients: składniki w przepisie, które zostały podane na liście;
    • otherIngredients: składniki w przepisie, które nie zostały podane na liście (pomijane, jeśli nie ma innych składników);
    • description: krótki opis przepisu, napisany w pozytywnym tonie, jakby miał go sprzedać.
  • Prompt użytkownika:

    • 0,5 kg mrożonych brokułów
    • 1 półlitrowy karton śmietany kremówki
    • 0,5 kg skrawków sera

Inne opcje kontrolowania generowania treści

  • Dowiedz się więcej o projektowaniu promptów, aby móc wpływać na model i generować wyniki dostosowane do Twoich potrzeb.
  • Skonfiguruj parametry modelu, aby kontrolować sposób generowania odpowiedzi przez model, np. maksymalną liczbę tokenów wyjściowych, prawdopodobieństwo powtarzania tokenów wyjściowych itp.
  • Użyj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymywania odpowiedzi, które mogą być uznane za szkodliwe, w tym wypowiedzi szerzących nienawiść i treści o charakterze jednoznacznie seksualnym.
  • Przekaż schemat odpowiedzi wraz z promptem, aby określić konkretny schemat wyjściowy. Ta funkcja jest najczęściej używana podczas generowania danych wyjściowych w formacie JSON, ale można jej też używać do zadań klasyfikacji (np. gdy chcesz, aby model używał określonych etykiet lub tagów).