Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Mid-conversation mensajes del sistema
Puede añadir {"role": "system", ...} mensajes a la messages matriz. Esto añade o actualiza las instrucciones del sistema a mitad de una conversación sin invalidar el prefijo almacenado en caché.
Anteriormente, las instrucciones del sistema solo podían proporcionarse a través del parámetro de nivel superior. system Esto permite actualizar las instrucciones sin restablecer el contexto anterior.
Esto resulta útil en los flujos de trabajo de los agentes, en los que el modelo debe adaptarse a medida que avanza una tarea. Los ejemplos incluyen la introducción de una nueva restricción a mitad de la tarea, la actualización del contexto autoritario o el cambio de la guía de la herramienta para turnos posteriores.
Modelos compatibles
Esta función solo está disponible en Claude Opus 4.8. No se requiere ningún encabezado beta. Las solicitudes que se incluyen role: "system" messages[] en modelos no compatibles devuelven un400 invalid_request_error.
Campos de mensajes
| Campo | Tipo | Descripción |
|---|---|---|
role |
Cadena | Obligatorio. Debe ser system |
content |
Cadena o lista de bloques de texto | Obligatorio. Utilice una cadena simple o bloques de contenido, igual que un mensaje de usuario o asistente. |
cache_control |
Objeto | Opcional. La misma semántica que el parámetro del sistema de nivel superior. |
Reglas de colocación
Un {"role": "system"} mensaje entrante messages tiene las siguientes restricciones de ubicación:
No puede ser la primera entrada en él
messages. Utilice elsystemcampo de nivel superior para ver las instrucciones que se aplican desde el principio.Debe seguir inmediatamente a un mensaje de usuario o a un mensaje de asistente que termine con el uso de una herramienta de servidor.
Debe ser el último en entrar
messageso ir seguido de un turno de asistente.No puede estar junto a otro mensaje del sistema. No se permiten mensajes consecutivos del sistema.
Las solicitudes que infrinjan estas reglas de colocación devuelven un400 invalid_request_error.
Reglas de contenido
System-role el contenido de los mensajes solo admite bloques de texto. No se admiten imágenes, documentos, bloques de herramientas ni citas.
contentEstablézcalo en una cadena simple o en bloques de contenido. La instrucción se aplica a partir de ese punto de la conversación. Usa el system campo de nivel superior para ver las instrucciones que deberían aplicarse a toda la conversación y usa los mensajes del sistema a mitad de la conversación para obtener instrucciones que sean relevantes más adelante.
Almacenamiento en caché de peticiones
Mid-conversation los mensajes del sistema están diseñados para funcionar con un rápido almacenamiento en caché. El prefijo estable se guarda en caché, como de costumbre, colocándolo cache_control en el último bloque que permanece inalterado en todas las solicitudes. A continuación, añada el mensaje del sistema tras ese punto de interrupción. Como la nueva instrucción aparece después del prefijo almacenado en caché, no cambia el hash del prefijo y la caché aún puede activarse.
Una vez que un mensaje del sistema a mitad de una conversación pasa a formar parte del historial estable, se puede leer de la memoria caché en los turnos siguientes. Evita editar o eliminar un mensaje del sistema enviado anteriormente a mitad de una conversación, ya que al cambiar los mensajes anteriores se invalida la memoria caché a partir de ese momento.
Para obtener más información sobre el almacenamiento rápido en caché, consulte Almacenamiento rápido en caché para una inferencia más rápida del modelo.
Comportamiento de respuesta
La forma de la respuesta no ha cambiado. System-role los mensajes no aparecen en la matriz de contenido de la respuesta. El modelo procesa las instrucciones del sistema pero no las repite en su respuesta.
Ejemplo de código
En el siguiente ejemplo de Python, se muestra cómo utilizar las indicaciones del sistema a mitad de una conversación 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"])