Узнайте, как использовать режим JSON
Режим JSON позволяет задать формат отклика моделей для возврата допустимого объекта JSON в рамках завершения чата. При создании допустимого JSON было возможно ранее, могут возникнуть проблемы с согласованность ответов, что приведет к созданию недопустимых объектов JSON.
Примечание.
Хотя режим JSON по-прежнему поддерживается, по возможности рекомендуется использовать структурированные выходные данные. Как и структурированные выходные данные в режиме JSON, создают допустимые json, но с добавленным преимуществом, которое можно ограничить моделью для использования определенной схемы JSON.
Примечание.
В настоящее время структурированные выходные данные не поддерживаются при переносе собственного сценария данных .
Поддержка режима JSON
В настоящее время режим JSON поддерживается только в следующих моделях:
Поддерживаемые модели
gpt-35-turbo
(1106)gpt-35-turbo
(0125)gpt-4
(1106-preview)gpt-4
(0125-preview)gpt-4o
gpt-4o-mini
поддержка API
Поддержка режима JSON была добавлена в версию API 2023-12-01-preview
Пример
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-03-01-preview"
)
response = client.chat.completions.create(
model="YOUR-MODEL_DEPLOYMENT_NAME", # Model = should match the deployment name you chose for your model deployment
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are a helpful assistant designed to output JSON."},
{"role": "user", "content": "Who won the world series in 2020?"}
]
)
print(response.choices[0].message.content)
Выходные данные
{
"winner": "Los Angeles Dodgers",
"event": "World Series",
"year": 2020
}
Существует два ключевых фактора, которые должны присутствовать для успешного использования режима JSON:
response_format={ "type": "json_object" }
- Мы сказали модели выводить JSON в составе системного сообщения.
В том числе руководство по модели, которая должна создавать JSON в рамках беседы с сообщениями, требуется. Рекомендуется добавить инструкцию в составе системного сообщения. В соответствии с ошибкой OpenAI для добавления этой инструкции модель может привести к "созданию непрерывного потока пробелов и запрос может выполняться постоянно, пока он не достигнет предела маркера".
Не указать json в сообщениях возвращается следующее:
Выходные данные
BadRequestError: Error code: 400 - {'error': {'message': "'messages' must contain the word 'json' in some form, to use 'response_format' of type 'json_object'.", 'type': 'invalid_request_error', 'param': 'messages', 'code': None}}
Другие вопросы
Перед анализом ответа необходимо проверить finish_reason
значение length
. Модель может создать частичный JSON. Это означает, что выходные данные модели были больше доступных max_tokens, которые были заданы как часть запроса, или сам разговор превысил ограничение маркера.
В режиме JSON создается недопустимый код JSON и синтаксический анализ без ошибок. Однако выходные данные не будут соответствовать определенной схеме, даже если они запрошены в запросе.