В Claude /v1/messages поле output_config.format ограничивает финальный текст ответа JSON Schema. Найдите текстовый блок type: "text" в массиве content и разберите его text JSON-парсером: первым блоком могут быть рассуждения.
{
"model": "claude-opus-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Извлеки имя и возраст: Анна, 29 лет"}],
"output_config": {
"format": {
"type": "json_schema",
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"}
},
"required": ["name", "age"],
"additionalProperties": false
}
}
}
}{"name":"Анна","age":29}{
"model": "claude-opus-5",
"messages": [{"role": "user", "content": "Извлеки имя и возраст: Анна, 29 лет"}],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "person",
"strict": true,
"schema": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"}
},
"required": ["name", "age"],
"additionalProperties": false
}
}
}
}- Kimi. Поле
response_formatпринимается на/v1/chat/completionsи уходит модели как есть. Guard свою схему не подставляет и ответ по ней не проверяет, поэтому разбирайте результат у себя и обрабатывайте случай, когда JSON не пришёл. - Composer и Grok. Поля
response_formatу них нет: запрос с ним получает400 cursor_parameter_unavailableдо списания. Формат придётся просить словами в тексте запроса и проверять ответ на своей стороне.
Guard пока не заявляет отдельную гарантию strict JSON Schema для GLM. Не переносите response_format или schema-поля другого семейства без собственной проверки.
Подтверждённый способ получить типизированные данные — client tool с JSON Schema: модель возвращает function arguments, приложение валидирует их и решает, выполнять ли функцию.
{
"type": "function",
"function": {
"name": "save_invoice",
"description": "Save a validated invoice",
"parameters": {
"type": "object",
"properties": {
"code": {"type": "string"},
"amount": {"type": "number"}
},
"required": ["code", "amount"]
}
}
}- Опишите функцию и schema в нативной форме выбранного API.
- Получите tool call и распарсьте arguments как JSON.
- Проверьте schema в своём приложении; модельный вывод не заменяет валидацию.
- Только после проверки выполните действие и верните tool result.
Полный цикл и правила сохранения ID приведены на странице Client tools.
Gemini возвращает JSON по схеме во всех трёх API. Chat Completions — response_format с type: "json_object" или type: "json_schema" и схемой в json_schema.schema; Responses — text.format той же формы; Messages — output_config.format. Схему исполняет Google.
Строгий режим функций strict: true Gemini не принимает: запрос получает ошибку gemini_strict_tools_unsupported.
Поля структурированного результата Guard передаёт Meta без изменений: response_format в Chat Completions, text.format в Responses. Режим JSON по схеме описан в документации Meta Model API.