Claude Platform Docs
  • Mensajes
  • Agentes gestionados
  • Administración

Search...
⌘K
Primeros pasos
Introducción a ClaudeInicio rápido
Desarrollar con Claude
Descripción general de funcionesUso de la API de MensajesMotivos de detención y respaldoRechazos y respaldoCrédito de respaldo
Capacidades del modelo
Pensamiento extendidoPensamiento adaptativoEsfuerzoPresupuestos de tareas (beta)Modo rápido (vista previa de investigación)Salidas estructuradasCitasStreaming de mensajesProcesamiento por lotesResultados de búsquedaStreaming de rechazosSoporte multilingüeEmbeddings
Herramientas
Descripción generalCómo funciona el uso de herramientasTutorial: Crear un agente que usa herramientasDefinir herramientasGestionar llamadas a herramientasUso de herramientas en paraleloTool Runner (SDK)Uso de herramientas estrictoHerramientas de servidorHerramienta de búsqueda webHerramienta de obtención webHerramienta de ejecución de códigoHerramienta de asesorHerramienta de búsqueda de herramientasHerramienta de memoriaHerramienta BashHerramienta de editor de textoHerramienta de uso de computadoraSolución de problemas
Infraestructura de herramientas
Referencia de herramientasGestionar el contexto de herramientasCombinaciones de herramientasUso de herramientas con almacenamiento en caché de promptsLlamadas programáticas a herramientasStreaming detallado de herramientas
Gestión de contexto
Ventanas de contextoCompactaciónEdición de contextoAlmacenamiento en caché de promptsMensajes del sistema en mitad de conversaciónCrear un modo de orquestaciónDiagnóstico de caché (beta)Conteo de tokens
Trabajar con archivos
API de archivosCompatibilidad con PDF
Habilidades
Descripción generalInicio rápidoMejores prácticasHabilidades para empresasHabilidades en la API
MCP
Servidores MCP remotosConector MCP
Claude en plataformas en la nube
Amazon BedrockAmazon Bedrock (heredado)Claude Platform en AWSGoogle CloudMicrosoft Foundry

Log in
Tool Runner (SDK)
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

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

Partners

  • Claude on AWS
  • Claude on Google Cloud

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
Mensajes/Herramientas

Tool Runner (SDK)

Usa el tool runner del SDK para manejar automáticamente el bucle agéntico, el encapsulamiento de errores y la seguridad de tipos.

El "tool runner" (ejecutor de herramientas) maneja el bucle agéntico, el encapsulamiento de errores y la seguridad de tipos para que tú no tengas que hacerlo. Cuando necesites aprobación con intervención humana, registro personalizado o ejecución condicional, usa el bucle manual en su lugar.

En lugar de manejar manualmente las llamadas a herramientas, los resultados de herramientas y la gestión de la conversación, el tool runner automáticamente:

  • Ejecuta herramientas cuando Claude las llama
  • Maneja el ciclo de solicitud/respuesta
  • Gestiona el estado de la conversación
  • Proporciona seguridad de tipos y validación


El tool runner está en beta y está disponible en el SDK de Python, SDK de TypeScript, SDK de C#, SDK de Go, SDK de Java, SDK de PHP y SDK de Ruby.

Uso básico

Define herramientas usando los helpers del SDK, luego usa el tool runner para ejecutarlas.

Dependiendo de la firma de herramienta del SDK, una herramienta devuelve su resultado como una cadena o como bloques de contenido (bloques de texto, imagen o documento), por lo que una herramienta puede devolver resultados multimodales. Una cadena devuelta se convierte en un único bloque de contenido de texto. Para devolver datos estructurados, como un objeto JSON o un número, codifícalos primero como una cadena.

Iterar sobre el tool runner

El tool runner es un iterable que produce mensajes de Claude. En cada iteración, el runner verifica si Claude solicitó un uso de herramientas. Si es así, ejecuta la herramienta y envía el resultado de vuelta a Claude automáticamente, luego produce el siguiente mensaje de Claude para continuar tu bucle.

Puedes terminar el bucle en cualquier iteración con una instrucción break. El runner itera hasta que Claude devuelve un mensaje sin un uso de herramientas, o hasta que alcanza max_iterations si lo configuras.

Si no necesitas mensajes intermedios, puedes obtener el mensaje final directamente:

Uso avanzado

Dentro del bucle, puedes leer cada mensaje de respuesta y modificar el estado del runner antes de la siguiente llamada a la API. Cada iteración sigue este ciclo de vida:

  1. El runner envía una solicitud a la API de Messages con su estado actual.
  2. El runner produce el mensaje de respuesta para el cuerpo de tu bucle.
  3. El cuerpo de tu bucle se ejecuta. Puedes leer el mensaje y opcionalmente modificar el estado del runner.
  4. Cuando el cuerpo de tu bucle retorna, el runner verifica si modificaste su historial de mensajes.
    • Si no modificaste el historial de mensajes: El runner agrega el mensaje del asistente a su estado. Si el mensaje contiene llamadas a herramientas, el runner las ejecuta y agrega los resultados. Si no hay llamadas a herramientas, el bucle termina.
    • Si modificaste el historial de mensajes: El runner omite su agregado automático y usa tu estado sin cambios. Consulta Tomar el control del historial de mensajes.

