

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de la herramienta Anthropic Claude
<a name="model-parameters-anthropic-claude-messages-tool-use"></a>

**aviso**  
Como se indica, varias de las siguientes funciones se ofrecen en versión beta. Estas funciones están disponibles para usted como un «Servicio Beta», tal y como se define en las Condiciones del AWS Servicio. Está sujeto a su acuerdo con AWS él, a las condiciones del AWS servicio y al modelo de EULA aplicable.

Con los modelos Anthropic Claude, puede especificar una herramienta que el modelo puede usar para responder a un mensaje. Por ejemplo, puede especificar una herramienta que obtiene la canción más popular de una emisora de radio. Si el usuario pasa el mensaje *¿Cuál es la canción más popular en la emisora WZPZ?*, el modelo determina que la herramienta que usted ha especificado puede ayudar a responder la pregunta. En su respuesta, el modelo solicita que usted ejecute la herramienta en su nombre. A continuación, ejecuta la herramienta y pasa el resultado de la herramienta al modelo, que generará una respuesta para el mensaje original. Para obtener más información, consulte [Uso de herramientas (llamada a funciones)](https://docs.anthropic.com/en/docs/tool-use) en la documentación de Anthropic Claude.

**sugerencia**  
Le recomendamos que utilice la API Converse para integrar el uso de la herramienta en la aplicación. Para obtener más información, consulte [Uso de una herramienta para completar una respuesta modelo de Amazon Bedrock](tool-use.md). 

**importante**  
Claude Sonnet 4.5 ahora conserva el formato intencionado en los parámetros de las cadenas de llamada a herramientas. Anteriormente, las líneas nuevas al final de los parámetros de cadena a veces se eliminaban incorrectamente. Esta corrección garantiza que las herramientas que requieren un formato preciso (como los editores de texto) reciban los parámetros exactamente como está previsto. Se trata de una mejora entre bastidores que no requiere cambios en la API. Sin embargo, las herramientas con parámetros de cadena ahora pueden recibir valores con nuevas líneas finales que antes se eliminaban.

**nota**  
Claude Sonnet 4.5 incluye optimizaciones automáticas para mejorar el rendimiento del modelo. Estas optimizaciones pueden añadir pequeñas cantidades de tokens a las solicitudes, pero no se le facturarán los tokens añadidos por el sistema.

Especifique las herramientas que quiere poner a disposición de un modelo en el campo `tools`. El siguiente ejemplo es de una herramienta que obtiene la canción más popular de una emisora de radio. 

```
[
    {
        "name": "top_song",
        "description": "Get the most popular song played on a radio station.",
        "input_schema": {
            "type": "object",
            "properties": {
                "sign": {
                    "type": "string",
                    "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP."
                }
            },
            "required": [
                "sign"
            ]
        }
    }
]
```

Cuando el modelo necesita una herramienta para generar una respuesta a un mensaje, devuelve información sobre la herramienta solicitada y la entrada en la herramienta en el campo `content` del mensaje. También establece el motivo de parada de la respuesta a `tool_use`.

```
{
    "id": "msg_bdrk_01USsY5m3XRUF4FCppHP8KBx",
    "type": "message",
    "role": "assistant",
    "model": "claude-3-sonnet-20240229",
    "stop_sequence": null,
    "usage": {
        "input_tokens": 375,
        "output_tokens": 36
    },
    "content": [
        {
            "type": "tool_use",
            "id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy",
            "name": "top_song",
            "input": {
                "sign": "WZPZ"
            }
        }
    ],
    "stop_reason": "tool_use"
}
```

En su código, llame a la herramienta en nombre de la herramienta. A continuación, pase el resultado de la herramienta (`tool_result`) en un mensaje de usuario al modelo.

```
{
    "role": "user",
    "content": [
        {
            "type": "tool_result",
            "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy",
            "content": "Elemental Hotel"
        }
    ]
}
```

En su respuesta, el modelo utiliza el resultado de la herramienta para generar una respuesta para el mensaje original.

```
{
    "id": "msg_bdrk_012AaqvTiKuUSc6WadhUkDLP",
    "type": "message",
    "role": "assistant",
    "model": "claude-3-sonnet-20240229",
    "content": [
        {
            "type": "text",
            "text": "According to the tool, the most popular song played on radio station WZPZ is \"Elemental Hotel\"."
        }
    ],
    "stop_reason": "end_turn"
}
```

## Fine-grained transmisión de herramientas
<a name="model-parameters-anthropic-claude-messages-fine-grained-tool-streaming"></a>

Fine-grained la transmisión de herramientas es una capacidad Anthropic Claude modelo disponible con Claude Sonnet 4.5Claude Haiku 4.5,Claude Sonnet 4, y Claude Opus 4. Con la transmisión de herramientas detallada, los desarrolladores de Claude pueden transmitir los parámetros de uso de las herramientas sin necesidad de almacenar en búfer ni validar los objetos JSON, lo que reduce la latencia necesaria para empezar a recibir parámetros de gran tamaño.

**nota**  
Al utilizar herramientas de transmisión detallada es posible que reciba entradas JSON parciales o no válidas. Asegúrese de tener en cuenta estos casos límites en su código.

Para utilizar esta característica, simplemente añada el encabezado `fine-grained-tool-streaming-2025-05-14` a una solicitud de uso de herramienta.

A continuación, se muestra un ejemplo de cómo especificar el encabezado de transmisión de herramienta detallada:

```
{
  "anthropic_version": "bedrock-2023-05-31",
  "max_tokens": 1024,
  "anthropic_beta": ["fine-grained-tool-streaming-2025-05-14"],
  "messages": [
    {
      "role": "user",
      "content": "Can you write a long poem and make a file called poem.txt?"
    }
  ],
  "tools": [
    {
      "name": "make_file",
      "description": "Write text to a file",
      "input_schema": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "description": "The filename to write text to"
          },
          "lines_of_text": {
            "type": "array",
            "description": "An array of lines of text to write to the file"
          }
        },
        "required": [
          "filename",
          "lines_of_text"
        ]
      }
    }
  ]
}
```

En este ejemplo, la transmisión de herramienta detallada permite a Claude transmitir las líneas de un poema largo a la llamada de herramienta `make_file` sin necesidad de almacenarlo en búfer para validar si el parámetro `lines_of_text` es un JSON válido. Esto significa que puede ver el flujo de parámetros a medida que llega, sin tener que esperar a que todo el parámetro se almacene en búfer y se valide.

Con la transmisión de herramientas detallada, los fragmentos de uso de herramienta comienzan a transmitirse más rápido y, a menudo, son más largos y contienen menos saltos de palabras. Esto se debe a las diferencias en el comportamiento de fragmentación.

Por ejemplo, sin transmisión detallada (15 segundos de retraso):

```
Chunk 1: '{"'
Chunk 2: 'query": "Ty'
Chunk 3: 'peScri'
Chunk 4: 'pt 5.0 5.1 '
Chunk 5: '5.2 5'
Chunk 6: '.3'
Chunk 8: ' new f'
Chunk 9: 'eatur'
...
```

Con transmisión detallada (3 segundos de retraso):

```
Chunk 1: '{"query": "TypeScript 5.0 5.1 5.2 5.3'
Chunk 2: ' new features comparison'
```

**nota**  
Como la transmisión detallada envía parámetros sin almacenamiento en búfer ni validación de JSON, no hay garantías de que el flujo resultante se complete en una cadena JSON válida. En concreto, si se alcanza el valor de `max_tokens` de motivo de la parada, el flujo puede terminar a la mitad de un parámetro y puede estar incompleto. Por lo general, tendrá que escribir una lógica específica para gestionar cuándo se alcanza `max_tokens`.

## Uso de computadora (Beta)
<a name="model-parameters-anthropic-claude-messages-computer-use"></a>

Computer Use es una familia de Anthropic Claude herramientas (en versión beta) para automatizar las tareas de la interfaz gráfica de usuario (GUI). Para obtener una descripción general, el formulario de Bedrock-specific solicitud de Amazon y un ejemplo de principio a fin, consulte[Utilice herramientas informáticas para automatizar las tareas de la interfaz gráfica de usuario con los modelos de Amazon Bedrock](computer-use.md). Para saber qué modelos admiten el uso de ordenadores en cada terminal, consulta la tabla de *capacidades y características* de cada uno de ellos[Los modelos de un vistazo](model-cards.md).

Para habilitar el uso del ordenador cuando se solicite, `anthropic_beta` defina una versión para uso informático e incluya una entrada de herramienta que `type` coincida con esa versión. Los emparejamientos válidos son:


| Encabezado Beta | Tipo de herramienta informática | 
| --- | --- | 
| computer-use-2025-11-24 | computer\_20251124 | 
| computer-use-2025-01-24 | computer\_20250124 | 
| computer-use-2024-10-22 | computer\_20241022 | 

Cada tipo de herramienta solo funciona con un subconjunto específico de modelos. Al enviar un tipo de herramienta que un modelo no admite, se devuelve un `400 invalid_request_error` con un mensaje como`'claude-opus-4-7' does not support tool types: computer_20241022`. Confirme la compatibilidad en la tabla de *capacidades y características* del modelo antes de enviar las solicitudes.

Para conocer el protocolo de la herramienta subyacente, el vocabulario completo de acciones y una guía de ingeniería rápida, consulte [Uso del ordenador](https://docs.anthropic.com/en/docs/build-with-claude/computer-use) en la Anthropic documentación.

## Anthropic herramientas definidas
<a name="model-parameters-anthropic-anthropic-defined-tools"></a>

Anthropicproporciona un conjunto de herramientas predefinidas que Claude los modelos pueden utilizar para interactuar con los ordenadores. Al especificar una herramienta Anthropic definida, los `tool_schema` campos `description` y no son necesarios ni están permitidos. El modelo no ejecuta estas herramientas automáticamente; debe ejecutar cada acción solicitada y devolver un `tool_result` aClaude. Para saber cuáles de estas herramientas acepta cada modelo, consulte la tabla de *capacidades y características* del modelo[Los modelos de un vistazo](model-cards.md); si envía un tipo de herramienta que el modelo no admite, se devuelve un`400 invalid_request_error`.


| Herramienta | Notas | 
| --- | --- | 
|  <pre>{ <br />    "type": "computer_20251124", <br />    "name": "computer" <br />}</pre>  | La última herramienta de uso informático. Use con `"anthropic_beta": ["computer-use-2025-11-24"]`. | 
|  <pre>{ <br />    "type": "computer_20250124", <br />    "name": "computer" <br />}</pre>  | Use con `"anthropic_beta": ["computer-use-2025-01-24"]`. | 
|  <pre>{ <br />    "type": "computer_20241022", <br />    "name": "computer" <br />}</pre>  | Legado. Use con `"anthropic_beta": ["computer-use-2024-10-22"]`. | 
|  <pre>{ <br />    "type": "text_editor_20250124", <br />    "name": "str_replace_based_edit_tool" <br />}</pre>  | Actualización a la `str_replace_editor` herramienta existente. Úselo con `"anthropic_beta": ["computer-use-2025-01-24"]` o`["computer-use-2025-11-24"]`. | 
|  <pre>{ <br />    "type": "text_editor_20241022", <br />    "name": "str_replace_editor" <br />}</pre>  | Legado. Use con `"anthropic_beta": ["computer-use-2024-10-22"]`. | 
|  <pre>{ <br />    "type": "bash_20250124", <br />    "name": "bash" <br />}</pre>  | Úselo con `"anthropic_beta": ["computer-use-2025-01-24"]` o`["computer-use-2025-11-24"]`. | 
|  <pre>{ <br />    "type": "bash_20241022", <br />    "name": "bash" <br />}</pre>  | Legado. Use con `"anthropic_beta": ["computer-use-2024-10-22"]`. | 

El `type` campo identifica la herramienta y sus parámetros con fines de validación; el `name` campo es el nombre de la herramienta expuesto al modelo.

Si desea solicitar al modelo que utilice una de estas herramientas, puede hacer referencia explícita a la herramienta mediante el campo `name`. El `name` campo debe ser único en la lista de herramientas; no se puede definir una herramienta con lo mismo `name` que una herramienta Anthropic definida en la misma llamada a la API.

## Borrado automático de llamadas a herramientas (beta)
<a name="model-parameters-anthropic-claude-automatic-tool-call-clearing"></a>

**aviso**  
La compensación automática de llamadas a herramientas está disponible como un «servicio beta», tal como se define en las condiciones del AWS servicio.

**nota**  
Actualmente, esta función es compatible con Claude Sonnet 4/4 5.5, Claude Haiku 4.5 y Claude Opus. 4/4 1/45.

La eliminación automática de llamadas a herramientas es una función del modelo Anthropic Claude (en versión beta). Con esta función, Claude puede borrar automáticamente los resultados de uso de herramientas antiguas a medida que se acerque a los límites simbólicos, lo que permite una gestión del contexto más eficiente en escenarios de uso de herramientas de varios turnos. Para utilizar el borrado del uso de herramientas, debe añadir `context-management-2025-06-27` a la lista de encabezados beta del parámetro de solicitud anthropic\_beta. También tendrá que especificar el uso de las siguientes opciones de configuración `clear_tool_uses_20250919` y elegir entre ellas.

Estos son los controles disponibles para la estrategia de administración del contexto de `clear_tool_uses_20250919`. Todos son opcionales o tienen valores predeterminados:


| **Opción de configuración** | **Descripción** | 
| --- | --- | 
| `trigger`<br />predeterminado: 100 000 tokens de entrada | Define cuándo se activa la estrategia de edición de contexto. Una vez que la petición supere este umbral, empezará el borrado. Puede especificar este valor en input\_tokens o tool\_uses. | 
| `keep`<br />predeterminado: 3 usos de herramientas | Define el número de use/result pares de herramientas recientes que se van a conservar una vez se haya realizado el borrado. La API elimina primero las interacciones de herramientas más antiguas y conserva las más recientes. Resulta útil cuando el modelo necesita acceder a las interacciones recientes con las herramientas para continuar la conversación de forma eficaz. | 
| `clear_at_least` (opcional) | Garantiza que se elimine un número mínimo de tokens cada vez que se active la estrategia. Si la API no puede eliminar al menos la cantidad especificada, la estrategia no se aplicará. Esto resulta útil para determinar si vale la pena interrumpir la caché de peticiones para borrar el contexto. | 
| `exclude_tools` (opcional) | Lista de nombres de herramientas cuyos usos y resultados nunca deben borrarse. Útil para preservar un contexto importante. | 
| `clear_tool_inputs` (opcional, valor predeterminado: false) | Controla si los parámetros de llamada a la herramienta se borran junto con los resultados de la herramienta. De forma predeterminada, solo se borran los resultados de la herramienta y se mantienen visibles las llamadas a herramienta originales de Claude, de modo que Claude pueda saber qué operaciones se han realizado incluso después de eliminar los resultados. | 

**nota**  
Al borrar las herramientas, se invalidará la memoria caché si los prefijos contienen las herramientas.

**importante**  
La herramienta de `web_search_20250305` servidor Anthropic no es compatible con Amazon Bedrock.

------
#### [ Request ]

```
from anthropic import AnthropicBedrock

client = AnthropicBedrock()

response = client.beta.messages.create(
    betas=["context-management-2025-06-27"],
    model="claude-sonnet-4-20250514",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "Create a simple command line calculator app using Python"
       }
    ],
    tools=[
        {
            "type": "text_editor_20250728",
            "name": "str_replace_based_edit_tool",
            "max_characters": 10000
        }
    ],
    extra_body={
        "context_management": {
            "edits": [
                {
                    "type": "clear_tool_uses_20250919",
                # The below parameters are OPTIONAL:
                    # Trigger clearing when threshold is exceeded
                    "trigger": {
                        "type": "input_tokens",
                        "value": 30000
                    },
                    # Number of tool uses to keep after clearing
                    "keep": {
                        "type": "tool_uses",
                        "value": 3
                    },
                    # Optional: Clear at least this many tokens
                    "clear_at_least": {
                        "type": "input_tokens",
                        "value": 5000
                    },
                    # Exclude these tools uses from being cleared
                    "exclude_tools": ["str_replace_based_edit_tool"]
                }
            ]
       }
    }
 )
```

------
#### [ Response ]

```
{
    "id": "msg_123",
    "type": "message",
    "role": "assistant",
    "content": [
        {
            "type": "tool_use",
            "id": "toolu_456",
            "name": "data_analyzer",
            "input": {
                "data": "sample data"
            }
        }
    ],
    "context_management": {
        "applied_edits": [
            {
                "type": "clear_tool_uses_20250919",
                "cleared_tool_uses": 8,  # Number of tool use/result pairs that were cleared
                "cleared_input_tokens": 50000  # Total number of input tokens removed from the prompt
            }
        ]
    }
    "stop_reason": "tool_use",
    "usage": {
        "input_tokens": 150,
        "output_tokens": 50
    }
}
```

------
#### [ Streaming Response ]

```
data: {"type": "message_start", "message": {"id": "msg_123", "type": "message", "role": "assistant"}}

data: {"type": "content_block_start", "index": 0, "content_block": {"type": "tool_use", "id": "toolu_456", "name": "data_analyzer", "input": {}}}

data: {"type": "content_block_delta", "index": 0, "delta": {"type": "input_json_delta", "partial_json": "{\"data\": \"sample"}}

data: {"type": "content_block_delta", "index": 0, "delta": {"type": "input_json_delta", "partial_json": " data\"}"}}

data: {"type": "content_block_stop", "index": 0}

data: {"type": "message_delta", "delta": {"stop_reason": "tool_use"}}

data: {"type": "message_stop"}

{
  "type": "message_delta",
  "delta": {
    "stop_reason": "end_turn",
    "stop_sequence": null,
  },
  "usage": {
    "output_tokens": 1024
  },
  "context_management": {
    "applied_edits": [...],
  }
}
```

------

**nota**  
Actualmente, Bedrock no admite la gestión del `clear_tool_uses_20250919` contexto en la API. CountTokens 

## Herramienta de memoria (beta)
<a name="model-parameters-anthropic-claude-memory-tool"></a>

**aviso**  
Memory Tool está disponible como un «servicio beta», tal como se define en las condiciones del AWS servicio.

Claude Sonnet 4.5 incluye una nueva herramienta de memoria. Esta herramienta le proporciona una forma de administrar la memoria en todas las conversaciones. Con esta función, puede permitir que Claude recupere información fuera de la ventana de contexto proporcionando acceso a un directorio local. Esta función está disponible en versión beta. Para utilizar esta función, debe incluirla `context-management-2025-06-27` en el `anthropic_beta` parámetro.

Definición de herramienta:

```
{
  "type": "memory_20250818",
  "name": "memory"
}
```

Solicitud de ejemplo:

```
{
    "max_tokens": 2048,
    "anthropic_version": "bedrock-2023-05-31",
    "anthropic_beta": ["context-management-2025-06-27"],
    "tools": [{
        "type": "memory_20250818",
        "name": "memory"
    }],
    "messages": [
        {
            "role": "user",
            "content": [{"type": "text", "text": "Remember that my favorite color is blue and I work at Amazon?"}]
        }
    ]
}
```

Respuesta de ejemplo:

```
{
    "id": "msg_vrtx_014mQ5ficCRB6PEa5k5sKqHd",
    "type": "message",
    "role": "assistant",
    "model": "claude-sonnet-4-20250514",
    "content": [
        {
            "type": "text",
            "text": "I'll start by checking your memory directory and then record this important information about you."
        },
        {
            "type": "tool_use",
            "id": "toolu_vrtx_01EU1UrCDigyPMRntr3VYvUB",
            "name": "memory",
            "input": {
                "command": "view",
                "path": "/memories"
            }
        }
    ],
    "stop_reason": "tool_use",
    "stop_sequence": null,
    "usage": {
        "input_tokens": 1403,
        "cache_creation_input_tokens": 0,
        "cache_read_input_tokens": 0,
        "output_tokens": 87
    },
    "context_management": {
        "applied_edits": []
    }
}
```

## Consideraciones relacionadas con el costo del uso de herramientas
<a name="model-parameters-anthropic-claude-tool-use-cost"></a>

Los precios de las solicitudes de uso de herramientas se basan en los siguientes factores:

1. Número total de tokens de entrada enviados al modelo (incluidos los del parámetro tools).

1. Número de tokens de salida generados.

El precio de las herramientas es el mismo que el de todas las demás solicitudes de la API Claude, pero incluyen tokens adicionales por solicitud. Los tokens adicionales derivados del uso de herramientas provienen de lo siguiente:
+ El parámetro `tools` en las solicitudes de la API. Por ejemplo, los nombres de herramientas, las descripciones y los esquemas.
+ Cualquier bloque de contenido `tool_use` en las solicitudes y respuestas de la API.
+ Cualquier bloque de contenido `tool_result` en las solicitudes de la API.

Cuando se utilizan herramientas, los modelos Anthropic incluyen automáticamente una petición de sistema especial que permite el uso de herramientas. El número de tokens de uso de herramientas necesarios para cada modelo se indica en la siguiente tabla. En esta tabla no se incluyen los tokens adicionales descritos anteriormente. Tenga en cuenta que en esta tabla se supone que se proporciona al menos una herramienta. Si no se proporciona ninguna herramienta, la opción de herramienta “none” utiliza 0 tokens de peticiones del sistema adicionales.


| Modelo | Selección de herramienta | Número de tokens de peticiones del sistema de uso de herramientas | 
| --- | --- | --- | 
| Claude Opus4.5<br />Claude Opus4.1<br />Claude Opus 4<br />Claude Sonnet 4.5<br />Claude Haiku 4.5<br />Claude Sonnet 4<br />Claude 3.7 Sonnet<br />Claude 3.5 Sonnet v2 | auto o none | 346 | 
| Claude Opus4.5<br />Claude Opus4.1<br />Claude Opus 4<br />Claude Sonnet 4.5<br />Claude Haiku 4.5<br />Claude Sonnet 4<br />Claude 3.7 Sonnet<br />Claude 3.5 Sonnet v2 | any o tool | 313 | 
| Claude 3.5 Sonnet | auto o none | 294 | 
| Claude 3.5 Sonnet | any o tool | 261 | 
| Claude 3 Opus | auto o none | 530 | 
| Claude 3 Opus | any o tool | 281 | 
| Claude 3 Sonnet | auto o none | 159 | 
| Claude 3 Sonnet | any o tool | 235 | 
| Claude 3 Haiku | auto o none | 264 | 
| Claude 3 Haiku | any o tool | 340 | 

## Herramienta de búsqueda de herramientas (beta)
<a name="model-parameters-anthropic-claude-tool-search-tool"></a>

La herramienta de búsqueda de herramientas Claude permite trabajar con cientos o incluso miles de herramientas sin cargar todas sus definiciones por adelantado en la ventana de contexto. En lugar de declarar todas las herramientas de forma inmediata, puede marcarlas `defer_loading: true` y buscar Claude y cargar solo las herramientas que necesita mediante el mecanismo de búsqueda de herramientas.

Para acceder a esta función, debe incluirla `tool-search-tool-2025-10-19` en el `anthropic_beta` parámetro. Tenga en cuenta que, actualmente, esta función solo está disponible a través de las [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)API [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)y.

Definición de herramienta:

```
{
    "type": "tool_search_tool_regex",
    "name": "tool_search_tool_regex"
}
```

Ejemplo de solicitud:

```
{
    "anthropic_version": "bedrock-2023-05-31",
    "anthropic_beta": [
        "tool-search-tool-2025-10-19"
    ],
    "max_tokens": 4096,
    "tools": [{
            "type": "tool_search_tool_regex",
            "name": "tool_search_tool_regex"
        },
        {
            "name": "get_weather",
            "description": "Get current weather for a location",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"]
                    }
                },
                "required": ["location"]
            },
            "defer_loading": true
        },
        {
            "name": "search_files",
            "description": "Search through files in the workspace",
            "input_schema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string"
                    },
                    "file_types": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": ["query"]
            },
            "defer_loading": true
        }
    ],
    "messages": [{
        "role": "user",
        "content": "What's the weather in Seattle?"
    }]
}
```

Ejemplo de respuesta

```
{
    "role": "assistant",
    "content": [{
            "type": "text",
            "text": "I'll search for the appropriate tools to help with this task."
        },
        {
            "type": "server_tool_use",
            "id": "srvtoolu_01ABC123",
            "name": "tool_search_tool_regex",
            "input": {
                "pattern": "weather"
            }
        },
        {
            "type": "tool_search_tool_result",
            "tool_use_id": "srvtoolu_01ABC123",
            "content": {
                "type": "tool_search_tool_search_result",
                "tool_references": [{
                    "type": "tool_reference",
                    "tool_name": "get_weather"
                }]
            }
        },
        {
            "type": "text",
            "text": "Now I can check the weather."
        },
        {
            "type": "tool_use",
            "id": "toolu_01XYZ789",
            "name": "get_weather",
            "input": {
                "location": "Seattle",
                "unit": "fahrenheit"
            }
        }
    ],
    "stop_reason": "tool_use"
}
```

Ejemplo de streaming

```
# Event 1: content_block_start(with complete server_tool_use block) {
    "type": "content_block_start",
    "index": 0,
    "content_block": {
        "type": "server_tool_use",
        "id": "srvtoolu_01ABC123",
        "name": "tool_search_tool_regex"
    }
}

# Event 2: content_block_delta(input JSON streamed) {
    "type": "content_block_delta",
    "index": 0,
    "delta": {
        "type": "input_json_delta",
        "partial_json": "{\"regex\": \".*weather.*\"}"
    }
}

# Event 3: content_block_stop(tool_use complete) {
    "type": "content_block_stop",
    "index": 0
}

# Event 4: content_block_start(COMPLETE result in single chunk) {
    "type": "content_block_start",
    "index": 1,
    "content_block": {
        "type": "tool_search_tool_result",
        "tool_use_id": "srvtoolu_01ABC123",
        "content": {
            "type": "tool_search_tool_search_result",
            "tool_references": [{
                "type": "tool_reference",
                "tool_name": "get_weather"
            }]
        }
    }
}

# Event 5: content_block_stop(result complete) {
    "type": "content_block_stop",
    "index": 1
}
```

**Herramientas de búsqueda personalizadas**  
Puede implementar herramientas de búsqueda de herramientas personalizadas (por ejemplo, mediante incrustaciones) definiendo una herramienta que devuelva bloques. `tool_reference` La herramienta personalizada debe tenerla, `defer_loading: false` mientras que otras herramientas deberían tenerla. `defer_loading: true` Cuando definas tu propia herramienta de búsqueda de herramientas, debería arrojar un resultado de la herramienta que contenga bloques de `tool_reference` contenido que apunten a las herramientas que deseas Claude usar.

El formato de respuesta esperado de la herramienta de búsqueda de herramientas definido por el cliente:

```
{
    "type": "tool_result",
    "tool_use_id": "toolu_01ABC123",
    "content": [{
            "type": "tool_reference",
            "tool_name": "get_weather"
        },
        {
            "type": "tool_reference",
            "tool_name": "weather_forecast"
        }
    ]
}
```

`tool_name`Debe coincidir con una herramienta definida en la solicitud. `defer_loading: true` Claude tendrá entonces acceso a los esquemas completos de esas herramientas.

**Herramientas de búsqueda personalizadas: ejemplo detallado**  
Puede implementar herramientas de búsqueda de herramientas personalizadas (por ejemplo, mediante incrustaciones o búsquedas semánticas) definiendo una herramienta que devuelva bloques. `tool_reference` Esto permite mecanismos sofisticados de descubrimiento de herramientas que van más allá de la coincidencia de expresiones regulares.

Ejemplo de solicitud con un TST personalizado:

```
{
    "model": "claude-sonnet-4-5-20250929",
    "anthropic_version": "bedrock-2023-05-31",
    "anthropic_beta": ["tool-search-tool-2025-10-19"],
    "max_tokens": 4096,
    "tools": [{
            "name": "semantic_tool_search",
            "description": "Search for available tools using semantic similarity. Returns the most relevant tools for the given query.",
            "input_schema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Natural language description of what kind of tool is needed"
                    },
                    "top_k": {
                        "type": "integer",
                        "description": "Number of tools to return (default: 5)"
                    }
                },
                "required": ["query"]
            },
            "defer_loading": false
        },
        {
            "name": "get_weather",
            "description": "Get current weather for a location",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"]
                    }
                },
                "required": ["location"]
            },
            "defer_loading": true
        },
        {
            "name": "search_flights",
            "description": "Search for available flights between locations",
            "input_schema": {
                "type": "object",
                "properties": {
                    "origin": {
                        "type": "string"
                    },
                    "destination": {
                        "type": "string"
                    },
                    "date": {
                        "type": "string"
                    }
                },
                "required": ["origin", "destination", "date"]
            },
            "defer_loading": true
        }
    ],
    "messages": [{
        "role": "user",
        "content": "What's the weather forecast in Seattle for the next 3 days?"
    }]
}
```

Claudesu respuesta (llamando a un TST personalizado):

```
{
    "role": "assistant",
    "content": [{
            "type": "text",
            "text": "I'll search for the appropriate tools to help with weather information."
        },
        {
            "type": "tool_use",
            "id": "toolu_01ABC123",
            "name": "semantic_tool_search",
            "input": {
                "query": "weather forecast multiple days",
                "top_k": 3
            }
        }
    ],
    "stop_reason": "tool_use"
}
```

**Customer-provided resultado de la herramienta**  
Tras realizar una búsqueda semántica en la biblioteca de herramientas, el cliente devuelve las referencias de herramientas coincidentes:

```
{
    "role": "user",
    "content": [{
        "type": "tool_search_tool_result",
        "tool_use_id": "toolu_01ABC123",
        "content": {
            "type": "tool_search_tool_search_result",
            "tool_references": [{
                "type": "tool_reference",
                "tool_name": "get_weather"
            }]
        }
    }]
}
```

Claudesu seguimiento (mediante la herramienta descubierta)

```
{
    "role": "assistant",
    "content": [{
            "type": "text",
            "text": "I found the forecast tool. Let me get the weather forecast for Seattle."
        },
        {
            "type": "tool_use",
            "id": "toolu_01DEF456",
            "name": "get_weather",
            "input": {
                "location": "Seattle, WA"
            }
        }
    ],
    "stop_reason": "tool_use"
}
```

**Gestión de errores**
+ La configuración `defer_loading: true` de todas las herramientas (incluida la herramienta de búsqueda de herramientas) arrojará un error 400.
+ Si se pasa una `tool_reference` sin la definición de herramienta correspondiente, se generará un error de 400

## Ejemplos de uso de herramientas (beta)
<a name="model-parameters-anthropic-claude-tool-use-examples"></a>

Claude OpusLa versión 4.5 admite ejemplos proporcionados por los usuarios en las definiciones de herramientas para aumentar el rendimiento Claude de uso de las herramientas. Puede proporcionar ejemplos como llamadas a funciones completas, formateadas exactamente como lo estarían las salidas LLM reales, sin necesidad de traducirlos a otro formato. Para utilizar esta función, debe incluirla `tool-examples-2025-10-29` en el `anthropic_beta` parámetro.

Ejemplo de definición de herramienta:

```
{
    "name": "get_weather",
    "description": "Get the current weather in a given location",
    "input_schema": {
        "type": "object",
        "properties": {
            "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"],
                "description": "Temperature unit"
            }
        },
        "required": ["location"]
    },
    "input_examples": [{
            "location": "San Francisco, CA",
            "unit": "fahrenheit"
        },
        {
            "location": "Tokyo, Japan",
            "unit": "celsius"
        },
        {
            "location": "New York, NY"
        }
    ]
}
```

**Reglas de validación**
+ Conformidad con el esquema: cada ejemplo `input_examples` debe ser válido según la `input_schema` herramienta.
  + Los campos obligatorios deben estar presentes en al menos un ejemplo.
  + Los tipos de campo deben coincidir con el esquema.
  + Los valores de enumeración deben ser del conjunto permitido.
  + Si la validación falla, devuelve un error 400 con detalles sobre qué ejemplo falló en la validación.
+ Requisitos de la matriz: `input_examples` debe ser una matriz (puede estar vacía).
  + `[]`La matriz vacía es válida y equivale a omitir el campo.
  + Un solo ejemplo debe seguir incluido en una matriz: `[{...}]`
  + Límite de longitud: comience con un límite de 20 ejemplos por definición de herramienta.

Ejemplos de errores:

```
// Invalid: Example doesn't match schema (missing required field)
{
    "type": "invalid_request_error",
    "message": "Tool 'get_weather' input_examples[0] is invalid: Missing required property 'location'"
}

// Invalid: Example has wrong type for field
{
    "type": "invalid_request_error",
    "message": "Tool 'search_products' input_examples[1] is invalid: Property 'filters.price_range.min' must be a number, got string"
}

// Invalid: input_examples on server-side tool
{
    "type": "invalid_request_error",
    "message": "input_examples is not supported for server-side tool"
}
```