Ir al contenido
Mastering Claude

Inicio / La API de Claude para quienes construyen

La API de Claude para quienes construyen7 minApplication

Las herramientas, Claude propone, el código dispone

Una herramienta se declara mediante un esquema llamado input_schema; Claude nunca la ejecuta él mismo, devuelve una solicitud de uso que el código ejecuta antes de devolver el resultado para que la conversación continúe.

Claude nunca ejecuta una herramienta él mismo. Devuelve una solicitud de uso, el código del desarrollador la ejecuta realmente, y luego devuelve el resultado para que la conversación continúe. Este ciclo se apoya en un único contrato: el esquema declarado por el campo input_schema.

La declaración de una herramienta

Una herramienta se declara mediante tres campos de primer nivel: name, description e input_schema, este último describiendo la forma esperada de los argumentos. Un cuarto campo, strict, se coloca junto a los tres primeros y no sobre la elección de herramienta: puesto a true, garantiza que la llamada producida por Claude corresponde exactamente al esquema declarado, a condición de que ese esquema también lleve additionalProperties a false junto a required, la forma que la documentación oficial aplica en todos sus ejemplos.

// Déclaration d'un outil, avec validation stricte du schéma
{
  "name": "verifier_stock",
  "description": "Renvoie la quantité disponible pour une référence produit.",
  "input_schema": {
    "type": "object",
    "properties": {
      "reference": { "type": "string" }
    },
    "required": ["reference"],
    "additionalProperties": false
  },
  "strict": true
}

El ciclo completo, de la solicitud al resultado

Cuando Claude decide usar una herramienta, devuelve un stop_reason de valor tool_use, acompañado de uno o varios bloques tool_use que llevan los argumentos elegidos. El código ejecuta entonces la llamada real descrita por ese bloque, y luego devuelve el resultado en un bloque tool_result, colocado dentro de un mensaje de rol user. Cuando se solicitan varias herramientas en el mismo turno, lo que ocurre por defecto puesto que las llamadas paralelas están activas, todos sus bloques tool_result vuelven juntos en ese único mensaje.

// Demande d'usage renvoyée par Claude
{
  "stop_reason": "tool_use",
  "content": [
    { "type": "tool_use", "id": "toolu_01", "name": "verifier_stock",
      "input": { "reference": "REF-042" } }
  ]
}
// Résultat renvoyé par le code dans le tour suivant
{
  "role": "user",
  "content": [
    { "type": "tool_result", "tool_use_id": "toolu_01", "content": "12 unités disponibles" }
  ]
}

El campo tool_choice controla qué herramienta puede elegir Claude: auto por defecto deja que Claude decida, any fuerza el uso de una herramienta sin imponer su nombre, tool impone una herramienta precisa, y none le impide usar ninguna. Elegir none sin declarar ninguna herramienta no añade ningún token de sistema adicional a la petición. El bloque tool_result devuelto aquí sigue la misma estructura de mensaje que la petición base, con un array messages que sigue alternando los roles.

Figure 1

El ciclo de una herramienta, de la declaración al resultado

01
Declaración
El código declara la herramienta mediante un esquema input_schema, con su nombre y su descripción.
02
Solicitud de uso
Claude responde con stop_reason tool_use y un bloque tool_use que lleva los argumentos elegidos.
03
Ejecución local
El código ejecuta la llamada real descrita por el bloque tool_use, fuera de Claude.
04
Resultado devuelto
El resultado parte en un bloque tool_result, dentro de un mensaje de usuario siguiente.
05
Reanudación de la conversación
Claude retoma la conversación con ese resultado ya disponible.
La figura muestra las cinco etapas del ciclo de una herramienta: declaración del esquema, solicitud de uso devuelta por Claude, ejecución local, resultado devuelto, reanudación de la conversación.
Calíbralo tú mismo

Un desarrollador declara una herramienta llamada verifier_stock cuyo input_schema exige que el campo reference sea una cadena de caracteres. Claude devuelve un bloque tool_use cuyo campo reference vale 42, un número entero.

Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • Una herramienta se declara mediante un esquema llamado input_schema, junto a name y description, nunca mediante una función ejecutada del lado del servidor.
  • Claude devuelve un stop_reason de valor tool_use acompañado de uno o varios bloques tool_use: es una solicitud, nunca una ejecución real.
  • El campo tool_choice acepta cuatro valores, auto por defecto, any, tool y none, y una elección none sin ninguna herramienta declarada no añade ningún token de sistema adicional.
  • El campo strict a true se coloca en la definición de la herramienta, no en tool_choice, para garantizar que la llamada corresponda exactamente al esquema declarado.
  • Las llamadas a herramientas en paralelo están activas por defecto: todos los bloques tool_result de un mismo turno vuelven en un único mensaje de usuario.
Hazlo ahora

Abre un archivo vacío y escribe la declaración JSON de una herramienta para una acción real de tu propio proyecto, con su nombre, su descripción y su input_schema completo. Añade el campo strict a true, y luego relee el esquema solo, sin el contexto de tu proyecto, y comprueba que basta para adivinar qué llamada debería producir Claude.

Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.