Skip to Content
ДокументацияРуководстваСтруктурированный вывод

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

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

JSON Mode

Самый простой способ структурированного вывода, принудительно возвращающий валидный JSON:

json_mode.py
from openai import OpenAI client = OpenAI( base_url="https://api.ofox.ai/v1", api_key="<Ваш OFOXAI_API_KEY>" ) response = client.chat.completions.create( model="openai/gpt-4o", messages=[ {"role": "system", "content": "Вы — ассистент по извлечению данных. Возвращайте результат в формате JSON."}, {"role": "user", "content": "Извлеките имя, компанию и должность из следующего текста: Иван Петров — старший инженер в Яндексе"} ], response_format={"type": "json_object"} ) import json result = json.loads(response.choices[0].message.content) print(result) # {"name": "Иван Петров", "company": "Яндекс", "title": "старший инженер"}

При использовании JSON Mode системный промпт обязательно должен содержать ключевое слово “JSON”, иначе некоторые модели могут проигнорировать требования к формату.

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

Более точный контроль структуры вывода, гарантирующий соответствие имен и типов полей ожидаемым:

json_schema.py
response = client.chat.completions.create( model="openai/gpt-4o", messages=[ {"role": "user", "content": "Проанализируйте тональность этого отзыва: Этот продукт великолепен, очень удобен в использовании!"} ], response_format={ "type": "json_schema", "json_schema": { "name": "sentiment_analysis", "schema": { "type": "object", "properties": { "sentiment": { "type": "string", "enum": ["positive", "negative", "neutral"], "description": "Эмоциональная окраска" }, "confidence": { "type": "number", "description": "Уверенность 0-1" }, "keywords": { "type": "array", "items": {"type": "string"}, "description": "Ключевые эмоциональные слова" } }, "required": ["sentiment", "confidence", "keywords"], "additionalProperties": False } } } )

Вывод:

{ "sentiment": "positive", "confidence": 0.95, "keywords": ["великолепен", "очень удобен"] }

Практические сценарии

Извлечение данных

# Извлечение структурированных данных из неструктурированного текста response = client.chat.completions.create( model="openai/gpt-4o", messages=[{ "role": "user", "content": """Извлеките информацию о заказе: Клиент Алексей Смирнов 15 января 2025 года оформил заказ на 3 MacBook Pro, цена за единицу 189 990 руб., адрес доставки: г. Москва, ул. Примерная, д. 123""" }], response_format={ "type": "json_schema", "json_schema": { "name": "order_info", "schema": { "type": "object", "properties": { "customer": {"type": "string"}, "date": {"type": "string"}, "items": { "type": "array", "items": { "type": "object", "properties": { "name": {"type": "string"}, "quantity": {"type": "integer"}, "unit_price": {"type": "number"} } } }, "address": {"type": "string"} }, "required": ["customer", "date", "items", "address"] } } } )

Классификация и разметка

# Многоклассовая классификация response = client.chat.completions.create( model="openai/gpt-4o", messages=[{ "role": "user", "content": "Определите тему этой статьи: Применение технологий ИИ в сфере здравоохранения становится всё более широким..." }], response_format={ "type": "json_schema", "json_schema": { "name": "classification", "schema": { "type": "object", "properties": { "primary_category": {"type": "string"}, "secondary_categories": { "type": "array", "items": {"type": "string"} }, "tags": { "type": "array", "items": {"type": "string"} } }, "required": ["primary_category"] } } } )

Поддерживаемые модели

МодельJSON ModeJSON Schema
openai/gpt-4o
openai/gpt-4o-mini
anthropic/claude-sonnet-4.5
google/gemini-3-flash-preview

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

Last updated on