Подсчет токенов
Потребление GigaChat API считается в токенах.
Токен может быть символом, несколькими символами, фрагментом слова или словом целиком. В среднем в одном токене 3—4 символа, включая пробелы, знаки препинания и специальные символы.
Кроме текста сообщений в токены преобразуется контент, который используются в контексте запроса. Например, текстовые файлы и изображения, описания функций или история сообщений из массива messages
.
Модели GigaChat в течение некоторого времени сохраняют токены созданные на основе предыдущих запросов. Кэширование токенов повышает скорость ответа моделей и снижает стоимость работы с GigaChat API, так как кэшированные токены не подлежат тарификации.
Вы можете оценить количество токенов в запросе двумя способами:
-
С помощью запроса
POST /tokens/count
с текстом сообщения и названием модели, которая должна посчитать токены.Запрос позволяет оценить количество токенов в сообщении. При этом вы не сможете узнать, сколько токенов модель потратит на генерацию ответа или оценить в токенах текстовый файл и изображение.
-
С помощью объекта
usage
, который приходит в ответе на генерациюPOST /chat/completions
.Объект содержит данные о том сколько токенов содержится во входном сообщении, сколько токенов модель потратила на генерацию ответа, сколько использовано кэшированных токенов, а также сколько всего токенов подлежит тарификации.
Для повышения вероятности исполь зования сохраненных токенов используйте кэширование запросов.
Пример наполнения объекта
usage
:"usage": {
"prompt_tokens": 1, // Токены запроса, после вычитания кэшированных токенов
"completion_tokens": 4, // Токены, потраченные на генерацию ответа
"precached_prompt_tokens": 37, // Кэшированные токены из предыдущих запросов. Вычитаются из общего количества токенов, подлежащих тарификации
"total_tokens": 5 // Общее число токенов, подлежащих тарификации, после вычитания кэшированных токенов
},
Примеры подсчета токенов
Ниже приводятся примеры подсчета токенов в исходном сообщении с помощью запроса POST /tokens/count
:
- Python
- JavaScript
- cURL
from gigachat import GigaChat
with GigaChat(credentials="ключ_авторизации", verify_ssl_certs=False, model="GigaChat-Pro", ) as giga:
result = giga.tokens_count(input_=["Привет, как дела?", "Как дела, как дела"], model="GigaChat-Pro")
print(result)
import GigaChat from 'gigachat';
import * as dotenv from 'dotenv';
import { Agent } from 'node:https';
const httpsAgent = new Agent({
rejectUnauthorized: false,
});
dotenv.config();
async function main() {
const client = new GigaChat({
timeout: 600,
model: 'GigaChat',
httpsAgent: httpsAgent,
});
const resp = await client.tokensCount(['Привет, как дела?', 'Как дела, как дела']);
console.log(resp);
}
main();
curl -L -X POST 'https://gigachat.devices.sberbank.ru/api/v1/tokens/count' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <ключ_авторизации>' \
--data-raw '{
"model": "GigaChat",
"input": [
"Привет, как дела?",
"Как дела, как дела"
]
}'