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 simples respuestas de texto 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, necesitas 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 del asistente con múltiples bloques en la lista de contenido. Este es un cambio significativo respecto a las simples respuestas 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 como un diccionario
- La designación de tipo "tool_use"
Gestionar el historial de conversación con mensajes de múltiples bloques
Recuerda que Claude no almacena el historial de conversación: necesitas gestionarlo manualmente. Cuando trabajas con respuestas de herramientas, debes preservar toda la estructura de contenido, incluyendo todos los bloques.
Así es como se debe agregar correctamente un mensaje de asistente de múltiples bloques a tu historial de conversación:
messages.append({
"role": "assistant",
"content": response.content
})Esto preserva tanto el bloque de texto como el bloque de uso de herramientas, lo cual es crucial para mantener el contexto de la conversación cuando realizas llamadas posteriores a la API.
El flujo completo de uso de herramientas

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 del asistente con el bloque de texto y el bloque de uso de herramientas
- Extraer la información de la herramienta y ejecutar la función real
- Enviar el resultado de la herramienta de vuelta a Claude junto con el historial completo de la conversación
- Recibir la respuesta final de Claude
Cada paso requiere un manejo cuidadoso de la estructura del mensaje para garantizar que Claude tenga el contexto completo que necesita para proporcionar respuestas precisas.
Actualizar 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.
Este manejo de mensajes de múltiples bloques es esencial para construir aplicaciones robustas que puedan integrar sin problemas las capacidades de herramientas de Claude mientras mantienen un flujo de conversación adecuado.