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 promptu użytkownika i mają dla modelu wyższy priorytet, aby zapewnić jego oczekiwane działanie.
Częste przypadki użycia:
- Ustawianie persony: na przykład „Jesteś pomocnym korepetytorem matematyki”.
- Wymuszanie formatu wyjściowego: 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 sekcji Obsługa urządzeń w interfejsie Prompt API.
Ograniczenia
Nie zalecamy używania instrukcji systemowych z buforowaniem prefiksów. Ogólnie rzecz biorąc, używaj instrukcji systemowych w przypadku krótkich instrukcji, które określają, jak model ma się zachowywać. Używaj buforowania prefiksów, jeśli musisz powtarzać dużą część prompta w różnych zapytaniach i zależy Ci na optymalizacji wydajności.
Jak korzystać z instrukcji systemowych
Aby podać instrukcje systemowe, utwórz obiekt SystemInstruction i przekaż go do konstruktora 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 generateContentRequest konstruktora żądań:
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 i bezpośrednie instrukcje niż niejednoznaczne. Oto przykłady:
- Niejasne (unikać): „Nie pisz za dużo. Staraj się być pomocny i przyjazny oraz odpowiednio formatuj dane wyjściowe”.
- Jasny (preferowany): „Jesteś pomocnym asystentem obsługi klienta. Ogranicz odpowiedzi do maksymalnie 3 zdań. Sformatuj wszystkie listy za pomocą punktów”.
- Bądź zwięzły: instrukcje systemowe są bardzo przydatne, ale bardzo długie instrukcje mogą wykorzystać ograniczone okno kontekstowe modelu.
- Uwzględnij liczbę tokenów: upewnij się, że logika zliczania tokenów obejmuje instrukcje systemowe, aby uniknąć zaniżania rozmiaru żądania. Zalecamy, aby instrukcje systemowe miały nie więcej niż 150 słów (100–200 tokenów).
- Testuj i ulepszaj: zachowanie modelu może się różnić w zależności od sformułowania. Przetestuj model z różnymi danymi wejściowymi użytkowników, aby upewnić się, że zachowuje on spójny charakter.