Оценить размер в токенах
Нейросети работают с текстами, представляя слова и предложения в виде токенов.
Foundation Models использует свой токенизатор для обработки текстов. Чтобы рассчитать размер текста или запроса к модели YandexGPT в токенах, используйте методы Tokenize API генерации текста или Yandex Cloud ML 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, как описано в разделе Аутентификация в API Yandex Foundation Models.
Чтобы воспользоваться примерами, установите cURL
Рассчитать размер запроса
В приведенном примере оценивается размер запроса к модели YandexGPT.
-
Создайте файл
tokenize.py
и добавьте в него следующий код:#!/usr/bin/env python3 from __future__ import annotations from yandex_cloud_ml_sdk import YCloudML messages = "Управление генеративными моделями осуществляется с помощью промтов. Эффективный промт должен содержать контекст запроса (инструкцию) для модели и непосредственно задание, которое модель должна выполнить, учитывая переданный контекст. Чем конкретнее составлен промт, тем более точными будут результаты работы модели." def main(): sdk = YCloudML( folder_id="<идентификатор_каталога>", auth="<API-ключ>", ) model = sdk.models.completions("yandexgpt") result = model.tokenize(messages) for token in result: print(token) if __name__ == "__main__": main()
Где:
Примечание
В качестве входных данных для запроса Yandex Cloud ML SDK может принимать строку, словарь, объект класса
TextMessage
или массив, содержащий любое сочетание указанных типов данных. Подробнее см. в разделе Использование Yandex Cloud ML SDK.messages
— текстовое содержимое сообщения.
-
<идентификатор_каталога>
— идентификатор каталога, в котором создан сервисный аккаунт. -
<API-ключ>
— API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.
model
— значение версии модели. Подробнее см. в разделе Обращение к моделям.
-
Выполните созданный файл:
python3 tokenize.py
Результат выполнения запроса — список полученных токенизатором токенов:
{"tokens": [{"id":"1","text":"\u003cs\u003e","special":true}, {"id":"19078","text":"▁Управление","special":false}, {"id":"10810","text":"▁генера","special":false}, {"id":"26991","text":"тивными","special":false}, {"id":"77514","text":"▁моделями","special":false}, {"id":"10578","text":"▁осуществляется","special":false}, {"id":"277","text":"▁с","special":false}, {"id":"4390","text":"▁помощью","special":false}, {"id":"68740","text":"▁пром","special":false}, {"id":"769","text":"тов","special":false}, {"id":"125820","text":".","special":false}, {"id":"43429","text":"▁Эффек","special":false}, {"id":"7146","text":"тивный","special":false}, {"id":"68740","text":"▁пром","special":false}, {"id":"125810","text":"т","special":false}, {"id":"4923","text":"▁должен","special":false}, {"id":"29443","text":"▁содержать","special":false}, {"id":"24719","text":"▁контек","special":false}, {"id":"269","text":"ст","special":false}, {"id":"43640","text":"▁запроса","special":false}, {"id":"355","text":"▁(","special":false}, {"id":"98434","text":"инструк","special":false}, {"id":"1511","text":"цию","special":false}, {"id":"125855","text":")","special":false}, {"id":"571","text":"▁для","special":false}, {"id":"6234","text":"▁модели","special":false}, {"id":"286","text":"▁и","special":false}, {"id":"15616","text":"▁непосредственно","special":false}, {"id":"19633","text":"▁задание","special":false}, {"id":"125827","text":",","special":false}, {"id":"6050","text":"▁которое","special":false}, {"id":"7549","text":"▁модель","special":false}, {"id":"7160","text":"▁должна","special":false}, {"id":"18879","text":"▁выполнить","special":false}, {"id":"125827","text":",","special":false}, {"id":"31323","text":"▁учитывая","special":false}, {"id":"818","text":"▁пере","special":false}, {"id":"56857","text":"данный","special":false}, {"id":"24719","text":"▁контек","special":false}, {"id":"269","text":"ст","special":false}, {"id":"125820","text":".","special":false}, {"id":"10500","text":"▁Чем","special":false}, {"id":"8504","text":"▁конкре","special":false}, {"id":"93886","text":"тнее","special":false}, {"id":"73199","text":"▁составлен","special":false}, {"id":"68740","text":"▁пром","special":false}, {"id":"125810","text":"т","special":false}, {"id":"125827","text":",","special":false}, {"id":"1819","text":"▁тем","special":false}, {"id":"1800","text":"▁более","special":false}, {"id":"470","text":"▁то","special":false}, {"id":"10969","text":"чными","special":false}, {"id":"3315","text":"▁будут","special":false}, {"id":"11306","text":"▁результаты","special":false}, {"id":"1630","text":"▁работы","special":false}, {"id":"6234","text":"▁модели","special":false}, {"id":"125820","text":".","special":false}], "modelVersion":"23.10.2024" }
-
Создайте файл
tbody.json
, содержащий параметры запроса:{ "modelUri": "gpt://<идентификатор_каталога>/yandexgpt", "text": "Управление генеративными моделями осуществляется с помощью промтов. Эффективный промт должен содержать контекст запроса (инструкцию) для модели и непосредственно задание, которое модель должна выполнить, учитывая переданный контекст. Чем конкретнее составлен промт, тем более точными будут результаты работы модели." }
Где
<идентификатор_каталога>
— идентификатор каталога Yandex Cloud, на который у вашего аккаунта есть рольai.languageModels.user
или выше. -
Отправьте запрос к модели:
export IAM_TOKEN=<IAM-токен> curl --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data "@tbody.json" \ "https://llm.api.cloud.yandex.net/foundationModels/v1/tokenize"
Где:
<IAM-токен>
— значение IAM-токена, полученного для вашего аккаунта.tbody.json
— файл в формате JSON, содержащий параметры запроса.
Результат выполнения запроса — список полученных токенизатором токенов:
{ "tokens": [ { "id": "1", "text": "<s>", "special": true }, { "id": "19078", "text": "▁Управление", "special": false }, { "id": "10810", "text": "▁генера", "special": false }, { "id": "26991", "text": "тивными", "special": false }, { "id": "77514", "text": "▁моделями", "special": false }, { "id": "10578", "text": "▁осуществляется", "special": false }, { "id": "277", "text": "▁с", "special": false }, { "id": "4390", "text": "▁помощью", "special": false }, { "id": "68740", "text": "▁пром", "special": false }, { "id": "769", "text": "тов", "special": false }, { "id": "125820", "text": ".", "special": false }, { "id": "43429", "text": "▁Эффек", "special": false }, { "id": "7146", "text": "тивный", "special": false }, { "id": "68740", "text": "▁пром", "special": false }, { "id": "125810", "text": "т", "special": false }, { "id": "4923", "text": "▁должен", "special": false }, { "id": "29443", "text": "▁содержать", "special": false }, { "id": "24719", "text": "▁контек", "special": false }, { "id": "269", "text": "ст", "special": false }, { "id": "43640", "text": "▁запроса", "special": false }, { "id": "355", "text": "▁(", "special": false }, { "id": "98434", "text": "инструк", "special": false }, { "id": "1511", "text": "цию", "special": false }, { "id": "125855", "text": ")", "special": false }, { "id": "571", "text": "▁для", "special": false }, { "id": "6234", "text": "▁модели", "special": false }, { "id": "286", "text": "▁и", "special": false }, { "id": "15616", "text": "▁непосредственно", "special": false }, { "id": "19633", "text": "▁задание", "special": false }, { "id": "125827", "text": ",", "special": false }, { "id": "6050", "text": "▁которое", "special": false }, { "id": "7549", "text": "▁модель", "special": false }, { "id": "7160", "text": "▁должна", "special": false }, { "id": "18879", "text": "▁выполнить", "special": false }, { "id": "125827", "text": ",", "special": false }, { "id": "31323", "text": "▁учитывая", "special": false }, { "id": "818", "text": "▁пере", "special": false }, { "id": "56857", "text": "данный", "special": false }, { "id": "24719", "text": "▁контек", "special": false }, { "id": "269", "text": "ст", "special": false }, { "id": "125820", "text": ".", "special": false }, { "id": "10500", "text": "▁Чем", "special": false }, { "id": "8504", "text": "▁конкре", "special": false }, { "id": "93886", "text": "тнее", "special": false }, { "id": "73199", "text": "▁составлен", "special": false }, { "id": "68740", "text": "▁пром", "special": false }, { "id": "125810", "text": "т", "special": false }, { "id": "125827", "text": ",", "special": false }, { "id": "1819", "text": "▁тем", "special": false }, { "id": "1800", "text": "▁более", "special": false }, { "id": "470", "text": "▁то", "special": false }, { "id": "10969", "text": "чными", "special": false }, { "id": "3315", "text": "▁будут", "special": false }, { "id": "11306", "text": "▁результаты", "special": false }, { "id": "1630", "text": "▁работы", "special": false }, { "id": "6234", "text": "▁модели", "special": false }, { "id": "125820", "text": ".", "special": false } ], "modelVersion": "23.10.2024" }
См. также
- Токены
- Обзор возможностей генерации текста
- Примеры работы с ML SDK на GitHub