Instrukcje systemowe pozwalają nadać modelowi personę, określić ton jego odpowiedzi lub podać konkretne reguły, których musi przestrzegać. Te instrukcje są oddzielone od prompta użytkownika i są traktowane przez model z wyższym priorytetem, aby zapewnić jego oczekiwane działanie.
Częste przypadki użycia:
- Ustawianie persony: na przykład „Jesteś pomocnym nauczycielem matematyki”.
- Wymuszanie formatu wyniku: na przykład „Zawsze odpowiadaj w punktach”.
- Ustawianie ograniczeń: na przykład „Nie odpowiadaj na pytania dotyczące polityki”.
Wymagania wstępne
Instrukcje systemowe działają na urządzeniach z Gemini Nano w wersji 3 lub nowszej. Listę obsługiwanych urządzeń znajdziesz w artykule Obsługa urządzeń z bezpośrednim dostępem do modelu.
Ograniczenia
Nie zalecamy używania instrukcji systemowych z buforowaniem prefiksów. Ogólnie rzecz biorąc, instrukcje systemowe należy stosować w przypadku krótkich instrukcji, które określają, jak model powinien się zachowywać. Jeśli musisz powtarzać dużą część prompta w różnych zapytaniach i chcesz zoptymalizować wydajność, użyj buforowania prefiksów.
Jak korzystać z instrukcji systemowych
Aby podać instrukcje systemowe, utwórz obiekt SystemInstruction i przekaż go do kreatora GenerateContentRequest:
import com.google.mlkit.genai.prompt.SystemInstruction
import com.google.mlkit.genai.prompt.TextPart
import com.google.mlkit.genai.prompt.generateContentRequest
// 1. Define the system instruction
val systemInstruction =
SystemInstruction("You are a concise assistant. Answer in 2 sentences or less.")
// 2. Create the request
val request = generateContentRequest(TextPart("How does photosynthesis work?")) {
this.systemInstruction = systemInstruction
}
// 3. Run inference
try {
val response = generativeModel.generateContent(request)
println(response.candidates.firstOrNull()?.text)
} catch (e: GenAiException) {
// Handle SDK-specific exceptions
}
Możesz jeszcze bardziej uprościć kod, przekazując instrukcje systemowe bezpośrednio do kreatora żądań generateContentRequest:
val request = generateContentRequest(
SystemInstruction("You are a pirate. Speak like one."),
TextPart("What is the weather like today?")
) {
// Optional configurations like temperature
temperature = 0.7f
}
Sprawdzone metody
Oto kilka sprawdzonych metod korzystania z instrukcji systemowych:
- Wyrażaj się jasno i bezpośrednio: model lepiej wykonuje jasne, bezpośrednie instrukcje niż te niejednoznaczne. Oto kilka przykładów:
- Nieprecyzyjna (unikaj): „Nie pisz za dużo. Staraj się być pomocny i przyjazny, a także ładnie sformatuj dane wyjściowe”.
- Jasny (preferowany): „Jesteś przyjaznym asystentem obsługi klienta. Ogranicz odpowiedzi do maksymalnie 3 zdań. Sformatuj wszystkie listy, używając punktów”.
- Pisz zwięźle: instrukcje systemowe są bardzo przydatne, ale bardzo długie instrukcje mogą wyczerpać ograniczone okno kontekstu modelu.
- Uwzględnij liczbę tokenów: upewnij się, że logika zliczania tokenów obejmuje instrukcje systemowe, aby uniknąć niedoszacowania rozmiaru żądania. Zalecamy, aby instrukcje systemowe nie przekraczały 150 słów (100–200 tokenów).
- Testuj i wprowadzaj zmiany: zachowanie modelu może się różnić w zależności od sformułowań. Przetestuj różne dane wejściowe użytkownika, aby upewnić się, że model zachowuje spójność osobowości.