Claude Platform Docs
  • Сообщения
  • Управляемые агенты
  • Администрирование

Search...
⌘K
Первые шаги
Введение в ClaudeБыстрый старт
Разработка с Claude
Обзор возможностейИспользование Messages APIПричины остановки и резервный вариантОтказы и резервный вариантРезервный кредит
Возможности модели
Расширенное мышлениеАдаптивное мышлениеУсилиеБюджеты задач (бета)Быстрый режим (исследовательская предварительная версия)Структурированные выходные данныеЦитированиеПотоковая передача сообщенийПакетная обработкаРезультаты поискаПотоковая передача отказовМногоязычная поддержкаЭмбеддинги
Инструменты
ОбзорКак работает использование инструментовРуководство: создание агента с использованием инструментовОпределение инструментовОбработка вызовов инструментовПараллельное использование инструментовTool Runner (SDK)Строгое использование инструментовСерверные инструментыИнструмент веб-поискаИнструмент веб-загрузкиИнструмент выполнения кодаИнструмент советникаИнструмент поиска инструментовИнструмент памятиИнструмент BashИнструмент текстового редактораИнструмент использования компьютераУстранение неполадок
Инфраструктура инструментов
Справочник по инструментамУправление контекстом инструментовКомбинации инструментовИспользование инструментов с кэшированием подсказокПрограммный вызов инструментовДетальная потоковая передача инструментов
Управление контекстом
Контекстные окнаСжатиеРедактирование контекстаКэширование подсказокСистемные сообщения в середине разговораСоздание режима оркестрацииДиагностика кэша (бета)Подсчёт токенов
Работа с файлами
Files APIПоддержка PDF
Навыки
ОбзорБыстрый стартРекомендацииНавыки для предприятийНавыки в API
MCP
Удалённые серверы MCPКоннектор MCP
Claude на облачных платформах
Amazon BedrockAmazon Bedrock (устаревшая версия)Claude Platform на AWSGoogle CloudMicrosoft Foundry

Log in
Структурированные выходные данные
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
Сообщения/Возможности модели

Структурированные выходные данные

Получайте валидированные результаты в формате JSON из агентных рабочих процессов

Структурированные выходные данные ограничивают ответы Claude так, чтобы они следовали определённой схеме, обеспечивая валидный, пригодный для разбора вывод для последующей обработки. Структурированные выходные данные предоставляют две взаимодополняющие возможности:

  • Вывод в формате JSON (output_config.format): получение ответа Claude в определённом формате JSON
  • Строгое использование инструментов (strict: true): гарантированная валидация схемы для имён инструментов и входных данных

Вы можете использовать эти возможности независимо или вместе в одном запросе.



Структурированные выходные данные общедоступны в Claude API для 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 и Claude Haiku 4.5. В Amazon Bedrock структурированные выходные данные общедоступны для Claude Opus 4.6, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Opus 4.5 и Claude Haiku 4.5; Claude Sonnet 5, Claude Opus 4.7 и Claude Mythos Preview доступны через Claude в Amazon Bedrock (конечная точка Bedrock с Messages API). Структурированные выходные данные доступны в Claude Platform на AWS. В Google Cloud структурированные выходные данные общедоступны для 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 и Claude Haiku 4.5. Структурированные выходные данные общедоступны в Microsoft Foundry и требуют развёртывания с размещением у Anthropic.



Эта функция соответствует требованиям Zero Data Retention (ZDR) с ограниченным техническим хранением. Подробности о том, что сохраняется и почему, см. в разделе Хранение данных.



Переходите с бета-версии? Параметр output_format перемещён в output_config.format, а бета-заголовки больше не требуются. Старый бета-заголовок (structured-outputs-2025-11-13) и параметр output_format продолжат работать в течение переходного периода. Обновлённую форму API см. в следующих примерах кода.

Зачем использовать структурированные выходные данные

Без структурированных выходных данных Claude может генерировать некорректные JSON-ответы или недопустимые входные данные инструментов, которые нарушают работу ваших приложений. Даже при тщательном составлении подсказок вы можете столкнуться со следующим:

  • Ошибки разбора из-за недопустимого синтаксиса JSON
  • Отсутствие обязательных полей
  • Несогласованные типы данных
  • Нарушения схемы, требующие обработки ошибок и повторных попыток

Структурированные выходные данные гарантируют соответствие ответов схеме благодаря ограниченному декодированию:

  • Всегда валидно: больше никаких ошибок JSON.parse()
  • Типобезопасно: гарантированные типы полей и обязательные поля
  • Надёжно: не нужны повторные попытки при нарушениях схемы

Вывод в формате JSON

