Le istruzioni di sistema ti consentono di assegnare al modello un ruolo, impostare il tono delle risposte o fornire regole specifiche da seguire. Queste istruzioni sono separate dal prompt dell'utente e vengono trattate con una priorità più alta dal modello per garantire che si comporti come previsto.
I casi d'uso comuni includono:
- Impostazione di un ruolo: ad esempio, "Sei un tutor di matematica utile".
- Applicazione del formato di output: ad esempio, "Rispondi sempre con elenchi puntati".
- Impostazione di vincoli: ad esempio, "Non rispondere a domande sulla politica".
Prerequisiti
Le istruzioni di sistema funzionano sui dispositivi che eseguono Gemini Nano V3 e versioni successive. Per un elenco dei dispositivi supportati, vedi Supporto dei dispositivi per l'API Prompt.
Limitazioni
Non è consigliabile utilizzare le istruzioni di sistema con la memorizzazione nella cache dei prefissi. In generale, utilizza le istruzioni di sistema per istruzioni brevi che definiscono il comportamento del modello; utilizza la memorizzazione nella cache dei prefissi se devi ripetere una parte importante del prompt tra le query e devi ottimizzare le prestazioni.
Come utilizzare le istruzioni di sistema
Per fornire istruzioni di sistema, crea un oggetto SystemInstruction e passalo al builder 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
}
Puoi semplificare ulteriormente il codice passando le istruzioni di sistema direttamente nel builder di richieste 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
}
Best practice
Di seguito sono riportate alcune best practice per l'utilizzo delle istruzioni di sistema:
- Sii chiaro e diretto: il modello segue meglio le istruzioni chiare e dirette rispetto a quelle ambigue. Ecco alcuni esempi:
- Vago (da evitare): "Non scrivere troppo. Cerca di essere utile e cordiale e formatta l'output in modo appropriato".
- Chiaro (consigliato): "Sei un assistente di assistenza clienti cordiale. Limita le risposte a un massimo di 3 frasi. Formatta gli elenchi utilizzando gli elenchi puntati".
- Sii conciso: anche se le istruzioni di sistema sono potenti, le istruzioni molto lunghe possono consumare la finestra contestuale limitata del modello.
- Tieni conto del conteggio dei token: assicurati che la logica di conteggio dei token includa le istruzioni di sistema per evitare di sottostimare le dimensioni della richiesta. Ti consigliamo di mantenere le istruzioni di sistema sotto le 150 parole (100-200 token).
- Testa ed esegui l'iterazione: il comportamento del modello può variare in base alla formulazione. Esegui test con vari input utente per assicurarti che il modello mantenga il suo ruolo in modo coerente.