Claude Platform Docs
MensajesEsfuerzo

Esfuerzo por mensaje

Usa un mensaje del sistema para cambiar el nivel de esfuerzo a mitad de una conversación y conservar la caché de prompts.

Un cambio de esfuerzo por mensaje establece un nuevo nivel de esfuerzo para los turnos posteriores de una conversación sin cambiar el valor de nivel superior de la solicitud, por lo que el prefijo almacenado en caché sigue coincidiendo.

Cambiar el nivel de esfuerzo

Para cambiar el nivel a mitad de una conversación:

  1. Agrega un mensaje role: "system" a messages, con content vacío y el nuevo nivel de esfuerzo en output_config.effort.
  2. Envía el encabezado beta mid-conversation-output-config-2026-07-01.
  3. Deja el valor de nivel superior sin cambios.

El siguiente ejemplo mantiene el valor de nivel superior en high y baja a low para un seguimiento rutinario:

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-fable-5-1",
    max_tokens=4096,
    output_config={"effort": "high"},
    messages=[
        {
            "role": "user",
            "content": "Plan a migration from SQLite to PostgreSQL in three short steps.",
        },
        {
            "role": "assistant",
            "content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.",
        },
        # Mensaje del sistema solo de esfuerzo: el nuevo nivel se aplica a partir del siguiente turno del usuario.
        {"role": "system", "content": [], "output_config": {"effort": "low"}},
        {"role": "user", "content": "Summarize the plan in one sentence."},
    ],
    betas=["mid-conversation-output-config-2026-07-01"],
)

for block in response.content:
    if block.type == "text":
        print(block.text)

La posición del mensaje decide cuándo comienza el nuevo nivel:

  • Directamente después de un turno user con nueva entrada: la respuesta de Claude a ese turno usa el nuevo nivel.
  • En cualquier otra posición, como entre un turno assistant y el siguiente turno user como en el ejemplo anterior: el nuevo nivel comienza en el siguiente turno user con nueva entrada.

Un turno user que solo contiene bloques tool_result no cuenta como nueva entrada.

El nuevo nivel permanece vigente hasta que un mensaje posterior lo cambie.

Coloca el mensaje después de todo lo que ya hayas enviado y mantenlo en su lugar en las solicitudes posteriores. No lo insertes antes de turnos que ya hayas enviado, y no lo muevas ni lo elimines más adelante. En los modelos con “preserved thinking” (pensamiento preservado), cualquiera de esos cambios invalida los bloques de pensamiento en los turnos assistant posteriores al mensaje. Qué hace la API con un bloque no válido explica lo que sucede a continuación.

Si está junto a un mensaje system que tiene contenido, ambos mensajes deben seguir las reglas de ubicación para mensajes del sistema a mitad de la conversación.

Con la API InvokeModel de Amazon Bedrock, envía el valor beta en el arreglo anthropic_beta del cuerpo de la solicitud en lugar del encabezado. Para conocer los modelos que admiten el esfuerzo por mensaje allí, consulta Mensajes del sistema a mitad de la conversación en Bedrock.

Errores

  • Sin el encabezado beta, un output_config por mensaje devuelve un error 400: messages.N.output_config: Extra inputs are not permitted, donde N es el índice del mensaje system en messages.
  • Con el encabezado beta, los modelos sin esfuerzo por mensaje, como Claude Fable 5, devuelven un error 400: output_config.effort requires a model that supports per-turn effort; this model does not. En Amazon Bedrock, esos modelos y Claude Opus 5 devuelven Extra inputs are not permitted en su lugar.
  • En Claude Sonnet 5.5 con thinking: {"type": "between_tools"} y en Claude Haiku 5.5 con thinking: {"type": "disabled"}, no puedes cambiar el nivel de esfuerzo a mitad de la conversación. En esos casos, un output_config.effort por mensaje con un nuevo nivel devuelve un error 400. Para variar el esfuerzo en cada turno, usa el pensamiento adaptativo.

Esfuerzo por mensaje o de nivel superior

Prefiere el esfuerzo por mensaje en lugar de cambiar el valor de nivel superior entre solicitudes. Un cambio por mensaje deja sin cambios todo lo anterior, por lo que el prefijo almacenado en caché sigue coincidiendo. Un cambio de nivel superior reinicia la caché. En Claude Fable 5.1, un cambio de nivel superior además dirige el modelo de forma menos confiable. Las respuestas anteriores del modelo se escribieron con el nivel previo, y el modelo tiende a mantenerse coherente con ellas.

Disponibilidad

Esfuerzo por mensaje
Estado
Beta
API
  • Messages API
  • Managed Agents No compatible
Encabezado beta
Requiere
Modelos
  • Claude Fable 5.2, Fable 5.1
  • Claude Mythos 5.2, Mythos 5.1
  • Claude Opus 5.5, Opus 5
  • Claude Sonnet 5.5
  • Claude Haiku 5.5

¿Te resultó útil esta página?