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 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.