Cuando trabajas con la funcionalidad de herramientas de Claude, te encontrarás con un nuevo tipo de estructura de respuesta que es diferente de las respuestas de texto simples que has visto antes. En lugar de recibir solo un bloque de texto único, Claude ahora puede devolver mensajes de múltiples bloques que contienen tanto texto como información de uso de herramientas.
Realizar llamadas a la API habilitadas para herramientas
Para permitir que Claude use herramientas, debes incluir un parámetro tools en tu llamada a la API. Así es como debes estructurar la solicitud:
messages = []
messages.append({
"role": "user",
"content": "What is the exact time, formatted as HH:MM:SS?"
})
response = client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema],
)El parámetro tools toma una lista de esquemas JSON que describen las funciones disponibles que Claude puede llamar.
Comprender los mensajes de múltiples bloques
Cuando Claude decide usar una herramienta, devuelve un mensaje de asistente con múltiples bloques en la lista de contenido. Este es un cambio significativo respecto a las respuestas simples de solo texto con las que has trabajado antes.

Un mensaje de múltiples bloques típicamente contiene:
- Bloque de texto - Texto legible por humanos que explica lo que Claude está haciendo (como "Puedo ayudarte a averiguar la hora actual. Déjame buscar esa información para ti")
- Bloque ToolUse - Instrucciones para tu código sobre qué herramienta llamar y qué parámetros usar
El bloque ToolUse incluye:
- Un ID para rastrear la llamada a la herramienta
- El nombre de la función a llamar (como "get_current_datetime")
- Parámetros de entrada formateados según tu esquema JSON
- La designación de tipo "tool_use"
Manejo del historial de mensajes con contenido de múltiples bloques
Aquí está la parte crítica: Claude no almacena el historial de conversación, por lo que debes gestionarlo manualmente. Cuando trabajas con respuestas de herramientas, necesitas preservar toda la estructura de contenido, incluyendo todos los bloques.
En lugar de simplemente extraer el texto, necesitas agregar el contenido completo de la respuesta:
messages.append({
"role": "assistant",
"content": response.content
})Esto preserva tanto el bloque de texto como el bloque de uso de herramientas, manteniendo el contexto completo de la conversación para futuras llamadas a la API.
El flujo completo
El proceso de uso de herramientas sigue este patrón:

- Enviar el mensaje del usuario con el esquema de herramientas a Claude
- Recibir el mensaje de asistente de múltiples bloques (texto + uso de herramientas)
- Extraer la información de la llamada a la herramienta y ejecutar la función
- Enviar el resultado de la herramienta de vuelta a Claude con el historial completo de mensajes
- Recibir la respuesta final de Claude
Cada paso requiere un manejo cuidadoso de la estructura del mensaje para mantener la continuidad de la conversación. La idea clave es que las conversaciones habilitadas para herramientas involucran formatos de mensaje más complejos, pero el principio fundamental de mantener el historial completo de mensajes sigue siendo el mismo.
Actualización de funciones auxiliares
Si has estado usando funciones auxiliares como add_user_message y add_assistant_message, necesitarás actualizarlas para manejar contenido de múltiples bloques. Las versiones actuales probablemente solo admiten bloques de texto únicos, pero ahora necesitan acomodar las estructuras de contenido más complejas que incluyen bloques de uso de herramientas.