Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Mid-conversation messaggi di sistema
È possibile aggiungere {"role": "system", ...} messaggi all'array. messages Questo aggiunge o aggiorna le istruzioni di sistema durante una conversazione senza invalidare il prefisso memorizzato nella cache.
In precedenza, le istruzioni di sistema potevano essere fornite solo tramite il parametro di primo livello. system In questo modo è possibile aggiornare le istruzioni senza reimpostare il contesto precedente.
Ciò è utile nei flussi di lavoro agentici in cui il modello deve adattarsi man mano che un'attività procede. Gli esempi includono l'introduzione di un nuovo vincolo a metà attività, l'aggiornamento del contesto autorevole o la modifica della guida degli strumenti per i turni successivi.
Modelli supportati
Questa funzionalità è disponibile solo su Claude Opus 4.8. Non è richiesta alcuna intestazione beta. Le richieste che includono role: "system" modelli non supportati restituiscono un. messages[] 400 invalid_request_error
Campi dei messaggi
| Campo | Tipo | Descrizione |
|---|---|---|
role |
Stringa | Obbligatorio. Deve essere system |
content |
Stringa o elenco di blocchi di testo | Obbligatorio. Usa una semplice stringa o blocchi di contenuto, come un messaggio utente o assistente. |
cache_control |
Oggetto | Opzionale. Stessa semantica del parametro di sistema di primo livello. |
Regole di posizionamento
Un {"role": "system"} messaggio in ingresso messages presenta i seguenti vincoli di posizionamento:
Non può essere la prima voce inserita
messages. Utilizza ilsystemcampo di primo livello per istruzioni valide sin dall'inizio.Deve seguire immediatamente un messaggio utente o un messaggio dell'assistente che termina con l'utilizzo di uno strumento server.
Deve essere l'ultimo inserito
messageso essere seguito da un turno di assistente.Non può essere adiacente a un altro messaggio di sistema. Non sono consentiti messaggi di sistema consecutivi.
Le richieste che violano queste regole di posizionamento restituiscono un400 invalid_request_error.
Regole sui contenuti
System-role il contenuto del messaggio supporta solo blocchi di testo. Immagini, documenti, blocchi di strumenti e citazioni non sono supportati.
Impostato content su una stringa semplice o su blocchi di contenuto. Le istruzioni si applicano da quel momento della conversazione in poi. Usa il system campo di primo livello per le istruzioni che dovrebbero essere applicate all'intera conversazione e utilizza i messaggi di sistema a metà conversazione per le istruzioni che diventano pertinenti in seguito.
Caching dei prompt
Mid-conversation i messaggi di sistema sono progettati per funzionare con il prompt caching. Memorizza nella cache il prefisso stable come al solito cache_control inserendolo nell'ultimo blocco che rimane invariato tra le richieste. Quindi aggiungi il messaggio di sistema dopo quel punto di interruzione. Poiché la nuova istruzione appare dopo il prefisso memorizzato nella cache, non modifica l'hash del prefisso e la cache può comunque essere visualizzata.
Una volta che un messaggio di sistema a metà conversazione diventa parte della cronologia stabile, può essere letto dalla cache nei turni successivi. Evita di modificare o rimuovere un messaggio di sistema inviato in precedenza a metà conversazione, poiché la modifica dei messaggi precedenti invalida la cache da quel momento in poi.
Per ulteriori informazioni sulla memorizzazione nella cache dei prompt, vedere Prompt caching per una più rapida inferenza del modello.
Comportamento di risposta
La forma della risposta è invariata. System-role i messaggi non vengono visualizzati nell'array dei contenuti della risposta. Il modello elabora le istruzioni del sistema ma non le riproduce nella sua risposta.
Esempio di codice
Il seguente esempio in Python dimostra come utilizzare i prompt del sistema a metà conversazione con Amazon Bedrock:
import boto3 import json client = boto3.client("bedrock-runtime", region_name="us-east-1") response = client.invoke_model( modelId="us.anthropic.claude-opus-4-8", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "system": "You are a helpful travel planning assistant.", "messages": [ {"role": "user", "content": "Help me plan a week in Paris."}, {"role": "assistant", "content": "I'd love to help! What kind of experience are you looking for?"}, {"role": "user", "content": "I want to see the major sights. What should I do on day one?"}, {"role": "system", "content": "The user has a budget of $150/day. Only suggest options that fit within this budget. Prioritize free attractions and affordable dining."} ] }) ) result = json.loads(response["body"].read()) print(result["content"][0]["text"])