Tomar el control del historial de mensajes

De forma predeterminada, el runner gestiona el estado de la conversación por ti: después de cada turno, agrega el mensaje del asistente y cualquier resultado de herramienta a su propio historial de mensajes. Tomas el control del historial de mensajes cuando quieres reintentar un turno (descartar la respuesta y reenviar), inyectar un mensaje de seguimiento o construir el resultado de la herramienta tú mismo.

Tomas el control modificando los mensajes del runner desde dentro del cuerpo del bucle. El método exacto depende del SDK. Consulta las pestañas por lenguaje a continuación.

Cuando tomas el control durante una iteración, el runner no agrega el mensaje del asistente ni los resultados de herramientas de ese turno. Te vuelves responsable de mantener la conversación válida: agrega el mensaje del asistente y un resultado de herramienta tú mismo (si quieres que el turno cuente), modifica el estado condicionalmente para que el bucle aún pueda terminar cuando no haya llamadas a herramientas, y pasa max_iterations para acotar el bucle. Los siete SDKs admiten max_iterations.

Gestión automática de contexto

Para tareas agénticas de larga duración, los tool runners de Python, TypeScript y Ruby admiten compactación automática, que genera resúmenes cuando el uso de tokens excede un umbral para que la conversación pueda continuar más allá de los límites de la ventana de contexto. Los tres SDKs han marcado como obsoleta esta opción del lado del cliente en favor de la edición de contexto del lado del servidor, que está disponible en todos los SDKs. Los tool runners de Go, Java, C# y PHP no incluyen compactación del lado del cliente.

Depurar la ejecución de herramientas

Cuando una herramienta lanza una excepción, el tool runner la captura y devuelve el error a Claude como un resultado de herramienta con is_error: true. El resultado de la herramienta lleva el mensaje de la excepción (en Python, su tipo y mensaje), no el stack trace completo.

Lo que el SDK registra es específico del lenguaje. El SDK de Python registra la excepción completa, incluido su stack trace, a través del módulo estándar logging cada vez que una herramienta lanza una excepción no manejada. Los SDKs de Python, TypeScript y Java leen la variable de entorno ANTHROPIC_LOG para activar el registro del SDK, que incluye detalles de solicitud y respuesta:

# Registrar en nivel info
export ANTHROPIC_LOG=info

# Registrar en nivel debug para una salida más detallada
export ANTHROPIC_LOG=debug

Los SDKs de Go, Ruby, C# y PHP no leen ANTHROPIC_LOG. Fuera de Python, ningún SDK registra una herramienta fallida: para ver por qué falló una herramienta, captura y registra la excepción dentro de la función de la herramienta antes de retornar o relanzarla.

Interceptar errores de herramientas

De forma predeterminada, los errores de herramientas se devuelven a Claude, que luego puede responder apropiadamente. Sin embargo, es posible que quieras detectar errores y manejarlos de manera diferente, por ejemplo, para detener la ejecución anticipadamente o implementar un manejo de errores personalizado.

En los SDKs de Python y TypeScript, usa el método de respuesta de herramienta (generate_tool_call_response() en Python, generateToolResponse() en TypeScript) para interceptar resultados de herramientas y verificar errores antes de que se envíen a Claude. Los otros SDKs no exponen ese hook. Sus pestañas describen la alternativa más cercana:

Modificar resultados de herramientas

Puedes modificar los resultados de herramientas antes de que se envíen de vuelta a Claude. Esto es útil para agregar metadatos como cache_control para habilitar el almacenamiento en caché de prompts en resultados de herramientas, o para transformar la salida de la herramienta.

En los SDKs de Python y TypeScript, usa el método de respuesta de herramienta para obtener el resultado de la herramienta, luego modifícalo antes de que el runner continúe. Si agregas explícitamente el resultado modificado o lo mutas en el lugar depende del SDK. Consulta los comentarios de código en cada pestaña.



Agregar cache_control a los resultados de herramientas es particularmente útil cuando las herramientas devuelven grandes cantidades de datos (como resultados de búsqueda de documentos) que quieres almacenar en caché para llamadas posteriores a la API. Consulta Almacenamiento en caché de prompts para más detalles sobre estrategias de almacenamiento en caché.

Streaming

Habilita el streaming para procesar la respuesta de cada turno de forma incremental. Cada iteración produce un objeto de stream que puedes iterar para obtener eventos.

Próximos pasos


Uso estricto de herramientas

Aplica el cumplimiento de JSON Schema en las entradas de herramientas de Claude con muestreo restringido por gramática.

Manejar llamadas a herramientas

Analiza bloques tool_use, formatea respuestas tool_result y maneja errores con is_error.

Uso de herramientas en paralelo

Habilita y formatea llamadas a herramientas en paralelo, con orientación sobre el historial de mensajes y solución de problemas.

Definir herramientas

Especifica esquemas de herramientas, escribe descripciones efectivas y controla cuándo Claude llama a tus herramientas.

Was this page helpful?

  • Uso básico
  • Iterar sobre el tool runner
  • Uso avanzado
  • Tomar el control del historial de mensajes
  • Gestión automática de contexto
  • Depurar la ejecución de herramientas
  • Interceptar errores de herramientas
  • Modificar resultados de herramientas
  • Streaming
  • Próximos pasos