Pensamiento en flujos de trabajo con herramientas y de múltiples turnos
Recorre un ciclo completo de uso de herramientas de dos turnos que preserva correctamente los bloques de pensamiento, y observa cómo el pensamiento intercalado cambia el flujo.
Esta página recorre un ciclo completo de "tool use" (uso de herramientas) de dos turnos con el pensamiento habilitado: Claude piensa, solicita una llamada a una herramienta, recibe el resultado y termina su respuesta, con los bloques de pensamiento manejados correctamente en cada paso. Las reglas completas se encuentran en la página de Pensamiento, en Pensamiento con uso de herramientas y Preservación de bloques de pensamiento; esta página muestra esas reglas aplicadas en código ejecutable.
Las reglas que aplica este recorrido
Cada enlace lleva al enunciado completo en la página de Pensamiento:
- Limita la elección de herramientas a
autoononeen modo manual: las opciones detool_choiceque fuerzan el uso de herramientas devuelven un error con el "extended thinking" (pensamiento extendido) manual (thinking: {type: "enabled"}); el pensamiento adaptativo admite el uso forzado de herramientas. - Mantén una sola configuración de pensamiento por turno del asistente: un bucle de uso de herramientas es un solo turno del asistente, así que cambia la configuración solo entre turnos.
- Devuelve los bloques de pensamiento completos y sin modificar: cuando devuelves un resultado de herramienta, los bloques de pensamiento del mensaje del asistente deben regresar junto con él.
- Repite el mensaje del asistente exactamente como lo recibiste: reconstruir el mensaje o filtrar los bloques
redacted_thinkingprovoca un error 400.
Los ejemplos usan pensamiento adaptativo; en modelos que solo admiten pensamiento extendido, sustituye thinking: {type: "enabled", budget_tokens: N}. Las reglas del ciclo son idénticas.
Recorre un ciclo de uso de herramientas de dos turnos
El ejemplo define una herramienta get_weather, deja que Claude piense y solicite una llamada a la herramienta, y luego devuelve el resultado de la herramienta junto con el turno del asistente repetido exactamente como se recibió, incluido el bloque de pensamiento.
Haz la primera solicitud con una herramienta disponible
Envía una solicitud con el pensamiento adaptativo habilitado y la herramienta definida. Aparte del parámetro
thinking, esta es una solicitud estándar de uso de herramientas:client = anthropic.Anthropic() weather_tool = { "name": "get_weather", "description": "Get current weather for a location", "input_schema": { "type": "object", "properties": {"location": {"type": "string", "description": "City name"}}, "required": ["location"], }, } # Primera solicitud: Claude responde con pensamiento y solicitud de herramienta response = client.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, tools=[weather_tool], messages=[{"role": "user", "content": "What's the weather in Paris?"}], ) print(response)Captura el arreglo de contenido para devolverlo
Deberías ver bloques
thinking,textytool_useen el contenido de la respuesta en una ejecución donde Claude eligió pensar (en solicitudes más simples, el modo adaptativo puede omitir el bloque de pensamiento). Mantén este arreglo de contenido intacto: el siguiente paso lo envía de vuelta textualmente.Output{ "content": [ { "type": "thinking", "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...", "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5T...." }, { "type": "text", "text": "I can help you get the current weather information for Paris. Let me check that for you" }, { "type": "tool_use", "id": "toolu_01CswdEQBMshySk6Y9DFKrfq", "name": "get_weather", "input": { "location": "Paris" } } ] }Devuelve el resultado de la herramienta, repitiendo el turno del asistente textualmente
Ejecuta la herramienta de tu lado y luego envía una segunda solicitud que agrega dos mensajes a la conversación. El primero es el contenido del asistente devuelto exactamente como se recibió, de modo que el bloque de pensamiento permanece sin cambios junto al bloque
tool_use. El segundo es un mensaje de usuario que lleva eltool_result.Cada ejemplo es un script autocontenido: repite la primera solicitud y luego envía inmediatamente la continuación usando la respuesta que acaba de recibir.
client = anthropic.Anthropic() weather_tool = { "name": "get_weather", "description": "Get current weather for a location", "input_schema": { "type": "object", "properties": {"location": {"type": "string", "description": "City name"}}, "required": ["location"], }, } response = client.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, tools=[weather_tool], messages=[{"role": "user", "content": "What's the weather in Paris?"}], ) # Extrae el bloque de uso de herramientas para obtener su ID para el resultado de la herramienta tool_use_block = next(block for block in response.content if block.type == "tool_use") # Llama a tu API de clima real; aquí iría tu llamada real a la API # Supongamos que esto es lo que recibimos weather_data = {"temperature": 88} # Segunda solicitud: incluye el turno del asistente y el resultado de la herramienta continuation = client.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, tools=[weather_tool], messages=[ {"role": "user", "content": "What's the weather in Paris?"}, # Repite el contenido del asistente exactamente como se recibió. Cuando hay un bloque # de pensamiento presente, debe acompañar al bloque tool_use. {"role": "assistant", "content": response.content}, { "role": "user", "content": [ { "type": "tool_result", "tool_use_id": tool_use_block.id, "content": f"Current temperature: {weather_data['temperature']}°F", } ], }, ], ) print(continuation)Lee la respuesta final
Deberías ver a Claude completar el turno con texto. Dado que el pensamiento intercalado es automático en el modo adaptativo, la continuación también puede comenzar con un nuevo bloque de pensamiento antes del texto final:
Output{ "content": [ { "type": "text", "text": "Currently in Paris, the temperature is 88°F (31°C)" } ] }
Cómo el pensamiento intercalado cambia el flujo
El "interleaved thinking" (pensamiento intercalado) permite que Claude piense entre llamadas a herramientas, razonando sobre cada resultado de herramienta antes de actuar en consecuencia. El concepto y la disponibilidad por modelo se cubren en Pensamiento intercalado en la página de Pensamiento; el intercalado cambia dónde aparecen los bloques de pensamiento, no si las llamadas a herramientas pueden encadenarse. La siguiente comparación muestra qué cambia el pensamiento intercalado en un flujo de trabajo de dos herramientas:
Sin pensamiento intercalado, Claude piensa una vez al inicio del turno del asistente. Las respuestas posteriores tras los resultados de herramientas continúan sin nuevos bloques de pensamiento.
User: "What's the total revenue if we sold 150 units at $50 each,
and how does this compare to our average monthly revenue?"
Response 1: [thinking] "I need to calculate 150 * $50, then check the database..."
[tool_use: calculator] { "expression": "150 * 50" }
↓ tool result: "7500"
Response 2: [tool_use: database_query] { "query": "SELECT AVG(revenue)..." }
↑ no thinking block
↓ tool result: "5200"
Response 3: [text] "The total revenue is $7,500, which is 44% above your
average monthly revenue of $5,200."
↑ no thinking blockCon el pensamiento intercalado habilitado, Claude puede pensar después de recibir cada resultado de herramienta, lo que le permite razonar sobre resultados intermedios antes de continuar.
User: "What's the total revenue if we sold 150 units at $50 each,
and how does this compare to our average monthly revenue?"
Response 1: [thinking] "I need to calculate 150 * $50 first..."
[tool_use: calculator] { "expression": "150 * 50" }
↓ tool result: "7500"
Response 2: [thinking] "Got $7,500. Now I should query the database to compare..."
[tool_use: database_query] { "query": "SELECT AVG(revenue)..." }
↑ thinking after receiving calculator result
↓ tool result: "5200"
Response 3: [thinking] "$7,500 vs $5,200 average - that's a 44% increase..."
[text] "The total revenue is $7,500, which is 44% above your
average monthly revenue of $5,200."
↑ thinking before final answerPróximos pasos
La descripción general: activa el pensamiento, lee la salida de pensamiento y revisa las reglas completas para el uso de herramientas, el almacenamiento en caché y el streaming.
Dirige con qué frecuencia y profundidad piensa Claude mediante niveles de esfuerzo y orientación basada en prompts.
Presupuestos de pensamiento manuales en modelos anteriores: mecánica de budget_tokens y migración al modo adaptativo.
Was this page helpful?