Режим JSON и вывод вызова инструментов
Используйте response_format={'type':'json_object'} или единичный вызов инструмента, чтобы принудительно получать вывод, пригодный для машинного разбора.
«Режим JSON и вывод вызова инструментов» — бесплатный урок AI Agents на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Необходимость структуры
Неформатированный текст от LLM плохо подходит для кода. Рабочим агентам нужен вывод, который можно разобрать: JSON, XML, аргументы функций — а не фраза «ответ такой...»
Режим JSON (OpenAI)
Попросите модель «всегда возвращать JSON»:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Return a JSON object with name and age.'},
{'role': 'user', 'content': 'Alice, 30 years old.'}
],
response_format={'type': 'json_object'}
)
import json
data = json.loads(response.choices[0].message.content)Ограничение режима JSON
Режим JSON гарантирует только корректный JSON, но не вашу SHAPE. Модель может вернуть {} или {"foo": "bar"}. Всегда проверяйте также форму данных.
Структурированные результаты (строгий режим)
Структурированные результаты OpenAI гарантируют, что ответ соответствует JSON Schema:
schema = {
'name': 'person',
'schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
},
'required': ['name', 'age'],
'additionalProperties': False
},
'strict': True
}
response = client.chat.completions.create(
model='gpt-4o-2024-08-06',
messages=...,
response_format={'type': 'json_schema', 'json_schema': schema}
)Как работает строгий режим
Строгий режим ограничивает декодирование, поэтому модель буквально не может создать недопустимый токен. Результат на 100% соответствует схеме.
Вызовы инструментов как структурированный результат
Можно принудительно вызвать определённый инструмент, чтобы извлечь структурированные данные:
tools = [{'type': 'function', 'function': {
'name': 'submit_person',
'parameters': {
'type': 'object',
'properties': {'name': {'type': 'string'}, 'age': {'type': 'integer'}},
'required': ['name', 'age']
}
}}]
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=...,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'submit_person'}}
)
args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)Использование инструментов Anthropic для получения результата
В Anthropic используется тот же подход с tool_choice="tool":
tool_choice = {'type': 'tool', 'name': 'submit_person'}
print(tool_choice)
JSON через предварительное заполнение (Anthropic)
Для Claude без инструментов предварительно заполните сообщение ассистента значением {
messages = [
{'role': 'user', 'content': 'Give me JSON for Alice, 30.'},
{'role': 'assistant', 'content': '{'}
]
# Output starts with { and likely produces valid JSON.
for m in messages:
print(f"{m['role']}: {m['content']}")
print("Output starts with { and likely produces valid JSON.")
Pydantic + строгий режим
Python SDK OpenAI предоставляет сокращённый способ работы с Pydantic:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
response = client.beta.chat.completions.parse(
model='gpt-4o-2024-08-06',
messages=...,
response_format=Person
)
person = response.choices[0].message.parsed
# Pydantic instance, type-safeРаспространённые ошибки
- Режим JSON без строгой проверки — модель может вернуть структуру неправильной формы
- В строгом режиме забыта
additionalProperties: false - Обязательные поля не указаны в массиве обязательных полей
- Строгий режим доступен только начиная с gpt-4o-2024-08-06
Стоимость структурированных результатов
Строгий режим создаёт небольшие накладные расходы из-за декодирования с ограничениями грамматики — по сравнению с преимуществом качества ими можно пренебречь. Всегда включайте его, когда важна структура.
Сочетайте с проверкой
Даже результаты строгого режима следует впоследствии проверять с помощью Pydantic. Это эшелонированная защита: она выявляет особые случаи, например целые числа вне допустимого диапазона.
Гарантия строгого режима
Что гарантируют структурированные результаты OpenAI в строгом режиме?
Итоги
Режим JSON подходит для структуры с допусками, строгие результаты — для гарантированной формы, вызовы инструментов дают тот же эффект, а предварительное заполнение Anthropic — способ для Claude. Всегда выполняйте проверку после этого.
Изучай AI Agents с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 60
- Уроки
- 239
Часто задаваемые вопросы
Урок «Режим JSON и вывод вызова инструментов» бесплатный?
Да — полный текст урока «Режим JSON и вывод вызова инструментов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Режим JSON и вывод вызова инструментов»?
Используйте response_format={'type':'json_object'} или единичный вызов инструмента, чтобы принудительно получать вывод, пригодный для машинного разбора. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Режим JSON и вывод вызова инструментов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Режим JSON и вывод вызова инструментов
- Проверка схемы Pydantic
- Циклы исправления некорректного вывода
- Instructor / Outlines для гарантированной структуры