В эпоху ChatGPT хочется попробовать разные LLM, чтобы понять какие из них больше подходят под наши задачи. Сегодня речь пойдёт про Yandex GPT - одну из двух главных российских нейросетей на основе GPT. Мы разберём именно её API, так как нас в первую очередь интересуют моменты, связанные с автоматизацией.
Активируем доступ к Yandex Cloud
Как и в ChatGPT, API Yandex GPT стоит денег и эти деньги должны откуда-то списываться. Для этого у Яндекса есть Yandex Cloud с его платёжным профилем и множеством интересных продуктов, которые можно тестировать.
Переходим в https://console.cloud.yandex.ru/ - если вы еще не пользовались Yandex Cloud, то его сначала нужно активировать. После активации Cloud создаст дефолтную папку и вы увидите следующее окно:
Для тестирования различных продуктов вам предлагают 4000 рублей и 60 дней, что довольно удобно. Поэтому создаём аккаунт и соглашаемся на получение гранта.
Когда платёжный аккаунт создан, возвращаемся в папки https://console.cloud.yandex.ru/folders/. Вам потребуется Folder ID - он будет как в URL, так и справа от названия папки "default" (на картинке выше он замазан).
Следующий шаг - получение токена для доступа к вашему Yandex GPT. Перейдите по ссылке и сохраните полученный токен. Токен и ID папки Yandex Cloud потребуются нам далее.
Модели и способы работы с ними
Вы можете общаться с API Yandex GPT двумя способами - обычным и асинхронным. В случае обычного (синхронного) способа вы почти сразу получаете ответ модели. В случае же асинхронного - получаете ID операции, по которому можете уточнить ответ модели позже.
Стандартный синхронный способ выглядит проще, поэтому я выбрал его. Но основная модель YandexGPT в настоящий момент может работать только асинхронно, поэтому я взаимодействую с Yandex GPT Lite. Какие же отличия у модели Lite? Вот что говорит сам Яндекс:
YandexGPT API предоставляет доступ к двум большим текстовым генеративным нейросетям: стандартной YandexGPT Lite, подходящей для решения задач в режиме реального времени, и большой YandexGPT, которая дает более точные ответы на сложные запросы.
Действительно, YandexGPT Lite - очень быстрая модель, хорошо подходящая для ответов в реальном времени. По ощущениям она даже быстрее ChatGPT. Еще один плюс - YandexGPT Lite можно дообучать, добавляя туда дополнительные знания по вашей теме.
Ниже я поясню как получать данные от основной модели YandexGPT асинхронно. Но во всех решениях, описанных здесь, используется модель YandexGPT Lite - именно на ней я решил остановиться.
Параметры функций на Python, Power Query и JS
Чтобы три раза не описывать доступные параметры функции - опишу их в этом разделе. Всего мы можем задать 7 разных значений:
- folder - это ID папки на Yandex Cloud, в рамках которой вы общаетесь с моделью;
- token - полученный токен к вашему аккаунту на Яндексе;
- prompt - основной промпт;
- temperature - уровень творчества модели от 0 до 1 где 0 это максимально сухо, а 1 - это максимум творчества;
- system_prompt - системный промпт, где можно указывать стилистику ответа и другие пожелания не загружая основной промпт;
- max_tokens - ограничение расхода токенов (если кто-то захочет ограничить модель в использовании токенов);
- model - выбор своей модели: если вы используете дообученную модель, укажите "ds://<идентификатор_дообученной_модели>".
Параметры folder и token относятся к аккаунту Яндекса, в котором вы работаете. Промпт и температура - обязательные параметры запроса к модели. Остальные параметры - необязательные.
Анонсы всех видео, статей и полезностей - в нашем Telegram-канале🔥
Присоединяйтесь, обсуждайте и автоматизируйте!
Работа с API Yandex GPT Lite на Python
Чтобы вам было проще, мы добавили пакет pip для python под названием yandexgptlite. Вы можете воспользоваться им, это бесплатно:
Шаг 1: Устанавливаем пакет pip:
pip install yandexgptlite
Шаг 2: Импортируем класс из пакета:
from yandexgptlite import YandexGPTLite
Шаг 3: Подключаемся к Yandex GPT, создавая экземпляр класса (требуется указать ID папки Yandex Cloud и полученный ранее токен):
account = YandexGPTLite('b1g2k730lqhu8pc02a', 'y0_AgAAAAMf8GzATuwQAAAD15w-py1O8Ucn-RN6bl9W8hwdkX7vuE' )
Шаг 4: Вызываем функцию обращения к GPT для нашего аккаунта (температура от 0 до 1, где единица - максимум творчества):
text = account.create_completion('скажи мне что-нибудь хорошее', '0.6', system_prompt = 'отвечай на английском')
print(text) #Sounds good!
Как вы увидели, необязательные параметры create_completions можно указывать, прописывая их названия + значения.
Теперь вы с минимальными усилиями можете подключаться к YandexGPT Lite и писать программы с использованием этой модели на Python.
API Yandex GPT на Power Query
Коннектор для Excel и Power BI к Yandex GPT вы можете найти на Boosty, он доступен по подписке ПРО.
Скачайте файл с кодом и перейдите на вкладку "Данные" вашего Excel-файла. Далее нажмите "получить данные" и создайте пустой запрос:
Когда запрос создан, нажмите на "Расширенный редактор" и вместо кода пустого запроса вставьте предоставленный код функции:
Переименуйте Запрос1 в yandexgptlite - это будет ваша функция, которую вы будете вызывать для получения ответов:
Можно вызывать эту функцию массово - в рамках таблицы или списка, а результаты выгружать на лист Excel. Ту же самую функцию можно использовать и в рамках Power BI.
Напоминаю, что дообученные модели тоже можно использовать, так что модель, которая вместо вас будет отвечать на вопросы по работе прямо в Excel - уже не фантастика 🙀
Script для Yandex GPT в Google Sheets
Коннектор для Google Sheets вы также можете найти на Boosty, он доступен по подписке ПРО.
Откройте Google Sheets, перейдите в Расширения и выберите "App Script":
В открывшееся окно вставляем код функции. Для простоты вызова я вынес folder и token в переменные, поэтому их нужно заполнить вручную (замазанные значения на скрине ниже). После чего жмём на иконку сохранения:
Теперь вы можете вызывать функцию из Google таблицы 🍺 Напомню, что параметры при вызове функции разделяются точкой с запятой, а если хотите пропустить какой-то из необязательных параметров - можно ставить значение undefined. Третий параметр необязательный, но протестирую с ним:
Схема работы и примеры функций
Расскажу ключевые моменты на случай если вы захотите самостоятельно реализовать подключение.
Первое, что нужно знать - использование токена: в запросе понадобится не обычный токен, а iamToken, который получается из обычного токена несложной функцией:
def generate_iamtoken(token):
token_url = "https://iam.api.cloud.yandex.net/iam/v1/tokens"
token_data = {"yandexPassportOauthToken": token}
token_response = requests.post(token_url,
data=json.dumps(token_data))
iamToken = token_response.json()['iamToken']
return iamToken
Для основных запросов есть 2 ссылки: первая - для синхронных, а вторая - для асинхронных обращений:
https://llm.api.cloud.yandex.net/foundationModels/v1/completion
https://llm.api.cloud.yandex.net/foundationModels/v1/completionAsync
Общий лимит токенов на 1 запрос в моделях Яндекса - 8000 токенов. Чтобы точно не ограничить модель в творчестве - ставлю больше.
В заголовках передаём полученный iamToken и ID каталога Yandex Cloud, а в теле запроса - все остальные параметры:
def create_completion(prompt, temperature, iamtoken, folder):
headers={"Authorization" : "Bearer " + iamtoken,
"x-folder-id" : folder }
body = {"modelUri": f"gpt://{folder}/yandexgpt-lite/latest",
"completionOptions":{"stream": False,
"temperature": str(temperature), "maxTokens": "100000"},
"messages": [{"role": "user", "text": prompt}]}
jsondata = json.dumps(body, ensure_ascii=False).encode("utf8")
web = requests.post("https://llm.api.cloud.yandex.net/" +
"foundationModels/v1/completion", headers = headers,data = jsondata)
result = web.json()
return result
Если заменить модель с "gpt://{folder}/yandexgpt-lite/latest" на "ds://<идентификатор_дообученной_модели>", то можно обращаться к своей модели, дополненной знаниями через Yandex Cloud.
Если вы отправляли запрос асинхронно, то скорее всего вам будет возвращён ID операции, а не результат. Для получения результата требуется отдельная функция с обращением по ID операции:
def get_operation(operation_id, iamtoken):
headers={"Authorization" : "Bearer " + iamtoken}
web = requests.get("https://llm.api.cloud.yandex.net/operations/" +
operation_id, headers = headers)
result = web.json()
return result
Выше я привожу примеры простых функций без доп. параметров. Если вам интересна реализация нашего пакета yandexgptlite с доп. параметрами, рекомендуем изучить его репозиторий на Github.
Заключение
Сейчас LLM - одна из самых интересных и быстроразвивающихся сфер. Конечно, нам всем хочется подключаться к ChatGPT как к самой продвинутой системе. Но необходимость VPN или прокси для пользователей из России, а также сложный процесс регистрации и оплаты продуктов OpenAI создают массу трудностей.
Думаю, что российские LLM будут также быстро развиваться и не отстанут от ChatGPT. Но в них проще регистрироваться, легче платить и можно без опасений строить на них свои продукты в России. Поэтому так важно осваивать их на раннем этапе пока этого не сделали ваши конкуренты. Подписывайтесь на Boosty и осваивайте новые инструменты вместе с нами!
Комментарии