Claude es capaz de interactuar con herramientas y funciones externas del lado del cliente, permitiéndote equipar a Claude con tus propias herramientas personalizadas para realizar una mayor variedad de tareas.

¡Aprende todo lo que necesitas para dominar el uso de herramientas con Claude a través de nuestro nuevo curso completo de uso de herramientas! Por favor, continúa compartiendo tus ideas y sugerencias usando este formulario.

Aquí hay un ejemplo de cómo proporcionar herramientas a Claude usando la API de Mensajes:


Cómo funciona el uso de herramientas

Integra herramientas externas con Claude en estos pasos:

1

Proporciona herramientas y un mensaje del usuario a Claude

  • Define herramientas con nombres, descripciones y esquemas de entrada en tu solicitud de API.
  • Incluye un mensaje del usuario que podría requerir estas herramientas, ej., “¿Cómo está el clima en San Francisco?”
2

Claude decide usar una herramienta

  • Claude evalúa si alguna herramienta puede ayudar con la consulta del usuario.
  • Si es así, Claude construye una solicitud de uso de herramienta con el formato adecuado.
  • La respuesta de la API tiene un stop_reason de tool_use, señalando la intención de Claude.
3

Extrae la entrada de la herramienta, ejecuta el código y devuelve los resultados

  • En tu lado, extrae el nombre de la herramienta y la entrada de la solicitud de Claude.
  • Ejecuta el código real de la herramienta del lado del cliente.
  • Continúa la conversación con un nuevo mensaje user que contiene un bloque de contenido tool_result.
4

Claude usa el resultado de la herramienta para formular una respuesta

  • Claude analiza los resultados de la herramienta para elaborar su respuesta final al mensaje original del usuario.

Nota: Los pasos 3 y 4 son opcionales. Para algunos flujos de trabajo, la solicitud de uso de herramienta de Claude (paso 2) podría ser todo lo que necesitas, sin enviar resultados de vuelta a Claude.

Las herramientas son proporcionadas por el usuario

Es importante notar que Claude no tiene acceso a ninguna herramienta incorporada del lado del servidor. Todas las herramientas deben ser proporcionadas explícitamente por ti, el usuario, en cada solicitud de API. Esto te da control total y flexibilidad sobre las herramientas que Claude puede usar.

El funcionamiento de uso de computadora (beta) es una excepción - introduce herramientas que son proporcionadas por Anthropic pero implementadas por ti, el usuario.


Cómo implementar el uso de herramientas

Elegir un modelo

Generalmente, usa Claude 3.5 Sonnet o Claude 3 Opus para herramientas complejas y consultas ambiguas; manejan mejor múltiples herramientas y buscan aclaraciones cuando es necesario.

Usa Claude 3.5 Haiku o Claude 3 Haiku para herramientas sencillas, pero ten en cuenta que pueden inferir parámetros faltantes.

Especificar herramientas

Las herramientas se especifican en el parámetro de nivel superior tools de la solicitud de API. Cada definición de herramienta incluye:

ParámetroDescripción
nameEl nombre de la herramienta. Debe coincidir con la expresión regular ^[a-zA-Z0-9_-]{1,64}$.
descriptionUna descripción detallada en texto plano de lo que hace la herramienta, cuándo debe usarse y cómo se comporta.
input_schemaUn objeto JSON Schema que define los parámetros esperados para la herramienta.

Mensaje del sistema para uso de herramientas

Cuando llamas a la API de Anthropic con el parámetro tools, construimos un mensaje del sistema especial a partir de las definiciones de herramientas, la configuración de herramientas y cualquier mensaje del sistema especificado por el usuario. El mensaje construido está diseñado para instruir al modelo sobre cómo usar las herramientas especificadas y proporcionar el contexto necesario para que la herramienta funcione correctamente:

En este entorno tienes acceso a un conjunto de herramientas que puedes usar para responder la pregunta del usuario.
{{ INSTRUCCIONES DE FORMATO }}
Los parámetros de cadena y escalares deben especificarse tal cual, mientras que las listas y objetos deben usar formato JSON. Ten en cuenta que los espacios para valores de cadena no se eliminan. No se espera que la salida sea XML válido y se analiza con expresiones regulares.
Aquí están las funciones disponibles en formato JSONSchema:
{{ DEFINICIONES DE HERRAMIENTAS EN JSON SCHEMA }}
{{ MENSAJE DEL SISTEMA DEL USUARIO }}
{{ CONFIGURACIÓN DE HERRAMIENTAS }}

Mejores prácticas para definiciones de herramientas

