tools
de la solicitud de API. Cada definición de herramienta incluye:
Parámetro | Descripción |
---|---|
name | El nombre de la herramienta. Debe coincidir con la expresión regular ^[a-zA-Z0-9_-]{1,64}$ . |
description | Una descripción detallada en texto plano de lo que hace la herramienta, cuándo debe usarse y cómo se comporta. |
input_schema | Un objeto JSON Schema que define los parámetros esperados para la herramienta. |
Ejemplo de definición de herramienta simple
get_weather
, espera un objeto de entrada con una cadena location
requerida y una cadena unit
opcional que debe ser “celsius” o “fahrenheit”.tools
, construimos un prompt del sistema especial a partir de las definiciones de herramientas, la configuración de herramientas y cualquier prompt del sistema especificado por el usuario. El prompt construido está diseñado para instruir al modelo a usar las herramientas especificadas y proporcionar el contexto necesario para que la herramienta opere correctamente:
Ejemplo de una buena descripción de herramienta
Ejemplo de descripción pobre de herramienta
ticker
. La descripción pobre es demasiado breve y deja a Claude con muchas preguntas abiertas sobre el comportamiento y uso de la herramienta.
tool_choice
así:
auto
permite a Claude decidir si llamar cualquiera de las herramientas proporcionadas o no. Este es el valor predeterminado cuando se proporcionan tools
.any
le dice a Claude que debe usar una de las herramientas proporcionadas, pero no fuerza una herramienta particular.tool
nos permite forzar a Claude a usar siempre una herramienta particular.none
evita que Claude use cualquier herramienta. Este es el valor predeterminado cuando no se proporcionan tools
.tool_choice
invalidarán los bloques de mensajes en caché. Las definiciones de herramientas y prompts del sistema permanecen en caché, pero el contenido del mensaje debe reprocesarse.tool_choice
como any
o tool
, prellenaremos el mensaje del asistente para forzar que se use una herramienta. Esto significa que los modelos no emitirán un bloque de contenido text
de cadena de pensamiento antes de los bloques de contenido tool_use
, incluso si se les pide explícitamente que lo hagan.
tool_choice: {"type": "any"}
y tool_choice: {"type": "tool", "name": "..."}
no son compatibles y resultarán en un error. Solo tool_choice: {"type": "auto"}
(el predeterminado) y tool_choice: {"type": "none"}
son compatibles con el pensamiento extendido.{"type": "auto"}
para tool_choice
(el predeterminado) y agregar instrucciones explícitas en un mensaje user
. Por ejemplo: ¿Cómo está el clima en Londres? Usa la herramienta get_weather en tu respuesta.
record_summary
con un esquema particular. Ve Uso de herramientas con Claude para un ejemplo completo funcional.
tool_choice
está configurado en auto
(este es el valor predeterminado, ve Forzar el uso de herramientas), y Sonnet y Haiku pueden ser inducidos a hacerlo.
Por ejemplo, dado el prompt “¿Cómo está el clima en San Francisco ahora mismo, y qué hora es allí?”, Claude podría responder con:
disable_parallel_tool_use=true
cuando el tipo de tool_choice es auto
, lo que asegura que Claude use como máximo una herramientadisable_parallel_tool_use=true
cuando el tipo de tool_choice es any
o tool
, lo que asegura que Claude use exactamente una herramientaEjemplo completo de uso paralelo de herramientas
Script de prueba completo para herramientas paralelas
Prompts del sistema para uso paralelo de herramientas
Prompting de mensajes de usuario
disable_parallel_tool_use
. Para solucionar esto, recomendamos habilitar uso eficiente de herramientas en tokens, que ayuda a fomentar que Claude use herramientas paralelas. Esta función beta también reduce la latencia y ahorra un promedio de 14% en tokens de salida.Si prefieres no optar por la beta de uso eficiente de herramientas en tokens, también puedes introducir una “herramienta por lotes” que puede actuar como una meta-herramienta para envolver invocaciones a otras herramientas simultáneamente. Encontramos que si esta herramienta está presente, el modelo la usará para llamar múltiples herramientas en paralelo para ti.Ve este ejemplo en nuestro cookbook para cómo usar esta solución alternativa.stop_reason
de tool_use
y uno o más bloques de contenido tool_use
que incluyen:
id
: Un identificador único para este bloque particular de uso de herramienta. Esto se usará para hacer coincidir los resultados de la herramienta más tarde.name
: El nombre de la herramienta que se está usando.input
: Un objeto que contiene la entrada que se pasa a la herramienta, conforme al input_schema
de la herramienta.Ejemplo de respuesta de API con un bloque de contenido `tool_use`
name
, id
e input
del bloque tool_use
.input
de la herramienta.role
de user
, y un bloque content
que contenga el tipo tool_result
y la siguiente información:
tool_use_id
: El id
de la solicitud de uso de herramienta para la cual este es un resultado.content
: El resultado de la herramienta, como una cadena (ej. "content": "15 grados"
), una lista de bloques de contenido anidados (ej. "content": [{"type": "text", "text": "15 grados"}]
), o una lista de bloques de documento (ej. "content": ["type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 grados"}]
). Estos bloques de contenido pueden usar los tipos text
, image
o document
.is_error
(opcional): Configurar en true
si la ejecución de la herramienta resultó en un error.Ejemplo de resultado de herramienta exitoso
Ejemplo de resultado de herramienta con imágenes
Ejemplo de resultado de herramienta vacío
Ejemplo de resultado de herramienta con documentos
tool
o function
, la API de Anthropic integra las herramientas directamente en la estructura de mensajes user
y assistant
.Los mensajes contienen arrays de bloques text
, image
, tool_use
y tool_result
. Los mensajes user
incluyen contenido del cliente y tool_result
, mientras que los mensajes assistant
contienen contenido generado por IA y tool_use
.max_tokens
max_tokens
, y la respuesta truncada contiene un bloque de uso de herramienta incompleto, necesitarás reintentar la solicitud con un valor de max_tokens
más alto para obtener el uso completo de la herramienta.
pause_turn
pause_turn
, indicando que la API ha pausado un turno de larga duración.
Aquí está cómo manejar la razón de parada pause_turn
:
pause_turn
:
Error de ejecución de herramienta
content
junto con "is_error": true
:Nombre de herramienta inválido
description
más detallados en tus definiciones de herramientas.Sin embargo, también puedes continuar la conversación hacia adelante con un tool_result
que indique el error, y Claude intentará usar la herramienta de nuevo con la información faltante completada:Etiquetas <search_quality_reflection>
Errores de herramientas del servidor
is_error
para herramientas del servidor.Para búsqueda web específicamente, los códigos de error posibles incluyen:too_many_requests
: Límite de velocidad excedidoinvalid_input
: Parámetro de consulta de búsqueda inválidomax_uses_exceeded
: Usos máximos de herramienta de búsqueda web excedidosquery_too_long
: La consulta excede la longitud máximaunavailable
: Ocurrió un error internoLas llamadas de herramientas paralelas no funcionan