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'messagesarray. Ciò 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 l'attività procede. Gli esempi includono l'introduzione di un nuovo vincolo durante l'attività, l'aggiornamento del contesto autorevole o la modifica della guida agli strumenti per i turni successivi.
Modelli supportati
Questa funzionalità è disponibile solo su Claude Opus 4.8. Non è richiesto alcun header beta. Le richieste che includono role: "system" modelli non supportati restituiscono a. 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 stringa semplice 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 entrata messages presenta i seguenti vincoli di posizionamento:
Non può essere il primo ingresso.
messagesUtilizza ilsystemcampo di primo livello per istruzioni valide fin 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 arrivato
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 dei messaggi supporta solo blocchi di testo. Immagini, documenti, blocchi di strumenti e citazioni non sono supportati.
Imposta content su una stringa semplice o su blocchi di contenuto. Le istruzioni si applicano da quel momento in poi della conversazione. Utilizza il system campo di primo livello per le istruzioni da applicare all'intera conversazione e utilizza i messaggi di sistema a metà conversazione per istruzioni che diventeranno pertinenti in seguito.
Caching dei prompt
Mid-conversation i messaggi di sistema sono progettati per funzionare con la memorizzazione rapida nella cache. Come al solito, memorizza nella cache il prefisso stabile inserendolo cache_control nell'ultimo blocco che rimane invariato tra le richieste. Quindi aggiungi il messaggio di sistema dopo quel punto di interruzione. Poiché la nuova istruzione viene visualizzata dopo il prefisso memorizzato nella cache, non modifica l'hash del prefisso e la cache può comunque funzionare.
Una volta che un messaggio del sistema a metà conversazione entra a far 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, consulta Prompt caching per un'inferenza dei modelli più rapida.
Comportamento di risposta
La forma di risposta è invariata. System-role i messaggi non vengono visualizzati nell'array del contenuto della risposta. Il modello elabora le istruzioni del sistema ma non le riproduce nella risposta.
Esempio di codice
Il seguente esempio in Python dimostra come utilizzare i prompt di 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"])