Para obtener el mejor rendimiento de Claude al usar herramientas, sigue estas pautas:

  • Proporciona descripciones extremadamente detalladas. Este es por mucho el factor más importante en el rendimiento de las herramientas. Tus descripciones deben explicar cada detalle sobre la herramienta, incluyendo:
    • Qué hace la herramienta
    • Cuándo debe usarse (y cuándo no)
    • Qué significa cada parámetro y cómo afecta el comportamiento de la herramienta
    • Cualquier advertencia o limitación importante, como qué información no devuelve la herramienta si el nombre de la herramienta no está claro. Cuanto más contexto puedas darle a Claude sobre tus herramientas, mejor será para decidir cuándo y cómo usarlas. Apunta a tener al menos 3-4 oraciones por descripción de herramienta, más si la herramienta es compleja.
  • Prioriza las descripciones sobre los ejemplos. Si bien puedes incluir ejemplos de cómo usar una herramienta en su descripción o en el mensaje que la acompaña, esto es menos importante que tener una explicación clara y completa del propósito y los parámetros de la herramienta. Solo agrega ejemplos después de haber desarrollado completamente la descripción.

La buena descripción explica claramente qué hace la herramienta, cuándo usarla, qué datos devuelve y qué significa el parámetro ticker. La descripción pobre es demasiado breve y deja a Claude con muchas preguntas abiertas sobre el comportamiento y uso de la herramienta.

Controlar la salida de Claude

Forzar el uso de herramientas

En algunos casos, es posible que desees que Claude use una herramienta específica para responder la pregunta del usuario, incluso si Claude piensa que puede proporcionar una respuesta sin usar una herramienta. Puedes hacer esto especificando la herramienta en el campo tool_choice así:

tool_choice = {"type": "tool", "name": "get_weather"}

Al trabajar con el parámetro tool_choice, tenemos tres opciones posibles:

  • auto permite que Claude decida si llamar a cualquiera de las herramientas proporcionadas o no. Este es el valor predeterminado.
  • any le dice a Claude que debe usar una de las herramientas proporcionadas, pero no fuerza una herramienta en particular.
  • tool nos permite forzar a Claude a usar siempre una herramienta particular.

Este diagrama ilustra cómo funciona cada opción:

Ten en cuenta que cuando tienes tool_choice como any o tool, prellenaremos el mensaje del asistente para forzar el uso de una herramienta. Esto significa que los modelos no emitirán un bloque de contenido text de cadena de pensamiento antes de los bloques de contenido tool_use, incluso si se les pide explícitamente que lo hagan.

Nuestras pruebas han demostrado que esto no debería reducir el rendimiento. Si deseas mantener la cadena de pensamiento (particularmente con Opus) mientras solicitas que el modelo use una herramienta específica, puedes usar {"type": "auto"} para tool_choice (el valor predeterminado) y agregar instrucciones explícitas en un mensaje user. Por ejemplo: ¿Cómo está el clima en Londres? Usa la herramienta get_weather en tu respuesta.

Salida JSON

Las herramientas no necesariamente tienen que ser funciones del lado del cliente — puedes usar herramientas cada vez que quieras que el modelo devuelva una salida JSON que siga un esquema proporcionado. Por ejemplo, podrías usar una herramienta record_summary con un esquema particular. Consulta ejemplos de uso de herramientas para ver un ejemplo completo funcional.

Cadena de pensamiento

Al usar herramientas, Claude a menudo mostrará su “cadena de pensamiento”, es decir, el razonamiento paso a paso que usa para desglosar el problema y decidir qué herramientas usar. El modelo Claude 3 Opus hará esto si tool_choice está configurado en auto (este es el valor predeterminado, ver Forzar el uso de herramientas), y Sonnet y Haiku pueden ser inducidos a hacerlo.

Por ejemplo, dado el mensaje “¿Cómo está el clima en San Francisco ahora mismo y qué hora es allí?”, Claude podría responder con:

JSON
{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "<thinking>Para responder esta pregunta, voy a: 1. Usar la herramienta get_weather para obtener el clima actual en San Francisco. 2. Usar la herramienta get_time para obtener la hora actual en la zona horaria America/Los_Angeles, que cubre San Francisco, CA.</thinking>"
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": {"location": "San Francisco, CA"}
    }
  ]
}

Esta cadena de pensamiento proporciona información sobre el proceso de razonamiento de Claude y puede ayudarte a depurar comportamientos inesperados.

Con el modelo Claude 3 Sonnet, la cadena de pensamiento es menos común por defecto, pero puedes inducir a Claude a mostrar su razonamiento agregando algo como "Antes de responder, explica tu razonamiento paso a paso en etiquetas." al mensaje del usuario o al mensaje del sistema.

