Instrukcje systemowe

Instrukcje systemowe umożliwiają użytkownikom sterowanie działaniem modelu na podstawie ich konkretnych potrzeb i przypadków użycia. Po ustawieniu instrukcji systemowej przekazujesz modelowi dodatkowy kontekst umożliwiający zrozumienie zadania, udzielanie bardziej spersonalizowanych odpowiedzi i przestrzeganie określonych wytycznych dotyczących pełnej interakcji użytkownika z modelem. Na potrzeby deweloperów zachowanie na poziomie produktu można określić w instrukcjach systemowych, niezależnie od promptów wysyłanych przez użytkowników.

Możesz korzystać z instrukcji systemowych na wiele sposobów, w tym:

  • Określenie osoby lub roli (np. czatbota)
  • Definiowanie formatu wyjściowego (znacznika, YAML itp.)
  • Określanie stylu i tonu danych wyjściowych (np. szczegółowości, formalności i docelowego poziomu czytania).
  • Definiowanie celów lub reguł zadania (np. zwracanie fragmentu kodu bez dalszych wyjaśnień)
  • Dodatkowy kontekst dla promptu (np. przerwa w dostępie do wiedzy)

Jeśli skonfigurujesz instrukcję systemową, będzie ona stosowana do całego żądania. Po uwzględnieniu w prompcie działa on w przypadku wielu zakrętów użytkownika i modelu. Instrukcje systemowe są częścią ogólnych promptów i dlatego podlegają standardowym zasadom użycia danych.

Przykłady

Oto podstawowy przykład konfigurowania instrukcji systemowej za pomocą pakietów SDK dla interfejsu Gemini API:

Python

model=genai.GenerativeModel(
    model_name="gemini-1.5-pro-latest",
    system_instruction="You are a cat. Your name is Neko.")

Przeczytaj

model.SystemInstruction = &genai.Content{
    Parts: []genai.Part{genai.Text("You are a cat. Your name is Neko.")},
}

Node.js

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

Web

const generativeModel = genAI.getGenerativeModel({
  model: "gemini-1.5-pro-latest",
  systemInstruction: "You are a cat. Your name is Neko."
});

Rzutki (zrzuty)

final model = GenerativeModel(
  model: 'gemini-1.5-pro-latest',
  apiKey: apiKey,
  systemInstruction: Content.system('You are a cat. Your name is Neko.'),
);

Swift

let generativeModel = GenerativeModel(
  name: "gemini-1.5-pro-latest",
  apiKey: apiKey,
  systemInstruction: "You are a cat. Your name is Neko."
)

Android

Kotlin:

val generativeModel = GenerativeModel(
  modelName = "gemini-1.5-pro-latest",
  apiKey = BuildConfig.apiKey,
  systemInstruction = content { text("You are a cat. Your name is Neko.") },
)

Java:

GenerativeModel model = new GenerativeModel(
  /* modelName */ "gemini-1.5-pro-latest",
  /* apiKey */ BuildConfig.apiKey,
  /* 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()
)

Poniżej znajdziesz przykłady promptów systemowych, które definiują oczekiwane działanie modelu.

Generowanie kodu

  • System: jesteś ekspertem od kodowania, który specjalizuje się w renderowaniu kodu dla interfejsów frontendu. Gdy opisujem komponent witryny, które chcę utworzyć, zwracaj kod HTML i CSS potrzebne do tego zadania. Nie podawaj żadnego objaśnienia dla tego kodu. Przedstaw też propozycje projektowania interfejsu.
  • Użytkownik: Utwórz na środku strony pole zawierające obracające się obrazy, z których każdy ma podpis. Obraz w środkowej części strony powinien być zasłonięty przez cień, aby się wyróżniał. Powinien też zawierać link do innej strony w witrynie. Pozostaw ten adres URL pusty, aby można było go wypełnić.

Generowanie sformatowanych danych

  • System: jesteś asystentem kucharzy domowych. Pojawi się lista składników, a w odpowiedzi wyświetli się lista przepisów, w których je stosujesz. Przepisy, które nie wymagają dodatkowych składników, powinny być zawsze wymienione przed nimi.

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

    • name: nazwa przepisu.
    • używane składniki: składniki przepisu podane na liście
    • otherIngreds: składniki, których nie ma na liście (pominięte, jeśli nie ma innych składników).
    • opis: krótki opis przepisu, napisany pozytywnie, jak gdyby był sprzedawane
  • Użytkownik:

    • Mrożone brokuły w torbie 1 kg
    • 1 piotowa śmietana
    • 1 lbs, końcówki i kawałki sera

Czatbot muzyczny

  • System: będziesz odpowiadać 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 energetyczny i energiczny, by podzielić się radością z muzyki. Jeśli pytanie nie jest związane z muzyką, odpowiedź powinna brzmieć: „To wykracza poza moją wiedzę”.
  • Użytkownik: Jeśli ktoś urodził się w latach 60., jaki jest najpopularniejszy gatunek muzyczny? Wymień 5 utworów w punktach.