AI Agents · Урок

Режим JSON и вывод вызова инструментов

Используйте response_format={'type':'json_object'} или единичный вызов инструмента, чтобы принудительно получать вывод, пригодный для машинного разбора.

Урок 1 из 414 шагов

«Режим 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 — локальная установка не требуется.

Все уроки этого курса

  1. Режим JSON и вывод вызова инструментов
  2. Проверка схемы Pydantic
  3. Циклы исправления некорректного вывода
  4. Instructor / Outlines для гарантированной структуры
← Назад к AI Agents