View a markdown version of this page

Mid-conversation messages du système - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mid-conversation messages du système

Vous pouvez ajouter des {"role": "system", ...} messages au messages tableau. Cela permet d'ajouter ou de mettre à jour les instructions système en cours de conversation sans invalider le préfixe mis en cache.

Auparavant, les instructions système ne pouvaient être fournies que par le biais du system paramètre de niveau supérieur. Cela permet de mettre à jour les instructions sans réinitialiser le contexte antérieur.

Cela est utile dans les flux de travail agentiques où le modèle doit s'adapter au fur et à mesure de l'avancement d'une tâche. Les exemples incluent l'introduction d'une nouvelle contrainte en cours de tâche, l'actualisation du contexte autoritaire ou la modification des instructions des outils pour les tournants ultérieurs.

Modèles pris en charge

Cette fonctionnalité n'est disponible que sur Claude Opus 4.8. Aucun en-tête bêta n'est requis. Les demandes incluses role: "system" dans messages[] des modèles non pris en charge renvoient un400 invalid_request_error.

Champs de message

Champ Type Description
role String Obligatoire. Doit être system
content Chaîne ou liste de blocs de texte Obligatoire. Utilisez une chaîne simple ou des blocs de contenu, comme dans le cas d'un message d'utilisateur ou d'assistant.
cache_control Objet Facultatif. Même sémantique que le paramètre système de niveau supérieur.

Règles de placement

Les contraintes de placement messages d'un {"role": "system"} message sont les suivantes :

  • Il ne peut pas s'agir de la première entréemessages. Utilisez le system champ de niveau supérieur pour obtenir les instructions qui s'appliquent dès le début.

  • Doit suivre immédiatement un message utilisateur ou un message d'assistant qui se termine par l'utilisation d'un outil serveur.

  • Il doit s'agir de la dernière inscription messages ou être suivie d'un tour d'assistant.

  • Ne peut pas être adjacent à un autre message système. Les messages système consécutifs ne sont pas autorisés.

Les demandes qui enfreignent ces règles de placement renvoient un400 invalid_request_error.

Règles relatives au contenu

System-role le contenu du message ne prend en charge que les blocs de texte. Les images, les documents, les blocs d'outils et les citations ne sont pas pris en charge.

contentDéfini sur une chaîne simple ou sur des blocs de contenu. L'instruction s'applique à partir de ce moment de la conversation. Utilisez le system champ de niveau supérieur pour les instructions qui doivent s'appliquer à l'ensemble de la conversation, et utilisez les messages système en milieu de conversation pour les instructions qui deviendront pertinentes ultérieurement.

Mise en cache des invites

Mid-conversation les messages système sont conçus pour fonctionner avec une mise en cache rapide. Mettez en cache le préfixe stable comme d'habitude en le plaçant cache_control sur le dernier bloc qui reste inchangé d'une requête à l'autre. Ajoutez ensuite le message système après ce point d'arrêt. Comme la nouvelle instruction apparaît après le préfixe mis en cache, elle ne modifie pas le hachage du préfixe et le cache peut toujours être activé.

Une fois qu'un message système en cours de conversation fait partie de l'historique stable, il peut lui-même être lu depuis le cache lors des tours suivants. Évitez de modifier ou de supprimer un message système déjà envoyé en cours de conversation, car la modification de messages antérieurs invalide le cache à partir de ce moment.

Pour plus d'informations sur la mise en cache rapide, consultez la section Mise en cache rapide pour une inférence de modèle plus rapide.

Comportement de réponse

La forme de réponse est inchangée. System-role les messages n'apparaissent pas dans le tableau de contenu des réponses. Le modèle traite les instructions du système mais ne les renvoie pas dans sa réponse.

Exemple de code

L'exemple Python suivant montre comment utiliser les instructions du système en milieu de conversation avec 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"])