Claude Platform Docs
  • Mensagens
  • Agentes Gerenciados
  • Administração

Search...
⌘K
Primeiros passos
Introdução ao ClaudeInício rápido
Desenvolvendo com o Claude
Visão geral dos recursosUsando a API de MensagensMotivos de parada e fallbackRecusas e fallbackCrédito de fallback
Capacidades do modelo
Pensamento estendidoPensamento adaptativoEsforçoOrçamentos de tarefas (beta)Modo rápido (prévia de pesquisa)Saídas estruturadasCitaçõesStreaming de MensagensProcessamento em loteResultados de pesquisaStreaming de recusasSuporte multilíngueEmbeddings
Ferramentas
Visão geralComo funciona o uso de ferramentasTutorial: Crie um agente que usa ferramentasDefinir ferramentasLidar com chamadas de ferramentasUso de ferramentas em paraleloTool Runner (SDK)Uso de ferramentas estritoFerramentas de servidorFerramenta de pesquisa na webFerramenta de busca na webFerramenta de execução de códigoFerramenta de consultoriaFerramenta de busca de ferramentasFerramenta de memóriaFerramenta BashFerramenta de editor de textoFerramenta de uso de computadorSolução de problemas
Infraestrutura de ferramentas
Referência de ferramentasGerenciar contexto de ferramentasCombinações de ferramentasUso de ferramentas com cache de promptChamada programática de ferramentasStreaming granular de ferramentas
Gerenciamento de contexto
Janelas de contextoCompactaçãoEdição de contextoCache de promptMensagens de sistema no meio da conversaCriar um modo de orquestraçãoDiagnóstico de cache (beta)Contagem de tokens
Trabalhando com arquivos
API de ArquivosSuporte a PDF
Habilidades
Visão geralInício rápidoPráticas recomendadasHabilidades para empresasHabilidades na API
MCP
Servidores MCP remotosConector MCP
Claude em plataformas de nuvem
Amazon BedrockAmazon Bedrock (legado)Claude Platform na AWSGoogle CloudMicrosoft Foundry

Log in
Saídas estruturadas
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Mensagens/Capacidades do modelo

Saídas estruturadas

Obtenha resultados JSON validados de fluxos de trabalho de agentes

As saídas estruturadas restringem as respostas do Claude para seguir um esquema específico, garantindo uma saída válida e analisável para processamento posterior. As saídas estruturadas fornecem dois recursos complementares:

  • Saídas JSON (output_config.format): Obtenha a resposta do Claude em um formato JSON específico
  • Uso estrito de ferramentas (strict: true): Garanta a validação de esquema em nomes e entradas de ferramentas

Você pode usar esses recursos de forma independente ou em conjunto na mesma requisição.



As saídas estruturadas estão disponíveis de forma geral na API do Claude para Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Mythos Preview, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Opus 4.5 e Claude Haiku 4.5. No Amazon Bedrock, as saídas estruturadas estão disponíveis de forma geral para Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Opus 4.5 e Claude Haiku 4.5; Claude Sonnet 5, Claude Opus 4.7 e Claude Mythos Preview estão disponíveis através do Claude no Amazon Bedrock (o endpoint Bedrock da Messages API). As saídas estruturadas estão disponíveis na Claude Platform na AWS. No Google Cloud, as saídas estruturadas estão disponíveis de forma geral para Claude Fable 5, Claude Mythos 5, Claude Opus 4.8, Claude Mythos Preview, Claude Opus 4.7, Claude Opus 4.6, Claude Sonnet 5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Opus 4.5 e Claude Haiku 4.5. As saídas estruturadas estão disponíveis de forma geral no Microsoft Foundry e requerem uma implantação Hosted on Anthropic.



Este recurso se qualifica para Zero Data Retention (ZDR) com retenção técnica limitada. Consulte a seção Retenção de dados para detalhes sobre o que é retido e por quê.



Migrando da versão beta? O parâmetro output_format foi movido para output_config.format, e os cabeçalhos beta não são mais necessários. O cabeçalho beta antigo (structured-outputs-2025-11-13) e o parâmetro output_format continuarão funcionando durante um período de transição. Consulte os exemplos de código a seguir para o formato atualizado da API.

