Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Foundation Models
    • О сервисе Yandex Foundation Models
      • Возможности генеративных моделей
      • Доступные генеративные модели
      • Вызов функций
      • Режим рассуждений
      • Форматирование ответов моделей
      • Эмбеддинги
      • Датасеты
      • Дообучение
      • Токены
    • Квоты и лимиты
  • Совместимость с OpenAI
  • Управление доступом
  • Правила тарификации
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  1. Концепции
  2. AI-модели
  3. Форматирование ответов моделей

Форматирование ответов моделей

Статья создана
Yandex Cloud
Обновлена 5 сентября 2025 г.

По умолчанию модель возвращает ответ, отформатированный с помощью разметки Markdown. Используйте текст промта, чтобы получить ответ с дополнительным форматированием (например с эмодзи) или в другом формате (JSON, XML и т.п.)

Пример:

{
  "modelUri": "gpt://<идентификатор_каталога>/yandexgpt/latest",
  "completionOptions": {
    "stream": false,
    "temperature": 0.6,
    "maxTokens": "2000",
    "reasoningOptions": {
      "mode": "DISABLED"
    }
  },
  "messages": [
    {
      "role": "system",
      "text": "Ты — умный ассистент."
    },
    {
      "role": "user",
      "text": "Назови любые три группы товаров в продовольственном магазине. Для каждой группы приведи три любые подгруппы, входящие в группу. Представь результат в форме объекта JSON, где каждая группа товаров представлена в виде ключа в объекте JSON, а значениями являются массивы из соответствующих подгрупп. Нужны только данные без вводных фраз и объяснений. Не используй разметку Markdown!"
    }
  ]
}

Результат:

{
  "result": {
    "alternatives": [
      {
        "message": {
          "role": "assistant",
          "text": "{\n    \"мясо\": [\"говядина\", \"свинина\", \"баранина\"],\n    \"молочные продукты\": [\"молоко\", \"творог\", \"сметана\"],\n    \"фрукты\": [\"яблоки\", \"бананы\", \"апельсины\"]\n}"
        },
        "status": "ALTERNATIVE_STATUS_FINAL"
      }
    ],
    "usage": {
      "inputTextTokens": "87",
      "completionTokens": "58",
      "totalTokens": "145"
    },
    "modelVersion": "07.03.2024"
  }
}

Модель вернула ответ в формате JSON, где перенос строки заменен на \n, а кавычки экранированы.

Если с помощью промта вам не удается добиться желаемого результата, попробуйте дообучить модель.

Параметры API для сохранения структуры ответаПараметры API для сохранения структуры ответа

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

  1. JSON с произвольной структурой:

    SDK
    API
    #!/usr/bin/env python3
    
    from __future__ import annotations
    
    import json
    
    import pydantic
    
    from yandex_cloud_ml_sdk import YCloudML
    
    text = """
    Назови любые три группы товаров в продовольственном магазине. 
    Для каждой группы приведи три любые подгруппы, входящие в группу. 
    Представь результат в формате JSON.
    """
    
    
    def main() -> None:
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
    
        model = sdk.models.completions("yandexgpt", model_version="rc")
    
        model = model.configure(response_format="json")
        result = model.run(
            [
                {"role": "user", "text": text},
            ]
        )
        print("JSON result:", result[0].text)
    
    
    if __name__ == "__main__":
        main()
    
    {
      "modelUri": "gpt://<идентификатор_каталога>/yandexgpt/rc",
      "completionOptions": {
        "stream": false
      },
      "messages": [
        {
          "role": "user",
          "text": "Назови любые три группы товаров в продовольственном магазине. Для каждой группы приведи три любые подгруппы, входящие в группу. Представь результат в формате JSON."
        }
      ],
      "json_object": true
    }
    

    Совет

    Если вы хотите получить ответ в виде JSON с произвольной структурой, обязательно дополнительно укажите это словами в промте. Иначе модель может добавлять дополнительные скобки, пробелы и отступы и генерировать лишние токены.

  2. JSON, строго соответствующий заданной схеме:

    SDK
    API
    #!/usr/bin/env python3
    
    from __future__ import annotations
    
    import json
    
    import pydantic
    
    from yandex_cloud_ml_sdk import YCloudML
    
    text = "Назови дату первого полета Гагарина."
    
    
    def main() -> None:
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
    
        model = sdk.models.completions("yandexgpt", model_version="rc")
    
        model = model.configure(
            response_format={
                "json_schema": {
                    "properties": {
                        "day": {
                            "title": "Day",
                            "description": "День месяца",
                            "type": "integer",
                        },
                        "month": {
                            "title": "Month",
                            "description": "Месяц, словом",
                            "type": "string",
                        },
                        "year": {
                            "title": "Year",
                            "description": "Год",
                            "type": "integer",
                        },
                    },
                    "required": ["day", "month", "year"],
                    "type": "object",
                }
            }
        )
        result = model.run(
            [
                {"role": "user", "text": text},
            ]
        )
        print("JSON result:", result[0].text)
    
    
    if __name__ == "__main__":
        main()
    
    {
      "modelUri": "gpt://<идентификатор_каталога>/yandexgpt/rc",
      "completionOptions": {
        "stream": false
      },
      "messages": [
        {
          "role": "user",
          "text": "Назови дату первого полета Гагарина."
        }
      ],
      "json_schema": {
        "schema": {
          "properties": {
            "day": {
              "title": "Day",
              "description": "День месяца",
              "type": "integer"
            },
            "month": {
              "title": "Month",
              "description": "Месяц, словом",
              "type": "string"
            },
            "year": {
              "title": "Year",
              "description": "Год",
              "type": "integer"
            }
          },
          "required": [
            "day",
            "month",
            "year"
          ],
          "type": "object"
        }
      }
    }
    

Строгая структура ответа необходима при работе с внешними инструментами с помощью вызова функций.

Была ли статья полезна?

Предыдущая
Режим рассуждений
Следующая
Поддерживаемые виды классификации
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»