Как начать работать с YandexGPT API
В этом разделе вы научитесь использовать нейросеть YandexGPT для генерации текста в синхронном режиме без дополнения контекста. Другие примеры см. в разделе Инструкции для работы с YandexGPT API
В консоли управления
О стоимости использования YandexGPT API читайте в разделе Правила тарификации для Yandex Foundation Models.
Перед началом работы
Чтобы начать работать в Yandex Cloud:
- Войдите в консоль управления
. Если вы еще не зарегистрированы, перейдите в консоль управления и следуйте инструкциям. - В сервисе Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его. - Если у вас еще нет каталога, создайте его.
Для работы из консоли управления подготовительные действия не требуются.
Чтобы воспользоваться примерами запросов с использованием SDK:
-
Создайте сервисный аккаунт и назначьте ему роль
ai.languageModels.user
. -
Получите и сохраните API-ключ сервисного аккаунта.
В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.
-
С помощью менеджера пакетов pip
установите библиотеку ML SDK:pip install yandex-cloud-ml-sdk
Чтобы воспользоваться примерами запроса через API, установите cURL
Для работы с API YandexGPT необходимо аутентифицироваться со своего аккаунта:
-
Получите IAM-токен: см. инструкцию для аккаунта на Яндексе или федеративного аккаунта.
-
Получите идентификатор каталога, на который у вашего аккаунта есть роль
ai.languageModels.user
или выше. -
При обращении к YandexGPT API через API передайте полученные параметры:
- в файле запроса в параметре
modelUri
указывайте идентификатор каталога; - в запросе в заголовке
Authorization
указывайте IAM-токен.
Authorization: Bearer <IAM-токен>
- в файле запроса в параметре
Другие способы аутентификации в API описаны на странице Аутентификация в API Yandex Foundation Models.
Сгенерируйте текст
Примечание
Чтобы повышать качество генерируемых ответов, API Foundation Models логирует промты пользователей. Не передавайте в запросах чувствительную информацию и персональные данные.
-
В консоли управления
выберите каталог, на который у вашего аккаунта есть рольai.languageModels.user
или выше. -
В списке сервисов выберите Foundation Models.
-
На панели слева выберите
Промт-режим YandexGPT. -
В поле Температура укажите значение от
0
до1
, которое определяет вариативность ответа модели: чем выше значение, тем более непредсказуемым будет результат выполнения запроса. -
В блоке Инструкции опишите контекст запроса.
-
В блоке Запрос опишите свой запрос к модели.
-
Нажмите кнопку Узнать ответ. Ответ отобразится в правой части экрана.
-
Создайте файл
generate-text.py
и добавьте в него следующий код:#!/usr/bin/env python3 from __future__ import annotations from yandex_cloud_ml_sdk import YCloudML messages = [ { "role": "system", "text": "Найди ошибки в тексте и исправь их", }, { "role": "user", "text": """Ламинат подойдет для укладке на кухне или в детской комнате – он не боиться влаги и механических повреждений благодаря защитному слою из облицованных меламиновых пленок толщиной 0,2 мм и обработанным воском замкам.""", }, ] def main(): sdk = YCloudML( folder_id="<идентификатор_каталога>", auth="<API-ключ>", ) result = ( sdk.models.completions("yandexgpt").configure(temperature=0.5).run(messages) ) for alternative in result: print(alternative) if __name__ == "__main__": main()
Где:
Примечание
В качестве входных данных для запроса Yandex Cloud ML SDK может принимать строку, словарь, объект класса
TextMessage
или массив, содержащий любое сочетание указанных типов данных. Подробнее см. в разделе Использование Yandex Cloud ML SDK.-
messages
— массив сообщений, которые задают контекст для модели:-
role
— роль отправителя сообщения:user
— предназначена для отправки пользовательских сообщений к модели.system
— позволяет задать контекст запроса и определить поведение модели.assistant
— используется для ответов, которые генерирует модель. При работе в режиме чата ответы модели, помеченные рольюassistant
, включаются в состав сообщения для сохранения контекста беседы. Не передавайте сообщения пользователя с этой ролью.
-
text
— текстовое содержимое сообщения.
-
-
<идентификатор_каталога>
— идентификатор каталога, в котором создан сервисный аккаунт. -
<API-ключ>
— API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.
-
-
Выполните созданный файл:
python3 generate-text.py
Результат выполнения:
Alternative(role='assistant', text='Ламинат подойдёт для укладки на кухне или в детской комнате. Он не боится влаги и механических повреждений благодаря защитному слою из облицованных меламиновых плёнок толщиной 0,2 мм и обработанным воском замкам.', status=<AlternativeStatus.FINAL: 3>)
-
Создайте файл с телом запроса (например,
prompt.json
):{ "modelUri": "gpt://<идентификатор_каталога>/yandexgpt-lite", "completionOptions": { "stream": false, "temperature": 0.6, "maxTokens": "2000" }, "messages": [ { "role": "system", "text": "Найди ошибки в тексте и исправь их" }, { "role": "user", "text": "Ламинат подойдет для укладке на кухне или в детской комнате – он не боиться влаги и механических повреждений благодаря защитному слою из облицованных меламиновых пленок толщиной 0,2 мм и обработанным воском замкам." } ] }
Где:
-
modelUri
— идентификатор модели, которая будет использоваться для генерации ответа. Параметр содержит идентификатор каталога Yandex Cloud или идентификатор дообученной модели. -
completionOptions
— параметры конфигурации запроса:stream
— включает потоковую передачу частично сгенерированного текста. Принимает значенияtrue
илиfalse
.temperature
— чем выше значение этого параметра, тем более креативными и случайными будут ответы модели. Принимает значения от0
(включительно) до1
(включительно). Значение по умолчанию:0.3
.maxTokens
— устанавливает ограничение на выход модели в токенах. Максимальное число токенов генерации зависит от модели. Подробнее см. в разделе Квоты и лимиты в Yandex Foundation Models.
-
messages
— массив сообщений, которые задают контекст для модели:-
role
— роль отправителя сообщения:user
— предназначена для отправки пользовательских сообщений к модели.system
— позволяет задать контекст запроса и определить поведение модели.assistant
— используется для ответов, которые генерирует модель. При работе в режиме чата ответы модели, помеченные рольюassistant
, включаются в состав сообщения для сохранения контекста беседы. Не передавайте сообщения пользователя с этой ролью.
-
text
— текстовое содержимое сообщения.
-
-
-
Отправьте запрос нейросети с помощью метода completion, выполнив команду:
export FOLDER_ID=<идентификатор_каталога> export IAM_TOKEN=<IAM-токен> curl \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data "@prompt.json" \ "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
Где:
FOLDER_ID
— идентификатор каталога, на который у вашего аккаунта есть рольai.languageModels.user
или выше.IAM_TOKEN
— IAM-токен, полученный перед началом работы.
В ответе сервис вернет сгенерированный текст:
{ "result": { "alternatives": [ { "message": { "role": "assistant", "text": "Ламинат подходит для укладки на кухне и в детской комнате. Он не боится влажности и механических повреждений, благодаря защитному слою, состоящему из меланиновых плёнок толщиной 0.2 мм, и обработанным воском замкам." }, "status": "ALTERNATIVE_STATUS_TRUNCATED_FINAL" } ], "usage": { "inputTextTokens": "67", "completionTokens": "50", "totalTokens": "117" }, "modelVersion": "06.12.2023" } }