Структурирование ответа
Поддержка в моделях:
- gpt-4o
- gpt-4o-mini
JSON — один из наиболее широко используемых в мире форматов для обмена данными между приложениями.
Структурированные выходные данные — это функция, которая гарантирует, что модель всегда будет генерировать ответы, соответствующие предоставленной вами схеме JSON , поэтому вам не нужно беспокоиться о том, что модель пропустит требуемый ключ или выдаст недопустимое значение перечисления.
Некоторые преимущества структурированных выходов включают в себя:
- Надежная безопасность типов: нет необходимости проверять или повторять неправильно отформатированные ответы.
- Явные отказы: отказы по модели безопасности теперь можно обнаружить программно
- Более простые промты: нет необходимости в четко сформулированных промтах для достижения единообразного форматирования.
Как отправить запрос через API
- Сгенерировать API_TOKEN
- Отправить запрос на
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
}
}