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

В этой статье:

  • Перед началом работы
  • Отправьте запрос к модели
  1. Пошаговые инструкции
  2. Генерация текста
  3. Отправить асинхронный запрос

Отправить асинхронный запрос

Статья создана
Yandex Cloud
Обновлена 18 марта 2025 г.
  • Перед началом работы
  • Отправьте запрос к модели

Запросы к моделям генерации текста можно отправлять в асинхронном режиме. В ответ на асинхронный запрос модель вернет объект Operation, содержащий идентификатор операции, по которому можно отследить ее выполнение и получить результат после того, как генерация завершится. Этот режим подходит, если ваши задачи не требуют срочного ответа, поскольку асинхронные запросы выполняются дольше, чем синхронные.

Перед началом работыПеред началом работы

SDK
cURL

Чтобы воспользоваться примерами запросов с использованием SDK:

  1. Создайте сервисный аккаунт и назначьте ему роль ai.languageModels.user.

  2. Получите и сохраните API-ключ сервисного аккаунта.

    В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

  3. С помощью менеджера пакетов pip установите библиотеку ML SDK:

    pip install yandex-cloud-ml-sdk
    

Получите данные для аутентификации в API, как описано в разделе Аутентификация в API Yandex Foundation Models.

Чтобы воспользоваться примерами, установите cURL.

Отправьте запрос к моделиОтправьте запрос к модели

SDK
cURL

При использовании Yandex Cloud ML SDK ваш код может дождаться завершения выполнения операции и получения ответа. Для этого можно использовать либо функцию sleep модуля time, либо метод wait. В приведенном примере последовательно используются оба эти способа.

  1. Создайте файл generate-deferred.py и добавьте в него следующий код:

    #!/usr/bin/env python3
    
    from __future__ import annotations
    import time
    from yandex_cloud_ml_sdk import YCloudML
    
    messages_1 = [
        {
            "role": "system",
            "text": "Найди ошибки в тексте и исправь их",
        },
        {
            "role": "user",
            "text": """Ламинат подойдет для укладке на кухне или в детской 
    комнате – он не боиться влаги и механических повреждений благодаря 
    защитному слою из облицованных меламиновых пленок толщиной 0,2 мм и 
    обработанным воском замкам.""",
        },
    ]
    
    messages_2 = [
        {"role": "system", "text": "Найди ошибки в тексте и исправь их"},
        {"role": "user", "text": "Ашипки саме сибя ни исрпвят."},
    ]
    
    
    def main():
    
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
    
        model = sdk.models.completions("yandexgpt")
    
        # Variant 1: wait for the operation to complete using 5-second sleep periods
    
        print("Variant 1:")
    
        operation = model.configure(temperature=0.5).run_deferred(messages_1)
    
        status = operation.get_status()
        while status.is_running:
            time.sleep(5)
            status = operation.get_status()
    
        result = operation.get_result()
        print(result)
    
        # Variant 2: wait for the operation to complete using the wait method
    
        print("Variant 2:")
    
        operation = model.run_deferred(messages_2)
    
        result = operation.wait()
        print(result)
    
    
    if __name__ == "__main__":
        main()
    

    Где:

    Примечание

    В качестве входных данных для запроса Yandex Cloud ML SDK может принимать строку, словарь, объект класса TextMessage или массив, содержащий любое сочетание указанных типов данных. Подробнее см. в разделе Использование Yandex Cloud ML SDK.

    • messages_1 и messages_2 — массивы сообщений, которые задают контекст для модели и используются для разных способов получения результата выполнения асинхронного запроса:

      • role — роль отправителя сообщения:

        • user — предназначена для отправки пользовательских сообщений к модели.
        • system — позволяет задать контекст запроса и определить поведение модели.
        • assistant — используется для ответов, которые генерирует модель. При работе в режиме чата ответы модели, помеченные ролью assistant, включаются в состав сообщения для сохранения контекста беседы. Не передавайте сообщения пользователя с этой ролью.
    • text — текстовое содержимое сообщения.

    • <идентификатор_каталога> — идентификатор каталога, в котором создан сервисный аккаунт.

    • <API-ключ> — API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.

      В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

    Подробнее о том, как обращаться к определенной версии модели, см. в разделе Обращение к моделям.

  2. Выполните созданный файл:

    python3 generate-deferred.py
    

    Результат выполнения:

    Variant 1:
    GPTModelResult(alternatives=(Alternative(role='assistant', text='Ламинат подойдёт для укладки на кухне или в детской комнате – он не боится влаги и механических повреждений благодаря защитному слою из облицованных меламиновых плёнок толщиной 0,2 мм и обработанным воском замкам.', status=<AlternativeStatus.FINAL: 3>),), usage=Usage(input_text_tokens=74, completion_tokens=46, total_tokens=120), model_version='23.10.2024')
    Variant 2:
    GPTModelResult(alternatives=(Alternative(role='assistant', text='Ошибки сами себя не исправят.\n\nАшипки → ошибки.', status=<AlternativeStatus.FINAL: 3>),), usage=Usage(input_text_tokens=32, completion_tokens=16, total_tokens=48), model_version='23.10.2024')
    

    Код дожидается получения результата сначала для первого способа, затем — для второго.

