Skip to main content

Структурирование ответа

Поддержка в моделях:

  • gpt-4o
  • gpt-4o-mini

JSON — один из наиболее широко используемых в мире форматов для обмена данными между приложениями.

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

Некоторые преимущества структурированных выходов включают в себя:

  1. Надежная безопасность типов: нет необходимости проверять или повторять неправильно отформатированные ответы.
  2. Явные отказы: отказы по модели безопасности теперь можно обнаружить программно
  3. Более простые промты: нет необходимости в четко сформулированных промтах для достижения единообразного форматирования.

Офф. документация OpenAI

Как отправить запрос через API

  1. Сгенерировать API_TOKEN
  2. Отправить запрос на https://api.smartbuddy.ru/v1/chat/completions (см. примеры ниже)

Пример запроса

import requests
import json

url = "https://api.smartbuddy.ru/v1/chat/completions"

payload = json.dumps({
"model": "openai/gpt-4o-mini",
"messages": [
{
"role": "system",
"content": "You are a helpful math tutor. Guide the user through the solution step by step."
},
{
"role": "user",
"content": "how can I solve 8x + 7 = -23"
}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "math_response",
"schema": {
"type": "object",
"properties": {
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"explanation": {
"type": "string"
},
"output": {
"type": "string"
}
},
"required": [
"explanation",
"output"
],
"additionalProperties": False
}
},
"final_answer": {
"type": "string"
}
},
"required": [
"steps",
"final_answer"
],
"additionalProperties": False
},
"strict": True
}
}
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer API_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

Пример ответа

{
"id": "gen-l1vZXt7zvPhHnvTd2ucGTHQlZMn2",
"model": "openai/gpt-4o-mini",
"object": "chat.completion",
"created": 1726147392,
"choices": [
{
"logprobs": null,
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "{\"steps\":[{\"explanation\":\"Start with the equation: 8x + 7 = -23.\",\"output\":\"8x + 7 = -23\"},{\"explanation\":\"Subtract 7 from both sides to isolate the term with x.\",\"output\":\"8x = -23 - 7\"},{\"explanation\":\"Calculate the right side: -23 - 7 equals -30.\",\"output\":\"8x = -30\"},{\"explanation\":\"Now, divide both sides by 8 to solve for x.\",\"output\":\"x = -30 / 8\"},{\"explanation\":\"Simplify -30 / 8 to its simplest form: -30 / 8 = -15 / 4 or -7.5.\",\"output\":\"x = -15/4 or x = -7.5\"}],\"final_answer\":\"x = -15/4 or x = -7.5\"}",
"refusal": ""
}
}
],
"system_fingerprint": "fp_54e2f484be",
"usage": {
"prompt_tokens": 98,
"completion_tokens": 177,
"total_tokens": 275
}
}