Esta página cubre el ciclo de vida de las llamadas de herramientas: leer bloques tool_use de la respuesta de Claude, formatear bloques tool_result en tu respuesta y señalar errores. Para la abstracción del SDK que maneja esto automáticamente, consulta Tool Runner.
Más simple con Tool Runner: El manejo manual de herramientas descrito en esta página se gestiona automáticamente mediante Tool Runner. Usa esta página cuando necesites control personalizado sobre la ejecución de herramientas.
La respuesta de Claude difiere según si utiliza una herramienta de cliente o servidor.
La respuesta tendrá un stop_reason de tool_use y uno o más bloques de contenido tool_use que incluyen:
id: Un identificador único para este bloque de uso de herramienta en particular. Se utilizará para hacer coincidir los resultados de la herramienta más adelante.name: El nombre de la herramienta que se está utilizando.input: Un objeto que contiene la entrada que se pasa a la herramienta, conforme al input_schema de la herramienta.Cuando recibas una respuesta de uso de herramienta para una herramienta de cliente, deberías:
name, id e input del bloque tool_use.input de la herramienta.role de user y un bloque de 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 (por ejemplo, "content": "15 degrees"), una lista de bloques de contenido anidados (por ejemplo, "content": [{"type": "text", "text": "15 degrees"}]), o una lista de bloques de documentos (por ejemplo, "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}]). Estos bloques de contenido pueden usar los tipos text, image o document.is_error (opcional): Establece en true si la ejecución de la herramienta resultó en un error.Requisitos de formato importantes:
Por ejemplo, esto causará un error 400:
{
"role": "user",
"content": [
{ "type": "text", "text": "Here are the results:" }, // ❌ Text before tool_result
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
]
}Esto es correcto:
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
{ "type": "text", "text": "What should I do next?" } // ✅ Text after tool_result
]
}Si recibes un error como "tool_use ids were found without tool_result blocks immediately after", verifica que tus resultados de herramientas estén formateados correctamente.
Después de recibir el resultado de la herramienta, Claude utilizará esa información para continuar generando una respuesta a la solicitud del usuario original.
Claude ejecuta la herramienta internamente e incorpora los resultados directamente en su respuesta sin requerir interacción adicional del usuario.
Diferencias de otras APIs
A diferencia de las APIs que separan el uso de herramientas o utilizan roles especiales como tool o function, la API de Claude integra herramientas directamente en la estructura de mensajes user y assistant.
Los mensajes contienen matrices de bloques text, image, tool_use y tool_result. Los mensajes user incluyen contenido de cliente y tool_result, mientras que los mensajes assistant contienen contenido generado por IA y tool_use.
Hay varios tipos diferentes de errores que pueden ocurrir al usar herramientas con Claude:
Was this page helpful?