ДокументацияОтвет в JSON для автоматизации

Ответ в JSON для автоматизации

СценарииСредний15 мин

В конце у вас будет код, который получает от модели JSON с нужными полями и проверяет его, прежде чем отдать в таблицу, CRM, 1С или бэкенд.

Нужно: ключ fetch_... (создать), баланс от $0.01 (пополнить), Python 3.10+ с pip install openai pydantic или Node.js 18+ с npm install openai zod.

  1. 1
    Опишите поля

    Типы: строка, число, да/нет, выбор из списка. Для списка всегда задавайте enum — иначе получите «Доставка», «доставка» и «delivery».

  2. 2
    Отправьте запрос со схемой

    response_format с json_schema и strict: true — пример 1. Полей мало — хватит json_object с полями в промпте, пример 2.

  3. 3
    Проверьте ответ кодом

    pydantic или zod. Даже строгая схема не гарантирует верный ответ.

  4. 4
    Дайте второй шанс

    Не прошло — покажите модели её ответ и ошибку, попросите исправленный JSON. Второй отказ — отдайте документ человеку.

1Режимы и модели

РежимЧто гарантирует
response_format: {"type": "json_object"}корректный JSON, поля не проверяются
response_format: {"type": "json_schema", ...} со strict: trueJSON по вашей схеме: нужные поля нужных типов
МодельСтрогая схемаjson_object
deepseek-v4.1-flashдада
claude-haiku-5-5дада
gpt-6-lunaнет—

Другие модели проверьте на 20–50 своих примерах. Цены — Модели и цены.

2Пример 1. Данные из счёта, строгая схема

"""
Данные из счёта — в JSON по строгой схеме.
pip install openai pydantic
"""
import os
from typing import Literal

from openai import OpenAI
from pydantic import BaseModel, ConfigDict, Field, ValidationError

MODEL = "deepseek-v4.1-flash"  # или "claude-haiku-5-5"

client = OpenAI(
    base_url="https://api.zukko.pro/v1",

В Node.js схема для модели и схема zod написаны отдельно — держите их одинаковыми. В Python обе берутся из класса Invoice.

3Пример 2. Обращение в поддержку, режим json_object

"""
Разбор обращения в поддержку: категория, срочность, нужен ли человек.
pip install openai pydantic
"""
import os
from typing import Literal

from openai import OpenAI
from pydantic import BaseModel, ValidationError

client = OpenAI(
    base_url="https://api.zukko.pro/v1",
    api_key=os.environ["ZUKKO_API_KEY"],
    timeout=60,

4Правила схемы

  • Числа — числами (15400.5, а не «15 400,50 руб.»), валюта — отдельным полем.
  • Даты — строкой, формат в описании поля: ГГГГ-ММ-ДД.
  • 5–10 полей без глубокой вложенности.
  • Все поля в required, additionalProperties: false. pydantic с extra="forbid" делает это сам.

5Если не работает

Что видитеЧто сделать
Ответ начинается с трёх обратных кавычек и слова jsonСнимите обёртку функцией clean() из примера
«Доставка» вместо deliveryЗадайте у поля enum
JSON обрывается на серединеУвеличьте max_tokens
Модель выдумывает номер или датуРазрешите пустую строку в описании поля и напишите «ничего не придумывай» в инструкции
Ответ идёт около минуты, схема не соблюдаетсяВозьмите deepseek-v4.1-flash или claude-haiku-5-5
400 с упоминанием response_formatВозьмите модель из таблицы выше или режим json_object
Ответ в JSON для автоматизации · Документация Zukko