Es importante tener en cuenta que si bien las etiquetas <thinking> son una convención común que Claude usa para denotar su cadena de pensamiento, el formato exacto (como el nombre de esta etiqueta XML) puede cambiar con el tiempo. Tu código debe tratar la cadena de pensamiento como cualquier otro texto generado por el asistente y no depender de la presencia o formato específico de las etiquetas <thinking>.

Deshabilitar el uso paralelo de herramientas

Por defecto, Claude puede usar múltiples herramientas para responder una consulta del usuario. Puedes deshabilitar este comportamiento configurando disable_parallel_tool_use=true en el campo tool_choice.

  • Cuando el tipo de tool_choice es auto, esto asegura que Claude use como máximo una herramienta
  • Cuando el tipo de tool_choice es any o tool, esto asegura que Claude use exactamente una herramienta

Manejar bloques de contenido de uso de herramientas y resultados de herramientas

Cuando Claude decide usar una de las herramientas que has proporcionado, devolverá una respuesta con un stop_reason de tool_use y uno o más bloques de contenido tool_use en la respuesta de la API que incluyen:

  • id: Un identificador único para este bloque particular de uso de herramienta. Esto se usará para hacer coincidir los resultados de la herramienta más adelante.
  • name: El nombre de la herramienta que se está usando.
  • 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, deberías:

  1. Extraer el name, id, e input del bloque tool_use.
  2. Ejecutar la herramienta real en tu código base correspondiente a ese nombre de herramienta, pasando la input de la herramienta.
  3. [opcional] 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 que esto es un resultado.
    • content: El resultado de la herramienta, como una cadena (ej. "content": "15 grados") o lista de bloques de contenido anidados (ej. "content": [{"type": "text", "text": "15 grados"}]). Estos bloques de contenido pueden usar los tipos text o image.
    • is_error (opcional): Establecer en true si la ejecución de la herramienta resultó en un error.

Después de recibir el resultado de la herramienta, Claude usará esa información para continuar generando una respuesta al mensaje original del usuario.

Diferencias con otras APIs

A diferencia de las APIs que separan el uso de herramientas o usan roles especiales como tool o function, la API de Anthropic integra las herramientas directamente en la estructura de mensajes user y assistant.

Los mensajes contienen arrays de bloques text, image, tool_use, y tool_result. Los mensajes user incluyen contenido del lado del cliente y tool_result, mientras que los mensajes assistant contienen contenido generado por IA y tool_use.

Solución de problemas de errores

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


Ejemplos de uso de herramientas

Aquí hay algunos ejemplos de código que demuestran varios patrones y técnicas de uso de herramientas. Por brevedad, las herramientas son herramientas simples, y las descripciones de las herramientas son más cortas de lo que sería ideal para asegurar el mejor rendimiento.


Precios

Las solicitudes de uso de herramientas tienen el mismo precio que cualquier otra solicitud de API de Claude, basado en el número total de tokens de entrada enviados al modelo (incluyendo en el parámetro tools) y el número de tokens de salida generados.”

Los tokens adicionales del uso de herramientas provienen de:

  • El parámetro tools en las solicitudes de API (nombres de herramientas, descripciones y esquemas)
  • Bloques de contenido tool_use en solicitudes y respuestas de API
  • Bloques de contenido tool_result en solicitudes de API

Cuando usas tools, también incluimos automáticamente un mensaje del sistema especial para el modelo que habilita el uso de herramientas. El número de tokens de uso de herramientas requeridos para cada modelo se enumeran a continuación (excluyendo los tokens adicionales listados arriba):

ModeloElección de herramientaConteo de tokens del mensaje del sistema de uso de herramientas
Claude 3.5 Sonnet (Oct)auto
any, tool
346 tokens
313 tokens
Claude 3 Opusauto
any, tool
530 tokens
281 tokens
Claude 3 Sonnetauto
any, tool
159 tokens
235 tokens
Claude 3 Haikuauto
any, tool
264 tokens
340 tokens
Claude 3.5 Sonnet (June)auto
any, tool
294 tokens
261 tokens

Estos conteos de tokens se agregan a tus tokens normales de entrada y salida para calcular el costo total de una solicitud. Consulta nuestra tabla de descripción general de modelos para ver los precios actuales por modelo.

Cuando envías un mensaje de uso de herramienta, al igual que cualquier otra solicitud de API, la respuesta mostrará tanto los conteos de tokens de entrada como de salida como parte de las métricas de usage reportadas.


Próximos pasos

Explora nuestro repositorio de ejemplos de código de uso de herramientas listos para implementar en nuestros libros de recetas:

Was this page helpful?