Uso estricto de herramientas
Garantiza el cumplimiento de JSON Schema en las entradas de herramientas de Claude mediante muestreo restringido por gramática.
Establecer strict: true en una definición de herramienta garantiza que las entradas de herramientas de Claude coincidan con tu JSON Schema al restringir el muestreo de tokens del modelo a salidas válidas según el esquema (una técnica llamada "grammar-constrained sampling" (muestreo restringido por gramática)). Esta página cubre por qué el modo estricto es importante para los agentes, cómo habilitarlo y casos de uso comunes. Para conocer el subconjunto de JSON Schema compatible, consulta Limitaciones de JSON Schema. Para obtener orientación sobre esquemas no estrictos, consulta Definir herramientas.
El "strict tool use" (uso estricto de herramientas) valida los parámetros de las herramientas, asegurando que Claude llame a tus funciones con argumentos del tipo correcto. Usa el uso estricto de herramientas cuando necesites:
- Validar parámetros de herramientas
- Crear flujos de trabajo agénticos
- Garantizar llamadas a funciones con seguridad de tipos
- Manejar herramientas complejas con propiedades anidadas
Por qué el uso estricto de herramientas es importante para los agentes
Crear sistemas agénticos confiables requiere una conformidad garantizada con el esquema. Sin el modo estricto, Claude podría devolver tipos incompatibles ("2" en lugar de 2) u omitir campos obligatorios, lo que rompería tus funciones y causaría errores en tiempo de ejecución.
El uso estricto de herramientas garantiza parámetros con seguridad de tipos:
- Las funciones reciben argumentos del tipo correcto siempre
- No es necesario validar y reintentar las llamadas a herramientas
- Agentes listos para producción que funcionan de manera consistente a escala
Por ejemplo, supón que un sistema de reservas necesita passengers: int. Sin el modo estricto, Claude podría proporcionar passengers: "two" o passengers: "2". Con strict: true, la respuesta siempre contiene passengers: 2.
Inicio rápido
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
tools=[
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": True, # Enable strict mode
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"],
"description": "The unit of temperature, either 'celsius' or 'fahrenheit'",
},
},
"required": ["location"],
"additionalProperties": False,
},
}
],
)
print(response.content)Formato de respuesta: Bloques de uso de herramientas con entradas validadas en response.content[x].input
{
"type": "tool_use",
"name": "get_weather",
"input": {
"location": "San Francisco, CA"
}
}Garantías:
- El
inputde la herramienta sigue estrictamente elinput_schema - El
namede la herramienta siempre es válido (de las herramientas proporcionadas o herramientas del servidor)
Cómo funciona
Define el esquema de tu herramienta
Crea un esquema JSON para el
input_schemade tu herramienta. El esquema usa el formato estándar de JSON Schema con algunas limitaciones (consulta Limitaciones de JSON Schema).Agrega strict: true
Establece
"strict": truecomo una propiedad de nivel superior en la definición de tu herramienta, junto conname,descriptioneinput_schema.Maneja las llamadas a herramientas
Cuando Claude usa la herramienta, el campo
inputen el bloquetool_usesigue estrictamente tuinput_schema, y elnamesiempre es válido.
Las entradas de conjuntos de herramientas de uso de computadora y uso de navegador (computer_toolset_20260801 y browser_toolset_20260801) no aceptan strict: true; una solicitud que lo establezca en cualquiera de estas entradas será rechazada.
Casos de uso comunes
Asegúrate de que los parámetros de las herramientas coincidan exactamente con tu esquema:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Search for flights to Tokyo departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"passengers": {
"type": "integer",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
},
},
"required": ["destination", "departure_date"],
"additionalProperties": False,
},
}
],
)
print(response)Crea agentes confiables de múltiples pasos con parámetros de herramientas garantizados:
client = Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Help me plan a trip from New York to Paris for 2 people, departing June 1, 2026",
}
],
tools=[
{
"name": "search_flights",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"origin": {"type": "string"},
"destination": {"type": "string"},
"departure_date": {"type": "string", "format": "date"},
"travelers": {"type": "integer", "enum": [1, 2, 3, 4, 5, 6]},
},
"required": ["origin", "destination", "departure_date"],
"additionalProperties": False,
},
},
{
"name": "search_hotels",
"strict": True,
"input_schema": {
"type": "object",
"properties": {
"city": {"type": "string"},
"check_in": {"type": "string", "format": "date"},
"guests": {"type": "integer", "enum": [1, 2, 3, 4]},
},
"required": ["city", "check_in"],
"additionalProperties": False,
},
},
],
)
print(response)Retención de datos
El uso estricto de herramientas compila las definiciones de input_schema de las herramientas en gramáticas usando el mismo pipeline que las salidas estructuradas. Los esquemas de herramientas se almacenan temporalmente en caché por hasta 24 horas desde su último uso. Los prompts y las respuestas no se retienen más allá de la respuesta de la API.
El uso estricto de herramientas es elegible para HIPAA, pero la información de salud protegida (PHI) no debe incluirse en las definiciones de esquemas de herramientas. La API almacena en caché los esquemas compilados por separado del contenido de los mensajes, y estos esquemas en caché no reciben las mismas protecciones de PHI que los prompts y las respuestas. No incluyas PHI en los nombres de propiedades de input_schema, valores enum, valores const ni expresiones regulares pattern. La PHI solo debe aparecer en el contenido de los mensajes (prompts y respuestas), donde está protegida bajo las salvaguardas de HIPAA.
Para conocer la elegibilidad de ZDR y HIPAA en todas las funciones, consulta API y retención de datos.
Próximos pasos
Obtén y lee contenido de URLs específicas para incorporar contenido web en vivo al contexto de Claude.
Almacena en caché las definiciones de herramientas entre turnos para reducir el costo y la latencia.
Obtén respuestas JSON validadas usando el mismo muestreo restringido por gramática.
Especifica esquemas de herramientas, escribe descripciones efectivas y controla cuándo Claude llama a tus herramientas.
Was this page helpful?