Saltar al contenido principal
Envía un reasoning_effort (Chat Completions) o un reasoning.effort (Responses) distinto en cualquier solicitud, y Phaseo cambia el esfuerzo de Claude sin reiniciar su caché de prompts. No tienes que cambiar nada más en tu código, siempre que devuelvas el razonamiento de Claude sin cambios en cada solicitud. Phaseo sigue enviando a Claude el esfuerzo de la primera solicitud de tu conversación y añade cada cambio como un marcador de esfuerzo después de tu nuevo mensaje. Todo lo que está antes del marcador se mantiene igual, así que Claude lo lee de la caché. Si descartas el razonamiento, Phaseo cambia en su lugar el esfuerzo de nivel superior, y Claude vuelve a procesar todo desde su primera respuesta en adelante en lugar de leerlo de la caché.

Cómo mantiene Phaseo la caché

Claude solo lee una conversación en caché cuando el inicio de la solicitud es idéntico byte a byte, y el esfuerzo de nivel superior forma parte de ese inicio. El esfuerzo por mensaje de Anthropic cambia el nivel dentro de messages, con un mensaje system que tiene content vacío y un output_config.effort. Phaseo escribe esos marcadores por ti: Phaseo no guarda nada entre solicitudes. Cada respuesta de Claude termina con una entrada de razonamiento que registra el nivel con el que se ejecutó, y Phaseo reconstruye cada marcador anterior, en el mismo lugar, a partir de las entradas que devuelves: Los mensajes que devuelves nunca se modifican. Los marcadores solo existen en la solicitud que Phaseo envía a Claude.

Devuelve el razonamiento sin cambios

Devuelve cada entrada de razonamiento exactamente como la recibiste, en cada solicitud: reasoning_details de Chat, elementos reasoning de Responses y bloques thinking de Anthropic, estén cifrados o no. No los descartes, edites, reordenes ni resumas. Sin ellos, un cambio de esfuerzo reinicia la caché de Claude, y Claude pierde su razonamiento entre los pasos del bucle de herramientas.
La entrada de esfuerzo no tiene texto. En Chat Completions es la última entrada reasoning.encrypted de reasoning_details:
En Responses es el último elemento reasoning de output, con un id que empieza por rs_effort_:
El valor es opaco, y Phaseo lo elimina antes de que la conversación llegue a cualquier proveedor.

Cambia el esfuerzo en tu código

Añade la respuesta completa de Claude a tu conversación y luego establece el esfuerzo que quieras en la siguiente solicitud. El cache_control de nivel superior activa la caché en las rutas de Claude; consulta Caché de prompts.

Chat Completions

Responses

Phaseo no guarda las respuestas, así que envía la conversación completa en input, incluidos todos los elementos de output.

Anthropic Messages

En /v1/messages, envía tú mismo el marcador: un mensaje system con content vacío y output_config.effort. Mantén el mismo output_config.effort de nivel superior en cada solicitud, y deja cada marcador en su sitio en las solicitudes posteriores. Phaseo añade la cabecera beta mid-conversation-output-config-2026-07-01, así que no tienes que enviarla.
cURL
La posición del marcador decide cuándo empieza el nuevo nivel:
  • Justo después de un mensaje de usuario: la respuesta de Claude a ese mensaje usa el nuevo nivel.
  • En cualquier otro lugar, por ejemplo entre la respuesta de Claude y tu siguiente mensaje, como en el ejemplo anterior: el nuevo nivel empieza con tu siguiente mensaje.
Un mensaje de usuario que solo contiene resultados de herramientas no cuenta como mensaje nuevo. En las rutas sin esfuerzo por mensaje, Phaseo elimina los marcadores y envía el nivel vigente como esfuerzo de nivel superior.

Cuándo el cambio reinicia la caché

Phaseo cambia el esfuerzo de nivel superior, como hace con otros proveedores, cuando:
  • Falta el razonamiento. Tu última respuesta de Claude no tiene entrada de esfuerzo, porque tu cliente descartó reasoning_details o los elementos reasoning.
  • El cambio llega entre pasos del bucle de herramientas. Tu último mensaje solo contiene resultados de herramientas, así que un marcador solo se aplicaría a partir de tu siguiente mensaje. Phaseo cambia el esfuerzo de nivel superior para que este paso se ejecute con el nivel que pediste, y los cambios posteriores vuelven a usar marcadores.
  • La solicitud no establece ningún esfuerzo o desactiva el razonamiento. Envía reasoning_effort o reasoning.effort en cada solicitud. "none" y reasoning.enabled: false desactivan el razonamiento.
  • La ruta no lo admite. Consulta Modelos compatibles.
Un cambio de nivel superior mantiene en la caché la parte de la conversación anterior a la primera respuesta de Claude. Claude vuelve a procesar todo desde esa respuesta en adelante y lo factura como entrada nueva.

Modelos compatibles

En las demás rutas, incluido Claude en Azure, un cambio de esfuerzo va al nivel superior.

Comprueba que la caché se mantuvo

Lee los recuentos de caché en la solicitud posterior a un cambio: usage.prompt_tokens_details.cached_tokens en Chat Completions, usage.input_tokens_details.cached_tokens en Responses y usage.cache_read_input_tokens en Anthropic Messages. Campos de uso y precios enumera todos los campos. Medimos la misma conversación de Chat Completions de cinco solicitudes en anthropic/claude-haiku-5.5 el 11 de noviembre de 2026, una vez devolviendo las entradas de esfuerzo y otra sin ellas. El esfuerzo fue high, high, low, low, high, y un documento de 3.400 tokens llegó en el segundo mensaje:
Última modificación el 12 de noviembre de 2026