Чтобы воспользоваться примерами, установите cURL.

Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.

  1. Создайте файл с телом запроса (например, body.json):

    {
      "modelUri": "gpt://<идентификатор_каталога>/yandexgpt",
      "completionOptions": {
        "stream": false,
        "temperature": 0.1,
        "maxTokens": "2000",
        "reasoningOptions": {
          "mode": "DISABLED"
        }
      },
      "messages": [
        {
          "role": "system",
          "text": "Переведи текст"
        },
        {
          "role": "user",
          "text": "To be, or not to be: that is the question."
        }
      ]
    }
    
    • modelUri — идентификатор модели, которая будет использоваться для генерации ответа. Параметр содержит идентификатор каталога Yandex Cloud или идентификатор дообученной модели.

    • completionOptions — параметры конфигурации запроса:

      • stream — включает потоковую передачу частично сгенерированного текста. Принимает значения true или false.

      • temperature — чем выше значение этого параметра, тем более креативными и случайными будут ответы модели. Принимает значения от 0 (включительно) до 1 (включительно). Значение по умолчанию: 0.3.

      • maxTokens — устанавливает ограничение на выход модели в токенах. Максимальное число токенов генерации зависит от модели. Подробнее см. в разделе Квоты и лимиты в Yandex Foundation Models.

      • reasoningOptions.mode — параметры режима рассуждений. Необязательный параметр. Значение по умолчанию — DISABLED. Возможные значения:

        • DISABLED — режим рассуждений выключен.
        • ENABLED_HIDDEN — режим рассуждений включен. При этом модель самостоятельно принимает решение о необходимости использования этого режима для каждого конкретного запроса.
    • messages — массив сообщений, которые задают контекст для модели:

      • role — роль отправителя сообщения:

        • user — предназначена для отправки пользовательских сообщений к модели.
        • system — позволяет задать контекст запроса и определить поведение модели.
        • assistant — используется для ответов, которые генерирует модель. При работе в режиме чата ответы модели, помеченные ролью assistant, включаются в состав сообщения для сохранения контекста беседы. Не передавайте сообщения пользователя с этой ролью.
      • text — текстовое содержимое сообщения.

  2. Отправьте запрос к модели, выполнив команду:

    export FOLDER_ID=<идентификатор_каталога>
    export IAM_TOKEN=<IAM-токен>
    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      --header "x-folder-id: ${FOLDER_ID}" \
      --data "@<путь_до_файла_json>" \
      "https://llm.api.cloud.yandex.net/foundationModels/v1/completionAsync"
    

    Где:

    • FOLDER_ID— идентификатор каталога, на который у вашего аккаунта есть роль ai.languageModels.user или выше.
    • IAM_TOKEN — IAM-токен, полученный перед началом работы.

    В ответе сервис вернет объект Operation:

    {
      "id": "d7qi6shlbvo5********",
      "description": "Async GPT Completion",
      "createdAt": "2023-11-30T18:31:32Z",
      "createdBy": "aje2stn6id9k********",
      "modifiedAt": "2023-11-30T18:31:33Z",
      "done": false,
      "metadata": null
    }
    

    Сохраните идентификатор (id) операции, полученный в ответе.

  3. Отправьте запрос на получение результата операции:

    curl \
      --request GET \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      https://operation.api.cloud.yandex.net/operations/<ID_операции>
    

    Пример результата:

    {
      "done": true,
      "response": {
        "@type": "type.googleapis.com/yandex.cloud.ai.foundation_models.v1.CompletionResponse",
        "alternatives": [
          {
            "message": {
              "role": "assistant",
              "text": "Быть или не быть: вот в чём вопрос."
            },
            "status": "ALTERNATIVE_STATUS_FINAL"
          }
        ],
        "usage": {
          "inputTextTokens": "31",
          "completionTokens": "10",
          "totalTokens": "41"
        },
        "modelVersion": "18.01.2024"
      },
      "id": "d7qo21o5fj1u********",
      "description": "Async GPT Completion",
      "createdAt": "2024-05-12T18:46:54Z",
      "createdBy": "ajes08feato8********",
      "modifiedAt": "2024-05-12T18:46:55Z"
    }
    

См. такжеСм. также

  • Обзор возможностей генерации текста
  • Примеры работы с ML SDK на GitHub

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

Предыдущая
Отправить серию запросов в режиме чата
Следующая
Вызвать функцию из модели
Проект Яндекса
© 2025 ООО «Яндекс.Облако»