Por que usar saídas estruturadas

Sem saídas estruturadas, o Claude pode gerar respostas JSON malformadas ou entradas de ferramentas inválidas que quebram suas aplicações. Mesmo com prompts cuidadosos, você pode encontrar:

  • Erros de análise devido a sintaxe JSON inválida
  • Campos obrigatórios ausentes
  • Tipos de dados inconsistentes
  • Violações de esquema que exigem tratamento de erros e novas tentativas

As saídas estruturadas garantem respostas em conformidade com o esquema por meio de decodificação restrita:

  • Sempre válido: Chega de erros de JSON.parse()
  • Tipagem segura: Tipos de campos e campos obrigatórios garantidos
  • Confiável: Sem necessidade de novas tentativas por violações de esquema

Saídas JSON

As saídas JSON controlam o formato de resposta do Claude, garantindo que o Claude retorne JSON válido correspondente ao seu esquema. Use saídas JSON quando precisar:

  • Controlar o formato de resposta do Claude
  • Extrair dados de imagens ou texto
  • Gerar relatórios estruturados
  • Formatar respostas de API

Início rápido

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Extract the key information from this email: John Smith ([email protected]) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm.",
        }
    ],
    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,
            },
        }
    },
)
print(response.content[0].text)

Formato de resposta: JSON válido correspondente ao seu esquema em response.content[0].text

Output
{
  "name": "John Smith",
  "email": "[email protected]",
  "plan_interest": "Enterprise",
  "demo_requested": true
}

Como funciona

  1. 1

    Defina seu esquema JSON

    Crie um esquema JSON que descreva a estrutura que você deseja que o Claude siga. O esquema usa o formato padrão JSON Schema com algumas limitações (consulte Limitações do JSON Schema).

  2. 2

    Adicione o parâmetro output_config.format

    Inclua o parâmetro output_config.format na sua requisição de API com type: "json_schema" e sua definição de esquema.

  3. 3

    Analise a resposta

    A resposta do Claude é um JSON válido correspondente ao seu esquema, retornado em response.content[0].text.

Trabalhando com saídas JSON nos SDKs

Os SDKs fornecem auxiliares que facilitam o trabalho com saídas JSON, incluindo transformação de esquema, validação automática e integração com bibliotecas de esquema populares.



O método client.messages.parse() do SDK Python ainda aceita output_format como um parâmetro de conveniência e o traduz internamente para output_config.format. Outros SDKs exigem output_config diretamente. Os exemplos a seguir mostram a sintaxe dos auxiliares do SDK.

Usando definições de esquema nativas

Em vez de escrever esquemas JSON brutos, você pode usar ferramentas de definição de esquema familiares na sua linguagem:

  • Python: Modelos Pydantic com client.messages.parse()
  • TypeScript: Esquemas Zod com zodOutputFormat() ou literais de JSON Schema tipados com jsonSchemaOutputFormat()
  • Java: Classes Java simples com derivação automática de esquema através de outputConfig(Class<T>)
  • Ruby: Classes Anthropic::BaseModel com output_config: {format: Model}
  • PHP: Classes implementando StructuredOutputModel com outputConfig: ['format' => MyClass::class]
  • C#: Classes C# simples com a sobrecarga genérica Create<T>(), que deriva o esquema automaticamente
  • Go: Structs Go refletidas em esquemas JSON automaticamente na API beta, ou esquemas JSON brutos através de output_config
  • CLI: Esquemas JSON brutos passados através de output_config
from pydantic import BaseModel
from anthropic import Anthropic


class ContactInfo(BaseModel):
    name: str
    email: str
    plan_interest: str
    demo_requested: bool


client = Anthropic()

response = client.messages.parse(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Extract the key information from this email: John Smith ([email protected]) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm.",
        }
    ],
    output_format=ContactInfo,
)

print(response.parsed_output)

Métodos específicos do SDK

Cada SDK fornece auxiliares que facilitam o trabalho com saídas estruturadas. Consulte as páginas individuais de cada SDK para obter detalhes completos.

Como funciona a transformação do SDK

