Claude Platform Docs
MessagesPensamiento

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:

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.

  1. 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)
  2. Captura el arreglo de contenido para devolverlo

    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.

    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"
          }
        }
      ]
    }
  3. 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 el tool_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)
  4. 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:

Pró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?