Com as saídas estruturadas, é possível restringir a saída gerada de um modelo do Claude para que ela siga exatamente um esquema JSON específico. Isso é útil para garantir que as respostas dos modelos do Claude estejam sempre no formato preciso exigido para aplicativos, bancos de dados e pipelines de processamento downstream.
As saídas estruturadas oferecem dois recursos complementares que podem ser usados de forma independente ou juntos na mesma solicitação:
- Saídas JSON (
output_config.format): restringem a resposta de texto do modelo a um objeto JSON que corresponde a um esquema fornecido. Use isso quando precisar extrair dados estruturados de texto, gerar relatórios estruturados ou formatar respostas da API. - Uso estrito de ferramentas (
tools[].strict): garante que os argumentos que o modelo transmite a uma ferramenta correspondam aoinput_schemadela. Use isso quando precisar de chamadas de função com segurança de tipo em fluxos de trabalho agênticos.
Para mais informações, consulte a documentação Como criar com o Claude: saídas estruturadas e Uso estrito de ferramentas da Anthropic.
Modelos Anthropic Claude compatíveis
A Gemini Enterprise Agent Platform oferece suporte a saídas estruturadas para todos os modelos do Claude 4.5 da Anthropic e versões mais recentes.
Controlar o acesso a saídas estruturadas
Por padrão, as saídas estruturadas são desativadas pela restrição constraints/vertexai.allowedPartnerModelFeatures da política da organização. Para ativar
saídas estruturadas, configure essa restrição para permitir explicitamente o recurso
structured_outputs.
Além disso, é possível configurar a restrição de política da organização
constraints/vertexai.allowedModels para restringir o acesso aos modelos do Claude.
Para instruções detalhadas sobre como configurar restrições de política da organização, consulte Controlar o acesso aos modelos do Model Garden.
Enviar uma solicitação de saída estruturada
Para solicitar uma saída JSON, envie uma solicitação POST ao endpoint do modelo do publisher
e inclua o parâmetro output_config no corpo da solicitação. O parâmetro
output_config especifica o esquema JSON a que a resposta do modelo
precisa obedecer.
REST
O exemplo a seguir mostra como enviar uma solicitação à API Agent Platform que
extrai dados de contato estruturadas de um e-mail não estruturado. A resposta é restrita a um objeto JSON com campos name, email, plan_interest e demo_requested.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: uma região compatível com modelos do Anthropic Claude. Para usar o endpoint global, consulte Especificar o endpoint global.
- MODEL: um modelo do Claude compatível, por exemplo,
claude-opus-4-7. - ROLE: o papel associado a uma mensagem. É possível especificar
userouassistant. A primeira mensagem precisa usar o papeluser. Os modelos de Claude funcionam com voltas alternadas deusereassistant. Se a mensagem final usar o papelassistant, o conteúdo da resposta continuará imediatamente a partir do conteúdo dessa mensagem. É possível usar isso para restringir parte da resposta do modelo. - CONTENT: o conteúdo, como texto, da mensagem
userouassistant. Por exemplo,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:
número máximo de tokens que podem ser gerados na resposta. Um token tem aproximadamente 3,5 caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.
Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.
- STREAM: um booleano que especifica se a resposta será transmitida ou não. Defina como
truepara transmitir a resposta efalsepara retornar a resposta de uma só vez. As saídas estruturadas geralmente são retornadas comfalse.
O exemplo usa os seguintes campos de saída estruturada. Para detalhes sobre cada campo, consulte a seção Campos de solicitação.
output_config: o bloco de configuração de nível superior que controla a estrutura da resposta do modelo.output_config.format.type: defina comojson_schemapara restringir a resposta a um objeto JSON que esteja de acordo com o esquema fornecido.output_config.format.schema: um esquema JSON que define a estrutura necessária da resposta do modelo. O esquema precisa estar de acordo com o subconjunto de esquema JSON compatível.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
Corpo JSON da solicitação:
{
"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 a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:
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
Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a seguinte. O campo text do bloco content contém uma string JSON que está de acordo com o esquema especificado em output_config.
Campos de solicitação
Os campos a seguir são específicos para saídas JSON. Para informações sobre os outros campos de solicitação, consulte a referência da API Claude Messages.
output_config: o bloco de configuração de nível superior que controla a estrutura da resposta do modelo.output_config.format: a definição de formato para a saída. Somente o tipojson_schemaé compatível.output_config.format.type: o tipo de formato de saída a ser aplicado. Defina comojson_schemapara restringir a resposta a um objeto JSON.output_config.format.schema: um esquema JSON que define a estrutura necessária da resposta do modelo. As saídas estruturadas são compatíveis com o esquema JSON padrão, mas têm algumas limitações, como exigir queadditionalPropertiesseja definido comofalsepara objetos e não aceitar restrições numéricas ou de comprimento de string. Para conferir a lista completa de recursos compatíveis e incompatíveis, consulte a documentação de limitações do esquema JSON da Anthropic. No esquema, normalmente você especifica:type: o tipo JSON do valor neste nível (mais comumenteobjectpara o esquema raiz).properties: um mapa de nomes de campos para as definições de tipo, que descrevem cada campo que o modelo precisa retornar.required: uma lista de nomes de propriedades que o modelo precisa incluir na resposta.additionalProperties: um booleano que, quando definido comofalse, impede que o modelo inclua campos não declarados emproperties.
Use a ferramenta de forma restrita
O uso estrito de ferramentas garante que os argumentos transmitidos pelo modelo a uma ferramenta correspondam ao input_schema dela. Sem o modo estrito, o modelo pode chamar uma ferramenta
com argumentos digitados incorretamente (por exemplo, "2" em vez de 2) ou omitir
campos obrigatórios, o que pode interromper as funções downstream e exigir uma lógica
de nova tentativa. Com o modo estrito ativado, a API usa amostragem com restrição de gramática para garantir que:
- A ferramenta
nameé sempre uma das ferramentas que você forneceu. - A ferramenta
inputsempre está em conformidade com oinput_schemadela.
Use o uso estrito de ferramentas quando precisar validar parâmetros de ferramentas, criar fluxos de trabalho de agentes, garantir chamadas de função com segurança de tipo ou lidar com ferramentas complexas com propriedades aninhadas.
Para ativar o uso estrito de ferramentas, defina "strict": true como um campo de nível superior na definição da ferramenta, junto com name, description e input_schema.
REST
O exemplo a seguir mostra como enviar uma solicitação para a API Agent Platform que
define uma ferramenta get_weather estrita. O modelo vai chamar a ferramenta com uma string location e um unit opcional, que pode ser celsius ou fahrenheit.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: uma região compatível com modelos do Anthropic Claude. Para usar o endpoint global, consulte Especificar o endpoint global.
- MODEL: um modelo do Claude compatível, por exemplo,
claude-opus-4-7. - ROLE: o papel associado a uma mensagem. A primeira mensagem precisa usar o papel
user. - CONTENT: o conteúdo, como texto, da mensagem
userouassistant. Por exemplo,What is the weather in San Francisco? - MAX_TOKENS:
número máximo de tokens que podem ser gerados na resposta. Um token tem aproximadamente 3,5 caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.
Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.
- STREAM: um booleano que especifica se a resposta será transmitida ou não. Defina como
truepara transmitir a resposta efalsepara retornar a resposta de uma só vez.
O exemplo usa os seguintes campos de uso estrito de ferramentas. Para detalhes sobre cada campo, consulte a seção Campos de uso estrito de ferramentas.
tools[].strict: um booleano que, quando definido comotrue, ativa a amostragem restrita por gramática para a ferramenta. O modelo tem garantia de chamar a ferramenta com argumentos que correspondem aoinput_schema.tools[].input_schema: um esquema JSON que define os argumentos que o modelo pode transmitir para a ferramenta. Quandostrictétrue, o esquema precisa estar de acordo com o mesmo subconjunto de esquema JSON compatível que o esquemaoutput_configpara saídas JSON.
Método HTTP e URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict
Corpo JSON da solicitação:
{
"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 a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:
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
Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a seguinte. O bloco de conteúdo tool_use contém um campo input cujas chaves e tipos de valor correspondem ao input_schema da ferramenta.
Campos de uso estrito de ferramentas
Os campos a seguir são específicos para o uso estrito de ferramentas. Para informações sobre os outros campos de definição de ferramentas, consulte a documentação Definir ferramentas da Anthropic.
tools[].strict: um booleano que, quando definido comotrue, ativa a amostragem com restrição gramatical para a ferramenta. Quandostrictétrue, a entrada de ferramenta do modelo é restrita para corresponder ao esquema eminput_schema. O valor padrão éfalse.tools[].input_schema: um esquema JSON que define os argumentos que o modelo pode transmitir para a ferramenta. Quandostrictétrue, o esquema precisa estar de acordo com o mesmo subconjunto de esquema JSON usado pelas saídas JSON. Para isso, siga as etapas a seguir:- Defina
additionalPropertiescomofalseem todos os objetos do esquema. - Liste todas as propriedades na matriz
required.
Para conferir a lista completa de recursos compatíveis e incompatíveis, consulte a documentação de limitações do esquema JSON da Anthropic.
- Defina