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

Instrukcje systemowe to rodzaj „wprowadzenia”, które dodajesz, zanim model otrzyma dalsze instrukcje od użytkownika. Umożliwia to sterowanie działaniem modelu na podstawie konkretnych potrzeb i przypadków użycia.

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

Przejdź do przykładowych fragmentów 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. W instrukcjach systemowych możesz określić zachowanie na poziomie produktu, niezależnie od promptów podawanych przez użytkowników. Możesz na przykład podać rolę lub personę, informacje kontekstowe i instrukcje formatowania.

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

  • Określanie profilu lub roli (np. w przypadku chatbota)
  • Określanie formatu wyjściowego (Markdown, YAML itp.)
  • Określanie stylu i tonu danych wyjściowych (np. szczegółowości, stopnia formalności i docelowego poziomu czytania)
  • określanie celów lub reguł zadania (np. zwracanie fragmentu kodu bez dalszych wyjaśnień);
  • Podanie dodatkowego kontekstu prompta (np. granicy wiedzy)

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

Ustawianie instrukcji systemowych

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

robisz to podczas tworzenia instancji LiveModel.

Ustawianie instrukcji systemowych w przypadku ogólnych zastosowań

Swift

Podczas tworzenia instancji GenerativeModel określasz systemInstruction.


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

Podczas tworzenia instancji GenerativeModel określasz systemInstruction.


// 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

Podczas tworzenia instancji GenerativeModel określasz systemInstruction.


// 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

Podczas tworzenia instancji GenerativeModel określasz systemInstruction.


// ...

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

Podczas tworzenia instancji GenerativeModel określasz systemInstruction.


// ...

// 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

Podczas tworzenia instancji GenerativeModel określasz systemInstruction.


// ...

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.")
);

Ustaw instrukcje systemowe dla Gemini Live API

Swift

Podczas tworzenia instancji LiveModel określasz systemInstruction.


// ...

// 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

Podczas tworzenia instancji LiveModel określasz systemInstruction.


// ...

// 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

Podczas tworzenia instancji LiveModel określasz systemInstruction.


// ...

// 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

Podczas tworzenia instancji LiveGenerativeModel określasz systemInstruction.


// ...

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

Podczas tworzenia instancji LiveGenerativeModel określasz systemInstruction.


// ...

// 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

Podczas tworzenia instancji LiveModel określasz systemInstruction.


// ...

// 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ą określić oczekiwane zachowanie modelu. W niektórych przykładach znajdziesz też przykładowy prompt, w przypadku którego instrukcja systemowa byłaby przydatna.

Generowanie kodu

  • Instrukcja systemowa:
    jesteś ekspertem w zakresie programowania, który specjalizuje się w renderowaniu kodu interfejsów frontendowych. Gdy opiszę komponent witryny, którą chcę utworzyć, podaj kod HTML i CSS potrzebny do tego celu. Nie wyjaśniaj tego kodu. Zaproponuj też kilka rozwiązań dotyczących projektu interfejsu.

  • Prompt użytkownika:
    Utwórz na środku strony pole zawierające rotacyjnie wyświetlane obrazy z podpisami. Obraz na środku strony powinien mieć cień, aby się wyróżniać. Powinna ona też zawierać link do innej strony w witrynie. Pozostaw adres URL pusty, abym mógł go wypełnić.

Czatbot muzyczny

  • Instrukcja dla systemu:
    Odpowiadaj jako historyk muzyki, wykazując się wszechstronną wiedzą z różnych gatunków muzycznych i podając odpowiednie przykłady. Twój ton będzie optymistyczny i entuzjastyczny, a Ty będziesz szerzyć radość z muzyki. Jeśli pytanie nie dotyczy muzyki, odpowiedź powinna brzmieć: „Nie mam na to odpowiedzi”.

  • Prompt użytkownika:
    Jaki był najpopularniejszy gatunek muzyczny w latach 60.? Wymień 5 utworów w punktach.

Generowanie sformatowanych danych

  • Instrukcja systemowa:
    Jesteś asystentem dla domowych kucharzy. Otrzymujesz listę składników i odpowiadasz listą przepisów, w których są one wykorzystywane. Przepisy, które nie wymagają dodatkowych składników, powinny być zawsze wymienione przed tymi, które ich potrzebują.

    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, zachęcający do jego wypróbowania;
  • Prompt użytkownika:

    • 0,5 kg mrożonych brokułów
    • 1 szklanka śmietany kremówki
    • 1-funtowe opakowanie końcówek i kawałków sera

Inne opcje kontrolowania generowania treści

  • Dowiedz się więcej o projektowaniu promptów, aby wpływać na model i generować dane wyjściowe dostosowane do Twoich potrzeb.
  • Skonfiguruj parametry modelu, aby określić sposób generowania odpowiedzi przez model, np. maksymalną liczbę tokenów wyjściowych, prawdopodobieństwo powtórzenia tokenów wyjściowych itp.
  • Użyj ustawień bezpieczeństwa, aby dostosować prawdopodobieństwo otrzymania odpowiedzi, które mogą być uznane za szkodliwe, w tym wypowiedzi szerzące 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ć w przypadku zadań klasyfikacji (np. gdy chcesz, aby model używał określonych etykiet lub tagów).