Os SDKs Python, TypeScript, Ruby e PHP transformam automaticamente esquemas com recursos não suportados. Os SDKs C# e Go aplicam as mesmas transformações quando o esquema é derivado de um tipo nativo (Create<T>() em C#; reflexão de struct ou BetaJSONSchemaOutputFormat() na API beta do Go). As etapas de transformação:

  1. Remover restrições não suportadas (por exemplo, minimum, maximum, minLength, maxLength)
  2. Atualizar descrições com informações de restrição (por exemplo, "Must be at least 100"), quando a restrição não é diretamente suportada com saídas estruturadas
  3. Adicionar additionalProperties: false a todos os objetos
  4. Filtrar formatos de string apenas para a lista suportada
  5. Validar respostas contra seu esquema original (com todas as restrições)

Isso significa que o Claude recebe um esquema simplificado, mas seu código ainda aplica todas as restrições por meio de validação.

Exemplo: Um campo Pydantic com minimum: 100 torna-se um inteiro simples no esquema enviado, mas o SDK atualiza a descrição para "Must be at least 100" e valida a resposta contra a restrição original.

Casos de uso comuns

Uso estrito de ferramentas

Para aplicar conformidade com JSON Schema em entradas de ferramentas com amostragem restrita por gramática, consulte Uso estrito de ferramentas.

Usando ambos os recursos juntos

As saídas JSON e o uso estrito de ferramentas resolvem problemas diferentes e funcionam juntos:

  • Saídas JSON controlam o formato de resposta do Claude (o que o Claude diz)
  • Uso estrito de ferramentas valida parâmetros de ferramentas (como o Claude chama suas funções)

Quando combinados, o Claude pode chamar ferramentas com parâmetros garantidamente válidos E retornar respostas JSON estruturadas. Isso é útil para fluxos de trabalho agênticos onde você precisa tanto de chamadas de ferramentas confiáveis quanto de saídas finais estruturadas.

response = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "Help me plan a trip to Paris departing May 15, 2026",
        }
    ],
    # Saídas JSON: formato de resposta estruturado
    output_config={
        "format": {
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "summary": {"type": "string"},
                    "next_steps": {"type": "array", "items": {"type": "string"}},
                },
                "required": ["summary", "next_steps"],
                "additionalProperties": False,
            },
        }
    },
    # Uso estrito de ferramentas: parâmetros de ferramenta garantidos
    tools=[
        {
            "name": "search_flights",
            "strict": True,
            "input_schema": {
                "type": "object",
                "properties": {
                    "destination": {"type": "string"},
                    "date": {"type": "string", "format": "date"},
                },
                "required": ["destination", "date"],
                "additionalProperties": False,
            },
        }
    ],
)

print(response)

Considerações importantes

Compilação e cache de gramática

As saídas estruturadas usam amostragem restrita com artefatos de gramática compilados. Isso introduz algumas características de desempenho a serem observadas:

  • Latência da primeira requisição: Na primeira vez que você usa um esquema específico, há latência adicional enquanto a gramática é compilada
  • Cache automático: Gramáticas compiladas são armazenadas em cache por 24 horas a partir do último uso, tornando as requisições subsequentes muito mais rápidas
  • Invalidação de cache: O cache é invalidado se você alterar:
    • A estrutura do esquema JSON
    • O conjunto de ferramentas na sua requisição (ao usar saídas estruturadas e uso de ferramentas juntos)
    • Alterar apenas os campos name ou description não invalida o cache

Modificação de prompt e custos de token

Ao usar saídas estruturadas, o Claude recebe automaticamente um prompt do sistema adicional explicando o formato de saída esperado. Isso significa que:

  • Sua contagem de tokens de entrada é ligeiramente maior
  • O prompt injetado custa tokens como qualquer outro prompt do sistema
  • Alterar o parâmetro output_config.format invalidará qualquer cache de prompt para aquele thread de conversa

Limitações do JSON Schema

As saídas estruturadas suportam JSON Schema padrão com algumas limitações. Tanto as saídas JSON quanto o uso estrito de ferramentas compartilham essas limitações.



Os SDKs Python, TypeScript, Ruby e PHP podem transformar automaticamente esquemas com recursos não suportados, removendo-os e adicionando restrições às descrições de campos. Os SDKs C# e Go fazem o mesmo quando o esquema é derivado de um tipo nativo. Consulte Métodos específicos do SDK para obter detalhes.

