As saídas estruturadas permitem restringir a saída gerada de um modelo do Claude para que ela esteja exatamente em conformidade com um esquema JSON específico. Isso é útil para garantir que as respostas dos modelos do Claude estejam sempre no formato exato 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 de API. - Uso rigoroso de ferramentas (
tools[].strict): garante que os argumentos que o modelo transmite a uma ferramenta correspondam aoinput_schemada ferramenta. 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 do Anthropic sobre como criar com o Claude: saídas estruturadas e uso rigoroso de ferramentas.
Modelos Anthropic Claude com suporte
A plataforma de agentes do Gemini Enterprise oferece suporte a saídas estruturadas para os seguintes modelos do Anthropic Claude:
- Claude Opus 4.7
- Claude Sonnet 4.6
- Claude Opus 4.6
- (Em breve) Claude Opus 4.5
- (Em breve) Claude Sonnet 4.5
- (Em breve) Claude Haiku 4.5
Controlar o acesso a saídas estruturadas
Por padrão, as saídas estruturadas são desativadas pela restrição de política da organização constraints/vertexai.allowedPartnerModelFeatures. Para ativar as saídas estruturadas, configure essa restrição para permitir explicitamente o recurso structured_outputs.
Além disso, você pode 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 para o endpoint do modelo do editor 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 estar em conformidade.
REST
O exemplo a seguir mostra como enviar uma solicitação para a API da plataforma de agentes 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 com suporte, 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: definido comojson_schemapara restringir a resposta a um objeto JSON que esteja em conformidade com o esquema fornecido schema.output_config.format.schema: um esquema JSON que define a estrutura necessária da resposta do modelo. O esquema precisa estar em conformidade com o subconjunto JSON Schema com suporte.
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 a seguir:
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á em conformidade 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 de mensagens do Claude.
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 oferecem suporte ao JSON Schema padrão com algumas limitações, como exigir queadditionalPropertiesseja definido comofalsepara objetos e não oferecer suporte a restrições numéricas ou de comprimento de string. Para conferir a lista completa de recursos com suporte e sem suporte, consulte a documentação de limitações do JSON Schema do Anthropic. No esquema, geralmente você especifica:type: o tipo JSON do valor nesse 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 que não sejam declarados emproperties.
Usar o uso rigoroso de ferramentas
O uso rigoroso de ferramentas garante que os argumentos que o modelo transmite a uma ferramenta correspondam ao input_schema da ferramenta. Sem o modo rigoroso, o modelo pode chamar uma ferramenta com argumentos com tipo incorreto (por exemplo, "2" em vez de 2) ou omitir campos obrigatórios, o que pode interromper as funções downstream e exigir lógica de nova tentativa. Com o modo estrito ativado, a API usa a amostragem restrita por gramática para garantir que:
- O
nameda ferramenta seja sempre uma das ferramentas fornecidas. - A ferramenta
inputesteja sempre em conformidade com oinput_schemada ferramenta.
Use o uso rigoroso de ferramentas quando precisar validar parâmetros de ferramentas, criar fluxos de trabalho agênticos, garantir chamadas de função com segurança de tipo ou processar ferramentas complexas com propriedades aninhadas.
Para ativar o uso rigoroso de ferramentas, defina "strict": true como um campo de nível superior na sua
definição de ferramenta, junto com name, description e input_schema.
REST
O exemplo a seguir mostra como enviar uma solicitação para a API da plataforma de agentes que define uma ferramenta get_weather rigorosa. O modelo tem a garantia de chamar a ferramenta com uma string location e uma unit opcional que seja 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 com suporte, 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 rigoroso de ferramentas. Para detalhes sobre cada campo, consulte a seção Campos de uso rigoroso de ferramentas.
tools[].strict: um booleano que, quando definido comotrue, ativa a amostragem restrita por gramática para a ferramenta. O modelo tem a garantia de chamar a ferramenta com argumentos que correspondam aoinput_schema.tools[].input_schema: um esquema JSON que define os argumentos que o modelo pode transmitir à ferramenta. Quandostrictétrue, o esquema precisa estar em conformidade com o mesmo subconjunto JSON Schema com suporte 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 a seguir:
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
tool_use bloco de conteúdo contém um campo input cujas
chaves e tipos de valor têm a garantia de corresponder ao
input_schema da ferramenta.
Campos de uso rigoroso de ferramentas
Os campos a seguir são específicos para uso rigoroso de ferramentas. Para informações sobre os outros campos de definição de ferramentas, consulte a documentação do Anthropic sobre como definir ferramentas.
tools[].strict: um booleano que, quando definido comotrue, ativa a amostragem restrita por gramática para a ferramenta. Quandostrictétrue, a entrada da 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 à ferramenta. Quandostrictétrue, o esquema precisa estar em conformidade com o mesmo subconjunto JSON Schema usado pelas saídas JSON. Para isso, siga as etapas a seguir:- Defina
additionalPropertiescomofalseem cada objeto no esquema. - Liste todas as propriedades na matriz
required.
Para conferir a lista completa de recursos com suporte e sem suporte, consulte a documentação de limitações do JSON Schema do Anthropic.
- Defina