Los resultados estructurados te permiten restringir el resultado generado de un modelo de Claude para que se ajuste exactamente a un esquema JSON específico. Esto es útil para garantizar que las respuestas de tus modelos de Claude siempre tengan el formato preciso que se requiere para las aplicaciones, las bases de datos y las canalizaciones de procesamiento posteriores.
Los resultados estructurados proporcionan dos funciones complementarias que puedes usar de forma independiente o juntas en la misma solicitud:
- Salidas en formato JSON (
output_config.format): Restringe la respuesta de texto del modelo a un objeto JSON que coincida con un esquema que proporciones. Úsalo cuando necesites extraer datos estructurados del texto, generar informes estructurados o dar formato a las respuestas de la API. - Uso estricto de herramientas (
tools[].strict): Garantiza que los argumentos que el modelo pasa a una herramienta coincidan con elinput_schemade la herramienta. Úsalo cuando necesites llamadas a funciones con seguridad de tipos en flujos de trabajo basados en agentes.
Para obtener más información, consulta la documentación de Anthropic sobre Building with Claude: Structured Outputs y Strict tool use.
Modelos de Anthropic Claude compatibles
Agent Platform de Gemini Enterprise admite resultados estructurados para los siguientes modelos de Claude de Anthropic:
- Claude Opus 4.7
- Claude Sonnet 4.6
- Claude Opus 4.6
- (Próximamente) Claude Opus 4.5
- (Próximamente) Claude Sonnet 4.5
- (Próximamente) Claude Haiku 4.5
Controla el acceso a los resultados estructurados
De forma predeterminada, las salidas estructuradas están inhabilitadas por la restricción de la política de la organización constraints/vertexai.allowedPartnerModelFeatures. Para habilitar las salidas estructuradas, debes configurar esta restricción para permitir explícitamente la función structured_outputs.
Además, puedes configurar la restricción de la política de la organización constraints/vertexai.allowedModels para restringir el acceso a los modelos de Claude.
Si deseas obtener instrucciones detalladas para configurar restricciones de políticas de la organización, consulta Controla el acceso a los modelos de Model Garden.
Envía una solicitud de salida estructurada
Para solicitar un resultado en formato JSON, envía una solicitud POST al extremo del modelo de publicador y, luego, incluye el parámetro output_config en el cuerpo de la solicitud. El parámetro output_config especifica el esquema JSON al que debe ajustarse la respuesta del modelo.
REST
En el siguiente ejemplo, se muestra cómo enviar una solicitud a la API de Agent Platform que extrae información de contacto estructurada de un correo electrónico no estructurado. La respuesta se limita a un objeto JSON con los campos name, email, plan_interest y demo_requested.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Es una región que admite modelos de Claude Anthropic. Para usar el extremo global, consulta Cómo especificar el extremo global.
- MODEL: Un modelo de Claude compatible, por ejemplo,
claude-opus-4-7. - ROLE: El rol asociado a un mensaje. Puedes especificar un
usero unassistant. El primer mensaje debe usar el roluser. Los modelos de Claude operan con turnos alternativos deuseryassistant. Si el mensaje final usa el rolassistant, el contenido de la respuesta continúa inmediatamente desde el contenido de ese mensaje. Puedes usar esto para restringir parte de la respuesta del modelo. - CONTENT: el contenido, como texto, del mensaje
useroassistant. Por ejemplo:Extract the key information from this email: John Smith (john@example.com) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm. - MAX_TOKENS:
Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene
aproximadamente 3.5 caracteres. 100 tokens corresponden a casi 60 u 80 palabras.
Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.
- STREAM: Un valor booleano que especifica si la respuesta se transmite o no. Configúralo como
truepara transmitir la respuesta yfalsepara mostrar la respuesta de una sola vez. Por lo general, los resultados estructurados se devuelven confalse.
En el ejemplo, se usan los siguientes campos de salida estructurada. Para obtener detalles sobre cada campo, consulta la sección Campos de solicitud.
output_config: Es el bloque de configuración de nivel superior que controla la estructura de la respuesta del modelo.output_config.format.type: Se establece enjson_schemapara restringir la respuesta a un objeto JSON que se ajuste al esquema proporcionado.output_config.format.schema: Es un esquema JSON que define la estructura requerida de la respuesta del modelo. El esquema debe cumplir con el subconjunto de esquemas JSON admitido.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
Cuerpo JSON de la solicitud:
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"email": {"type": "string"},
"plan_interest": {"type": "string"},
"demo_requested": {"type": "boolean"}
},
"required": ["name", "email", "plan_interest", "demo_requested"],
"additionalProperties": false
}
}
}
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación: El campo text del bloque content contiene una cadena JSON que se ajusta al esquema que especificaste en output_config.
Campos de la solicitud
Los siguientes campos son específicos de los resultados en formato JSON. Para obtener información sobre los otros campos de la solicitud, consulta la referencia de la API de mensajes de Claude.
output_config: Es el bloque de configuración de nivel superior que controla la estructura de la respuesta del modelo.output_config.format: Es la definición del formato de salida. Solo se admite el tipojson_schema.output_config.format.type: Es el tipo de formato de salida que se aplicará. Establece este parámetro enjson_schemapara restringir la respuesta a un objeto JSON.output_config.format.schema: Es un esquema JSON que define la estructura requerida de la respuesta del modelo. Las salidas estructuradas admiten el esquema JSON estándar con algunas limitaciones, como requerir queadditionalPropertiesse establezca enfalsepara los objetos y no admitir restricciones numéricas o de longitud de cadena. Para obtener la lista completa de funciones compatibles y no compatibles, consulta la documentación sobre las limitaciones del esquema JSON de Anthropic. Dentro del esquema, sueles especificar lo siguiente:type: Es el tipo JSON del valor en este nivel (lo más común esobjectpara el esquema raíz).properties: Es un mapa de nombres de campos y sus definiciones de tipo, que describen cada campo que debe devolver el modelo.required: Es una lista de nombres de propiedades que el modelo debe incluir en su respuesta.additionalProperties: Es un valor booleano que, cuando se establece enfalse, impide que el modelo incluya campos que no se declaran enproperties.
Usa herramientas estrictas
El uso estricto de herramientas garantiza que los argumentos que el modelo pasa a una herramienta coincidan con el input_schema de la herramienta. Sin el modo estricto, el modelo podría llamar a una herramienta con argumentos con un tipo incorrecto (por ejemplo, "2" en lugar de 2) o bien omitir campos obligatorios, lo que puede interrumpir las funciones posteriores y requerir lógica de reintento. Con el modo estricto habilitado, la API usa un muestreo restringido por la gramática para garantizar lo siguiente:
- La herramienta
namesiempre es una de las herramientas que proporcionaste. - La herramienta
inputsiempre se ajusta a lainput_schemade la herramienta.
Usa el uso estricto de herramientas cuando necesites validar parámetros de herramientas, crear flujos de trabajo de agentes, garantizar llamadas a funciones con seguridad de tipos o controlar herramientas complejas con propiedades anidadas.
Para habilitar el uso estricto de herramientas, establece "strict": true como un campo de nivel superior en la definición de tu herramienta, junto con name, description y input_schema.
REST
En el siguiente ejemplo, se muestra cómo enviar una solicitud a la API de Agent Platform que define una herramienta get_weather estricta. Se garantiza que el modelo llamará a la herramienta con una cadena location y un unit opcional que puede ser celsius o fahrenheit.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: Es una región que admite modelos de Claude Anthropic. Para usar el extremo global, consulta Cómo especificar el extremo global.
- MODEL: Un modelo de Claude compatible, por ejemplo,
claude-opus-4-7. - ROLE: El rol asociado a un mensaje. El primer mensaje debe usar el rol
user. - CONTENT: el contenido, como texto, del mensaje
useroassistant. Por ejemplo:What is the weather in San Francisco? - MAX_TOKENS:
Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene
aproximadamente 3.5 caracteres. 100 tokens corresponden a casi 60 u 80 palabras.
Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.
- STREAM: Un valor booleano que especifica si la respuesta se transmite o no. Configúralo como
truepara transmitir la respuesta yfalsepara mostrar la respuesta de una sola vez.
En el ejemplo, se usan los siguientes campos estrictos de uso de herramientas. Para obtener detalles sobre cada campo, consulta la sección Campos de uso estricto de herramientas.
tools[].strict: Es un valor booleano que, cuando se establece entrue, habilita el muestreo restringido por la gramática para la herramienta. Se garantiza que el modelo llamará a la herramienta con argumentos que coincidan con elinput_schema.tools[].input_schema: Es un esquema JSON que define los argumentos que el modelo puede pasar a la herramienta. Cuandostrictestrue, el esquema debe cumplir con el mismo subconjunto de esquema JSON admitido que el esquemaoutput_configpara las salidas JSON.
Método HTTP y URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
Cuerpo JSON de la solicitud:
{
"anthropic_version": "vertex-2023-10-16",
"messages": [
{
"role": "ROLE",
"content": "CONTENT"
}
],
"max_tokens": MAX_TOKENS,
"stream": STREAM,
"tools": [
{
"name": "get_weather",
"description": "Get the current weather in a given location",
"strict": true,
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, for example San Francisco, CA"
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"],
"additionalProperties": false
}
}
]
}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación: El bloque de contenido tool_use contiene un campo input cuyas claves y tipos de valores coinciden con el input_schema de la herramienta.
Campos de uso estricto de herramientas
Los siguientes campos son específicos para el uso estricto de la herramienta. Para obtener información sobre los otros campos de definición de herramientas, consulta la documentación de Define tools de Anthropic.
tools[].strict: Es un valor booleano que, cuando se establece entrue, habilita el muestreo restringido por la gramática para la herramienta. Cuandostrictestrue, la entrada de la herramienta del modelo se limita para que coincida con el esquema eninput_schema. El valor predeterminado esfalse.tools[].input_schema: Es un esquema JSON que define los argumentos que el modelo puede pasar a la herramienta. Cuandostrictestrue, el esquema debe cumplir con el mismo subconjunto de JSON Schema que usan los resultados de JSON. En concreto, debes hacer lo siguiente:- Configura
additionalPropertiesenfalseen cada objeto del esquema. - Enumera cada propiedad del array
required.
Para obtener la lista completa de funciones compatibles y no compatibles, consulta la documentación sobre las limitaciones del esquema JSON de Anthropic.
- Configura