Вывод в формате JSON управляет форматом ответа Claude, гарантируя, что Claude возвращает валидный JSON, соответствующий вашей схеме. Используйте вывод в формате JSON, когда вам нужно:

  • Управлять форматом ответа Claude
  • Извлекать данные из изображений или текста
  • Генерировать структурированные отчёты
  • Форматировать ответы API

Быстрый старт

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)

Формат ответа: валидный JSON, соответствующий вашей схеме, в response.content[0].text

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

Как это работает

  1. 1

    Определите вашу JSON-схему

    Создайте JSON-схему, описывающую структуру, которой должен следовать Claude. Схема использует стандартный формат JSON Schema с некоторыми ограничениями (см. Ограничения JSON Schema).

  2. 2

    Добавьте параметр output_config.format

    Включите параметр output_config.format в ваш запрос к API с type: "json_schema" и определением вашей схемы.

  3. 3

    Разберите ответ

    Ответ Claude — это валидный JSON, соответствующий вашей схеме, возвращаемый в response.content[0].text.

Работа с выводом в формате JSON в SDK

SDK предоставляют вспомогательные средства, упрощающие работу с выводом в формате JSON, включая преобразование схем, автоматическую валидацию и интеграцию с популярными библиотеками схем.



Метод client.messages.parse() в Python SDK по-прежнему принимает output_format как параметр для удобства и внутренне преобразует его в output_config.format. Другие SDK требуют output_config напрямую. Следующие примеры показывают синтаксис вспомогательных средств SDK.

Использование нативных определений схем

Вместо написания «сырых» JSON-схем вы можете использовать привычные инструменты определения схем на вашем языке:

  • Python: модели Pydantic с client.messages.parse()
  • TypeScript: схемы Zod с zodOutputFormat() или типизированные литералы JSON Schema с jsonSchemaOutputFormat()
  • Java: обычные Java-классы с автоматическим выводом схемы через outputConfig(Class<T>)
  • Ruby: классы Anthropic::BaseModel с output_config: {format: Model}
  • PHP: классы, реализующие StructuredOutputModel, с outputConfig: ['format' => MyClass::class]
  • C#: обычные C#-классы с обобщённой перегрузкой Create<T>(), которая выводит схему автоматически
  • Go: структуры Go, автоматически отражаемые в JSON-схемы в бета-версии API, или «сырые» JSON-схемы через output_config
  • CLI: «сырые» JSON-схемы, передаваемые через 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)

Методы, специфичные для SDK

Каждый SDK предоставляет вспомогательные средства, упрощающие работу со структурированными выходными данными. Полные сведения см. на страницах отдельных SDK.

Как работает преобразование в SDK

SDK для Python, TypeScript, Ruby и PHP автоматически преобразуют схемы с неподдерживаемыми возможностями. SDK для C# и Go применяют те же преобразования, когда схема выводится из нативного типа (Create<T>() в C#; отражение структур или BetaJSONSchemaOutputFormat() в бета-версии Go API). Шаги преобразования:

  1. Удаление неподдерживаемых ограничений (например, minimum, maximum, minLength, maxLength)
  2. Обновление описаний информацией об ограничениях (например, «Должно быть не менее 100»), когда ограничение не поддерживается напрямую структурированными выходными данными
  3. Добавление additionalProperties: false ко всем объектам
  4. Фильтрация строковых форматов до списка поддерживаемых
  5. Валидация ответов по вашей исходной схеме (со всеми ограничениями)

Это означает, что Claude получает упрощённую схему, но ваш код по-прежнему применяет все ограничения через валидацию.

Пример: поле Pydantic с minimum: 100 становится обычным целым числом в отправляемой схеме, но SDK обновляет описание до «Должно быть не менее 100» и валидирует ответ по исходному ограничению.

Распространённые сценарии использования

Строгое использование инструментов

Для обеспечения соответствия входных данных инструментов JSON Schema с помощью грамматически ограниченной выборки см. Строгое использование инструментов.

Совместное использование обеих возможностей

Вывод в формате JSON и строгое использование инструментов решают разные задачи и работают вместе:

  • Вывод в формате JSON управляет форматом ответа Claude (что Claude говорит)
  • Строгое использование инструментов валидирует параметры инструментов (как Claude вызывает ваши функции)

В сочетании Claude может вызывать инструменты с гарантированно валидными параметрами И возвращать структурированные JSON-ответы. Это полезно для агентных рабочих процессов, где вам нужны как надёжные вызовы инструментов, так и структурированные итоговые выходные данные.

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",
        }
    ],
    # Вывод в формате JSON: структурированный формат ответа
    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,
            },
        }
    },
    # Строгое использование инструментов: гарантированные параметры инструментов
    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)

Важные соображения

Компиляция грамматики и кэширование

