Para saber cómo se aplica la retención cero de datos (ZDR) a esta función, consulta API y retención de datos.
Esta página recorre un ciclo completo de 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.
Cada enlace lleva a la declaración completa en la página de Pensamiento:
auto o none en modo manual: las opciones de tool_choice que fuerzan el uso de herramientas devuelven un error con el pensamiento extendido manual (thinking: {type: "enabled"}); el pensamiento adaptativo admite el uso forzado de herramientas.redacted_thinking provoca 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 de ida y vuelta son idénticas.
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 reenviado 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 reenviarlo
Deberías ver bloques thinking, text y tool_use en 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.
Para ver texto de pensamiento como esta salida, agrega display: "summarized" a la solicitud. En modelos donde la visualización está omitida de forma predeterminada, incluido claude-opus-4-8, el campo thinking de lo contrario regresa como una cadena vacía con solo el campo signature poblado. De cualquier manera, reenvía el arreglo de contenido sin cambios; consulta Control de la visualización del pensamiento.
{
"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, reenviando el turno del asistente textualmente
Ejecuta la herramienta de tu lado, luego envía una segunda solicitud que agrega dos mensajes a la conversación. El primero es el contenido del asistente reenviado 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 el tool_result.
Cada ejemplo es un script autocontenido: repite la primera solicitud y luego envía inmediatamente el seguimiento 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 tool_use para obtener su ID para el tool_result
tool_use_block = next(block for block in response.content if block.type == "tool_use")
# Llama a tu API del clima real, aquí es donde 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 tool_result
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. Debido a que el pensamiento intercalado es automático en el modo adaptativo, la continuación también puede abrirse con un nuevo bloque de pensamiento antes del texto final:
{
"content": [
{
"type": "text",
"text": "Currently in Paris, the temperature is 88°F (31°C)"
}
]
}El pensamiento intercalado permite que Claude piense entre llamadas a herramientas, razonando sobre cada resultado de herramienta antes de actuar sobre él. 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 lo que el pensamiento intercalado cambia en un flujo de trabajo con dos herramientas:
La descripción general: activa el pensamiento, lee la salida del pensamiento y revisa las reglas completas para el uso de herramientas, el almacenamiento en caché y el streaming.
Dirige con qué frecuencia y con qué profundidad piensa Claude con niveles de esfuerzo y orientación basada en prompts.
Presupuestos de pensamiento manuales en modelos más antiguos: mecánica de budget_tokens y migración al modo adaptativo.
Was this page helpful?