Как проверить количество токенов запроса к OpenAI API? | NikonoroW.ru

Чтобы лучше разобраться какие существуют ограничения и сколько токенов OpenAI API расходуется при при вводе, выводе вашего сообщения и суммарно, я написал данную статью. Далее обо всем по порядку.

Какое ограничение токенов есть у OpenAI API?

Чуть больше изучив документацию и пообщавшись с человеком под ником Sergey (он получил ошибку об ограничении запроса), я выяснил, что OpenAI API ограничено по токенам не только в количестве вводимых символов, но и по количеству символов получаемых.

Полезное эмпирическое правило заключается в том, что один токен обычно соответствует ~4 символам текста в английском языке. Это примерно соответствует ¾ слова (таким образом, 100 токенов приблизительно соответствует 75 словам).

Максимальное количество токенов на задание (max_tokens): 4000 токенов (оставляя 97 токенов в качестве буфера безопасности) = 3000 слов (приблизительно).

Если превысить данный расход токенов, то api ответит примерно следующим сообщением об ошибке:

openai.error.InvalidRequestError: This model's maximum context length is 4097 tokens, however you requested 4098 tokens (98 in your prompt; 4000 for the completion). Please reduce your prompt; or completion length.

Т.е. 3000 слов максимум дается на ответ и на запрос в сумме. Речь идет о модели text-davinci-003 и новую модель gpt-3.5-turbo (GPT 3.5 Turbo) , модель text-davinci-002 суммарно ограничена в 2 раза меньшим количеством символов.

GPT 3.5 Turbo стоит 0,002 доллара за 1000 токенов, что, в 10 раз дешевле существующих моделей GPT-3.5. К сожалению, на данный момент доступна только платная версия API ChatGPT.

Как проверить расход токенов на запрос к OpenAI API?

После того, как мы ввели свой токен и подключились к API, выставили нужную модель openai — можно выводить данные в консоль (Python) или в бота телеграм.

Вывод количества токенов в консоль (Python)

  • Сколько токенов расходуется при вводе вашего сообщения:
print(response['usage']['prompt_tokens'])
  • Сколько токенов расходуется на ответ API OpenAI:
print(response['usage']['completion_tokens'])
  • И сколько всего токенов израсходовано на запрос и на ответ (суммарно):
print(response['usage']['total_tokens'])

Вывод количества токенов в бота Telegram (aiogram)

  • Расход токенов при вводе сообщения в бот:
await message.answer(response['usage']['prompt_tokens'])
  • Сколько токенов расходуется на ответ API OpenAI при выводе сообщения в бот:
await message.answer(response['usage']['completion_tokens'])
  • И сколько всего токенов израсходовано на запрос и на ответ (суммарно в задании к боту):
await message.answer(response['usage']['total_tokens'])

Что такое Tokenizer (OpenAI)?

Если вы не хотите использовать запросы к API, то существует готовый инструмент от OpenAI — сервис Tokenizer. Вы можете использовать данный инструмент, чтобы понять, как фрагмент текста маркируется API и какое количество токенов в конкретном фрагменте текста расходуется.

Модели семейства GPT обрабатывают текст с помощью тех самых токенов, которые представляют собой обычные последовательности символов, встречающиеся в тексте. Модели понимают статистические отношения между данными токенами и отлично справляются с созданием следующего токена в последовательности.

Как еще можно узнать количество токенов запроса без API и Tokenizer?

Чтобы узнать, сколько токенов содержится в текстовой строке, не вызывая API, используйте библиотеку Python tiktoken от OpenAI. Пример кода можно найти в руководстве OpenAI Cookbook по подсчету токенов с помощью tiktoken.

О том, как создать бота в телеграм на базе aiogram
с использованием OpenAI API — подробно описал здесь.

Дата создания статьи: 22.02.2023
Дата последнего обновления: 04.03.2023

Рубрика: Разработка ПО

Комментарии

Оставьте Ваше сообщение

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии

Смотрите далее

Ознакомьтесь с другими работами

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x