Ordenação de propriedades

Ao usar saídas estruturadas, as propriedades em objetos mantêm sua ordenação definida no seu esquema, com uma ressalva importante: propriedades obrigatórias aparecem primeiro, seguidas por propriedades opcionais.

Por exemplo, dado este esquema:

{
  "type": "object",
  "properties": {
    "notes": { "type": "string" },
    "name": { "type": "string" },
    "email": { "type": "string" },
    "age": { "type": "integer" }
  },
  "required": ["name", "email"],
  "additionalProperties": false
}

A saída ordenará as propriedades como:

  1. name (obrigatório, na ordem do esquema)
  2. email (obrigatório, na ordem do esquema)
  3. notes (opcional, na ordem do esquema)
  4. age (opcional, na ordem do esquema)

Isso significa que a saída pode ser assim:

{
  "name": "John Smith",
  "email": "[email protected]",
  "notes": "Interested in enterprise plan",
  "age": 35
}

Se a ordem das propriedades na saída for importante para sua aplicação, marque todas as propriedades como obrigatórias ou leve em conta essa reordenação na sua lógica de análise.

Saídas inválidas

Embora as saídas estruturadas garantam conformidade com o esquema na maioria dos casos, há cenários em que a saída pode não corresponder ao seu esquema:

Recusas (stop_reason: "refusal")

O Claude mantém suas propriedades de segurança e utilidade mesmo ao usar saídas estruturadas. Se o Claude recusar uma requisição por motivos de segurança:

  • A resposta tem stop_reason: "refusal"
  • Você receberá um código de status 200
  • Você será cobrado pelos tokens gerados
  • A saída pode não corresponder ao seu esquema porque a mensagem de recusa tem precedência sobre as restrições do esquema

Limite de tokens atingido (stop_reason: "max_tokens")

Se a resposta for cortada por atingir o limite de max_tokens:

  • A resposta tem stop_reason: "max_tokens"
  • A saída pode estar incompleta e não corresponder ao seu esquema
  • Tente novamente com um valor de max_tokens mais alto para obter a saída estruturada completa

Limites de complexidade de esquema

As saídas estruturadas funcionam compilando seus esquemas JSON em uma gramática que restringe a saída do Claude. Esquemas mais complexos produzem gramáticas maiores que levam mais tempo para compilar. Para proteger contra tempos de compilação excessivos, a API aplica vários limites de complexidade.

Limites explícitos

Os seguintes limites se aplicam a todas as requisições com output_config.format ou strict: true:

LimiteValorDescrição
Ferramentas estritas por requisição20Número máximo de ferramentas com strict: true. Ferramentas não estritas não contam para esse limite.
Parâmetros opcionais24Total de parâmetros opcionais em todos os esquemas de ferramentas estritas e esquemas de saída JSON. Cada parâmetro não listado em required conta para esse limite.
Parâmetros com tipos union16Total de parâmetros que usam anyOf ou arrays de tipo (por exemplo, "type": ["string", "null"]) em todos os esquemas estritos. Esses são especialmente custosos porque criam custo de compilação exponencial.


Esses limites se aplicam ao total combinado em todos os esquemas estritos em uma única requisição. Por exemplo, se você tiver 4 ferramentas estritas com 6 parâmetros opcionais cada, você atingirá o limite de 24 parâmetros mesmo que nenhuma ferramenta individual pareça complexa.

Limites internos adicionais

Além dos limites explícitos na tabela anterior, há limites internos adicionais no tamanho da gramática compilada. Esses limites existem porque a complexidade do esquema não se reduz a uma única dimensão: recursos como parâmetros opcionais, tipos union, objetos aninhados e número de ferramentas interagem entre si de maneiras que podem tornar a gramática compilada desproporcionalmente grande.

Quando esses limites são excedidos, você receberá um erro 400 com a mensagem "Schema is too complex for compilation." Esses erros significam que a complexidade combinada dos seus esquemas excede o que pode ser compilado de forma eficiente, mesmo que cada limite individual na tabela anterior seja satisfeito. Como uma última salvaguarda, a API também aplica um timeout de compilação de 180 segundos. Esquemas que passam em todas as verificações explícitas, mas produzem gramáticas compiladas muito grandes, podem atingir esse timeout.

