Ustaw instrukcje systemowe

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.