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.