Отправить асинхронный запрос
Запросы к моделям YandexGPT API можно отправлять в асинхронном режиме. В ответ на асинхронный запрос модель вернет объект Operation, содержащий идентификатор операции, по которому можно отследить ее выполнение и получить результат после того, как генерация завершится. Этот режим подходит, если ваши задачи не требуют срочного ответа, поскольку асинхронные запросы выполняются дольше, чем синхронные.
Перед началом работы
Получите данные для аутентификации в API, как описано в разделе Аутентификация в API Yandex Foundation Models.
Отправьте запрос к модели
Чтобы воспользоваться примерами, установите cURL
Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.
-
Создайте файл с телом запроса (например,
body.json
):{ "modelUri": "gpt://<идентификатор_каталога>/yandexgpt-lite", "completionOptions": { "stream": false, "temperature": 0.1, "maxTokens": "2000" }, "messages": [ { "role": "system", "text": "Переведи текст" }, { "role": "user", "text": "To be, or not to be: that is the question." } ] }
-
modelUri
— идентификатор модели, которая будет использоваться для генерации ответа. Параметр содержит идентификатор каталога Yandex Cloud или идентификатор дообученной в DataSphere модели. -
completionOptions
— параметры конфигурации запроса:stream
— включает потоковую передачу частично сгенерированного текста. Принимает значенияtrue
илиfalse
.temperature
— чем выше значение этого параметра, тем более креативными и случайными будут ответы модели. Принимает значения от0
(включительно) до1
(включительно). Значение по умолчанию:0.3
.maxTokens
— устанавливает ограничение на выход модели в токенах. Максимальное число токенов генерации зависит от модели. Подробнее см. в разделе Квоты и лимиты в Yandex Foundation Models.
-
messages
— список сообщений, которые задают контекст для модели:-
role
— роль отправителя сообщения:user
— предназначена для отправки пользовательских сообщений к модели.system
— позволяет задать контекст запроса и определить поведение модели.assistant
— используется для ответов, которые генерирует модель. При работе в режиме чата ответы модели, помеченные рольюassistant
, включаются в состав сообщения для сохранения контекста беседы. Не передавайте сообщения пользователя с этой ролью.
-
text
— текстовое содержимое сообщения.
-
-
-
Отправьте запрос к модели, выполнив команду:
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
) операции, полученный в ответе. -
Отправьте запрос на получение результата операции:
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" }