Loading...
  • Construir
  • Administración
  • Modelos y precios
  • SDKs de cliente
  • Referencia de API
Search...
⌘K
Log in
Gestionar llamadas a herramientas
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Construir/Herramientas

Manejar llamadas de herramientas

Analizar bloques tool_use, formatear respuestas tool_result y manejar errores con is_error.

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.

Manejar resultados de herramientas de cliente

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:

  1. Extraer name, id e input del bloque tool_use.
  2. Ejecutar la herramienta real en tu base de código correspondiente a ese nombre de herramienta, pasando la input de la herramienta.
  3. Continuar la conversación enviando un nuevo mensaje con el 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:

  • Los bloques de resultado de herramienta deben seguir inmediatamente a sus bloques de uso de herramienta correspondientes en el historial de mensajes. No puedes incluir ningún mensaje entre el mensaje de uso de herramienta del asistente y el mensaje de resultado de herramienta del usuario.
  • En el mensaje del usuario que contiene resultados de herramientas, los bloques tool_result deben venir PRIMERO en la matriz de contenido. Cualquier texto debe venir DESPUÉS de todos los resultados de herramientas.

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.

Manejar resultados de herramientas de servidor

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.

Manejar errores con is_error

Hay varios tipos diferentes de errores que pueden ocurrir al usar herramientas con Claude:

Próximos pasos

  • Para ejecutar múltiples herramientas en un turno, consulta Parallel tool use.
  • Para la abstracción del SDK que automatiza este bucle, consulta Tool Runner.
  • Para el flujo de trabajo completo de uso de herramientas, consulta Define tools.

Was this page helpful?

  • Manejar resultados de herramientas de cliente
  • Manejar resultados de herramientas de servidor
  • Manejar errores con is_error
  • Próximos pasos