Структурированные выходные данные используют ограниченную выборку со скомпилированными грамматическими артефактами. Это вводит некоторые характеристики производительности, о которых следует знать:

  • Задержка первого запроса: при первом использовании конкретной схемы возникает дополнительная задержка, пока грамматика компилируется
  • Автоматическое кэширование: скомпилированные грамматики кэшируются на 24 часа с момента последнего использования, что делает последующие запросы намного быстрее
  • Инвалидация кэша: кэш инвалидируется, если вы изменяете:
    • Структуру JSON-схемы
    • Набор инструментов в вашем запросе (при использовании структурированных выходных данных вместе с использованием инструментов)
    • Изменение только полей name или description не инвалидирует кэш

Модификация подсказки и стоимость токенов

При использовании структурированных выходных данных Claude автоматически получает дополнительную системную подсказку, объясняющую ожидаемый формат вывода. Это означает:

  • Количество ваших входных токенов немного выше
  • Внедрённая подсказка стоит вам токенов, как и любая другая системная подсказка
  • Изменение параметра output_config.format инвалидирует любой кэш подсказок для этой ветки разговора

Ограничения JSON Schema

Структурированные выходные данные поддерживают стандартный JSON Schema с некоторыми ограничениями. Вывод в формате JSON и строгое использование инструментов разделяют эти ограничения.



SDK для Python, TypeScript, Ruby и PHP могут автоматически преобразовывать схемы с неподдерживаемыми возможностями, удаляя их и добавляя ограничения в описания полей. SDK для C# и Go делают то же самое, когда схема выводится из нативного типа. Подробности см. в разделе Методы, специфичные для SDK.

Порядок свойств

При использовании структурированных выходных данных свойства в объектах сохраняют порядок, определённый в вашей схеме, с одной важной оговоркой: обязательные свойства идут первыми, за ними следуют необязательные свойства.

Например, для следующей схемы:

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

Вывод упорядочит свойства следующим образом:

  1. name (обязательное, в порядке схемы)
  2. email (обязательное, в порядке схемы)
  3. notes (необязательное, в порядке схемы)
  4. age (необязательное, в порядке схемы)

Это означает, что вывод может выглядеть так:

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

Если порядок свойств в выводе важен для вашего приложения, пометьте все свойства как обязательные или учтите это переупорядочивание в вашей логике разбора.

Недопустимые выходные данные

Хотя структурированные выходные данные гарантируют соответствие схеме в большинстве случаев, существуют сценарии, когда вывод может не соответствовать вашей схеме:

Отказы (stop_reason: "refusal")

Claude сохраняет свои свойства безопасности и полезности даже при использовании структурированных выходных данных. Если Claude отказывается выполнить запрос по соображениям безопасности:

  • Ответ имеет stop_reason: "refusal"
  • Вы получите код состояния 200
  • С вас будет взиматься плата за сгенерированные токены
  • Вывод может не соответствовать вашей схеме, поскольку сообщение об отказе имеет приоритет над ограничениями схемы

Достигнут лимит токенов (stop_reason: "max_tokens")

Если ответ обрезан из-за достижения лимита max_tokens:

  • Ответ имеет stop_reason: "max_tokens"
  • Вывод может быть неполным и не соответствовать вашей схеме
  • Повторите попытку с более высоким значением max_tokens, чтобы получить полный структурированный вывод

Ограничения сложности схемы

Структурированные выходные данные работают путём компиляции ваших JSON-схем в грамматику, которая ограничивает вывод Claude. Более сложные схемы создают более крупные грамматики, компиляция которых занимает больше времени. Для защиты от чрезмерного времени компиляции API применяет несколько ограничений сложности.

Явные ограничения

Следующие ограничения применяются ко всем запросам с output_config.format или strict: true:

ОграничениеЗначениеОписание
Строгих инструментов на запрос20Максимальное количество инструментов с strict: true. Нестрогие инструменты не учитываются в этом лимите.
Необязательных параметров24Общее количество необязательных параметров по всем схемам строгих инструментов и схемам вывода JSON. Каждый параметр, не указанный в required, учитывается в этом лимите.
Параметров с типами-объединениями16Общее количество параметров, использующих anyOf или массивы типов (например, "type": ["string", "null"]), по всем строгим схемам. Они особенно затратны, поскольку создают экспоненциальную стоимость компиляции.


Эти ограничения применяются к совокупному итогу по всем строгим схемам в одном запросе. Например, если у вас 4 строгих инструмента с 6 необязательными параметрами каждый, вы достигнете лимита в 24 параметра, даже если ни один отдельный инструмент не кажется сложным.

Дополнительные внутренние ограничения

Помимо явных ограничений в предыдущей таблице, существуют дополнительные внутренние ограничения на размер скомпилированной грамматики. Эти ограничения существуют, потому что сложность схемы не сводится к одному измерению: такие возможности, как необязательные параметры, типы-объединения, вложенные объекты и количество инструментов, взаимодействуют друг с другом способами, которые могут сделать скомпилированную грамматику непропорционально большой.