Dicas para reduzir a complexidade do esquema

Se você estiver atingindo limites de complexidade, tente estas estratégias em ordem:

  1. Marque apenas ferramentas críticas como estritas. Se você tiver muitas ferramentas, reserve isso para ferramentas onde violações de esquema causam problemas reais, e confie na aderência natural do Claude para ferramentas mais simples.

  2. Reduza parâmetros opcionais. Torne os parâmetros required sempre que possível. Cada parâmetro opcional aproximadamente dobra uma parte do espaço de estados da gramática. Se um parâmetro sempre tem um padrão razoável, considere torná-lo obrigatório e fazer o Claude fornecer esse padrão explicitamente.

  3. Simplifique estruturas aninhadas. Objetos profundamente aninhados com campos opcionais aumentam a complexidade. Achate as estruturas sempre que possível.

  4. Divida em múltiplas requisições. Se você tiver muitas ferramentas estritas, considere dividi-las em requisições separadas ou subagentes.

Para problemas persistentes com esquemas válidos, entre em contato com o suporte com sua definição de esquema.

Retenção de dados

Prompts e respostas são processados com ZDR ao usar saídas estruturadas. No entanto, o próprio esquema JSON é temporariamente armazenado em cache por até 24 horas desde o último uso para fins de otimização. Nenhum dado de prompt ou resposta é retido além da resposta da API.

As saídas estruturadas são elegíveis para HIPAA, mas PHI não deve ser incluído em definições de esquema JSON. A API compila esquemas JSON em gramáticas que são armazenadas em cache separadamente do conteúdo da mensagem, e esses esquemas em cache não recebem as mesmas proteções de PHI que prompts e respostas. Não inclua PHI em nomes de propriedades de esquema, valores enum, valores const ou expressões regulares pattern. PHI deve aparecer apenas no conteúdo da mensagem (prompts e respostas), onde é protegido sob as salvaguardas da HIPAA.

Para elegibilidade de ZDR e HIPAA em todos os recursos, consulte API e retenção de dados.

Compatibilidade de recursos

Funciona com:

  • Processamento em lote: Processe saídas estruturadas em escala com 50% de desconto
  • Contagem de tokens: Conte tokens sem compilação
  • Streaming: Faça streaming de saídas estruturadas como respostas normais
  • Uso combinado: Use saídas JSON (output_config.format) e uso estrito de ferramentas (strict: true) juntos na mesma requisição

Incompatível com:

  • Citações: Citações exigem intercalar blocos de citação com texto, o que conflita com restrições estritas de esquema JSON. Retorna erro 400 se citações estiverem habilitadas com output_config.format.
  • Preenchimento prévio de mensagem: Incompatível com saídas JSON


Escopo da gramática: Gramáticas se aplicam apenas à saída direta do Claude, não a chamadas de uso de ferramentas, resultados de ferramentas ou tags de pensamento (ao usar Pensamento estendido). O estado da gramática é redefinido entre seções, permitindo que o Claude pense livremente enquanto ainda produz saída estruturada na resposta final.

Próximos passos

Citações

Faça o Claude citar suas fontes ao responder perguntas sobre documentos fornecidos.


Uso estrito de ferramentas

Aplique conformidade com JSON Schema nas entradas de ferramentas do Claude com amostragem restrita por gramática.


Uso de ferramentas com o Claude

Conecte o Claude a ferramentas e APIs externas. Aprenda onde as ferramentas são executadas e como o loop agêntico funciona.

Preços

Saiba mais sobre a estrutura de preços da Anthropic para modelos e recursos.

Was this page helpful?

  • Por que usar saídas estruturadas
  • Saídas JSON
  • Início rápido
  • Como funciona
  • Trabalhando com saídas JSON nos SDKs
  • Casos de uso comuns
  • Uso estrito de ferramentas
  • Usando ambos os recursos juntos
  • Considerações importantes
  • Compilação e cache de gramática
  • Modificação de prompt e custos de token
  • Limitações do JSON Schema
  • Ordenação de propriedades
  • Saídas inválidas
  • Limites de complexidade de esquema
  • Retenção de dados
  • Compatibilidade de recursos
  • Próximos passos