При превышении этих ограничений вы получите ошибку 400 с сообщением «Schema is too complex for compilation». Эти ошибки означают, что совокупная сложность ваших схем превышает то, что может быть эффективно скомпилировано, даже если каждое отдельное ограничение в предыдущей таблице соблюдено. В качестве последней защитной меры API также применяет тайм-аут компиляции в 180 секунд. Схемы, которые проходят все явные проверки, но создают очень большие скомпилированные грамматики, могут достичь этого тайм-аута.

Советы по снижению сложности схемы

Если вы достигаете ограничений сложности, попробуйте следующие стратегии по порядку:

  1. Помечайте как строгие только критически важные инструменты. Если у вас много инструментов, зарезервируйте это для инструментов, где нарушения схемы вызывают реальные проблемы, и полагайтесь на естественное соблюдение Claude для более простых инструментов.

  2. Уменьшите количество необязательных параметров. Делайте параметры required, где это возможно. Каждый необязательный параметр примерно удваивает часть пространства состояний грамматики. Если параметр всегда имеет разумное значение по умолчанию, рассмотрите возможность сделать его обязательным и позволить Claude явно предоставлять это значение по умолчанию.

  3. Упростите вложенные структуры. Глубоко вложенные объекты с необязательными полями усугубляют сложность. Делайте структуры более плоскими, где это возможно.

  4. Разделите на несколько запросов. Если у вас много строгих инструментов, рассмотрите возможность разделить их между отдельными запросами или подагентами.

При постоянных проблемах с валидными схемами обратитесь в поддержку с определением вашей схемы.

Хранение данных

Подсказки и ответы обрабатываются с ZDR при использовании структурированных выходных данных. Однако сама JSON-схема временно кэшируется на срок до 24 часов с момента последнего использования в целях оптимизации. Никакие данные подсказок или ответов не сохраняются после ответа API.

Структурированные выходные данные соответствуют требованиям HIPAA, но PHI не должна включаться в определения JSON-схем. API компилирует JSON-схемы в грамматики, которые кэшируются отдельно от содержимого сообщений, и эти кэшированные схемы не получают тех же защит PHI, что подсказки и ответы. Не включайте PHI в имена свойств схемы, значения enum, значения const или регулярные выражения pattern. PHI должна появляться только в содержимом сообщений (подсказках и ответах), где она защищена в соответствии с мерами безопасности HIPAA.

О соответствии ZDR и HIPAA для всех функций см. API и хранение данных.

Совместимость функций

Работает с:

  • Пакетная обработка: обрабатывайте структурированные выходные данные в масштабе со скидкой 50%
  • Подсчёт токенов: подсчитывайте токены без компиляции
  • Потоковая передача: передавайте структурированные выходные данные потоком, как обычные ответы
  • Совместное использование: используйте вывод в формате JSON (output_config.format) и строгое использование инструментов (strict: true) вместе в одном запросе

Несовместимо с:

  • Цитирование: цитирование требует чередования блоков цитат с текстом, что конфликтует со строгими ограничениями JSON-схемы. Возвращает ошибку 400, если цитирование включено с output_config.format.
  • Предзаполнение сообщений: несовместимо с выводом в формате JSON


Область действия грамматики: грамматики применяются только к прямому выводу Claude, а не к вызовам использования инструментов, результатам инструментов или тегам мышления (при использовании расширенного мышления). Состояние грамматики сбрасывается между разделами, позволяя Claude свободно мыслить, при этом создавая структурированный вывод в итоговом ответе.

Дальнейшие шаги

Цитирование

Позвольте Claude ссылаться на источники при ответах на вопросы о предоставленных документах.


Строгое использование инструментов

Обеспечьте соответствие входных данных инструментов Claude JSON Schema с помощью грамматически ограниченной выборки.


Использование инструментов с Claude

Подключите Claude к внешним инструментам и API. Узнайте, где выполняются инструменты и как работает агентный цикл.

Цены

Узнайте о структуре цен Anthropic для моделей и функций.

Was this page helpful?

  • Зачем использовать структурированные выходные данные
  • Вывод в формате JSON
  • Быстрый старт
  • Как это работает
  • Работа с выводом в формате JSON в SDK
  • Распространённые сценарии использования
  • Строгое использование инструментов
  • Совместное использование обеих возможностей
  • Важные соображения
  • Компиляция грамматики и кэширование
  • Модификация подсказки и стоимость токенов
  • Ограничения JSON Schema
  • Порядок свойств
  • Недопустимые выходные данные
  • Ограничения сложности схемы
  • Хранение данных
  • Совместимость функций
  • Дальнейшие шаги