localhost
.______ ______ __ __ __ __ ______ __ __ /__ _ / __ / / / / "-./ / __ / "-. /_/ / / _"-. -./ / -. _ _____ _ _ _ _ _____ _\"_ /_/ /_____/ /_//_/ /_/ /_/ /_____/ /_/ /_/ Утилита CLI для мониторинга использования токена API OpenAI.
tokmon
?? - CLI для мониторинга использования OpenAI API. tokmon
( Tok en Mon itor ) позволяет отслеживать использование токенов OpenAI API вашей программой.
Вы можете использовать tokmon
так же, как и утилиту time
, но вместо времени выполнения вы получаете статистику использования и затрат OpenAI.
pip install tokmon
Примечание : токмон работает для моделей
gpt-*
(gpt-3.5-turbo
,gpt-4
и т. д.). Если вам нужна поддержка других моделей (например,davinci
), см. tokmon#6.
$ tokmon /path/to/your/ < your program > [arg1] [arg2] ...
tokmon cost report :
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Monitored invocation : python3 . / tests / python_example . py --prompt say 'hello, tokmon!'
Models : [ 'gpt-3.5-turbo-0301' ]
Total Usage : { 'total_prompt_tokens' : 26 , 'total_completion_tokens' : 12 , 'total_tokens' : 38}
Pricing : { 'gpt-3.5-turbo-0301' : { 'prompt_cost' : 0.002 , 'completion_cost' : 0.002 , 'per_tokens' : 1000}}
Total Cost : $0.000076
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Writing cost summary to JSON file : . / tokmon_usage_summary_1682039505 . json
После того, как ваша программа завершит работу (или вы выключите ее ctrl^C
), tokmon
напечатает сводку, похожую на приведенную выше. tokmon
также генерирует подробный отчет и сохраняет его в виде файла JSON.
Вы можете использовать флаг --beam <url>
для потоковой передачи данных об использовании токена на сервер. См. tokmon --beam для получения дополнительной информации.
# Install tokmon
pip install tokmon
# Clone this repo and `cd` into it
git clone https://github.com/yagil/tokmon.git && cd tokmon/
# export your OpenAI API key. This will be used in the test program (source in ./tests/python_example.py)
export OPENAI_API_KEY= " YOUR_OPENAI_API_KEY "
# Run tokmon (save the JSON summary to the current folder)
# The test uses the openai python package. Install it if you don't have it: `pip install openai`
tokmon --json_out=. python3 ./tests/python_example.py --prompt " say 'hello, tokmon!' "
tokmon
также поддерживает это:tokmon
. Каждый вызов будет генерировать отдельный отчет об использовании.--json_out /your/path/report.json
, чтобы получить подробную информацию и историю разговоров в формате JSON. tokmon
со своим приложением или скриптомПредупреждение. Это инструмент отладки. Он не предназначен для использования в каких-либо последующих условиях. Используйте свое лучшее суждение!
Добавьте tokmon
к обычному вызову программы следующим образом:
$ tokmon /path/to/your/ < your program > [arg1] [arg2] ...
Запустите и используйте свою программу так же, как обычно (аргументы и все такое). Также поддерживается интерактивное использование.
Просто добавьте tokmon
в начало вашего обычного вызова.
$ tokmon python /path/to/your/script.py
Это будет работать для скриптов и долго работающих программ, таких как серверы Django/Flask/FastAPI.
Для скриптов:
$ tokmon node /path/to/your/script.js
npm run
Отредактируйте запись «scripts» вашего package.json
, включив в нее tokmon
.
{
"scripts" : {
"dev" : "tokmon next dev" ,
...
}
}
{
"total_cost" : 0.0019199999999999998 ,
"total_usage" : {
"total_prompt_tokens" : 18 ,
"total_completion_tokens" : 23 ,
"total_tokens" : 41
},
"pricing_data" : " {'gpt-4-0314': {'prompt_cost': 0.03, 'completion_cost': 0.06, 'per_tokens': 1000}} " ,
"models" : [
" gpt-4-0314 "
],
"raw_data" : [
{
"model" : " gpt-4-0314 " ,
"usage" : {
"prompt_tokens" : 18 ,
"completion_tokens" : 23 ,
"total_tokens" : 41
},
"cost" : 0.0019199999999999998 ,
"messages" : [
{
"role" : " system " ,
"content" : " You're a helpful assistant. "
},
{
"role" : " user " ,
"content" : " hello "
},
{
"role" : " assistant " ,
"content" : " Hello! How can I help you today? If you have any questions or need assistance, feel free to ask. "
}
]
}
]
}
tokmon
использует библиотеку mitmproxy для перехвата HTTP-запросов и ответов между вашей программой и API OpenAI. Затем он обрабатывает данные запроса и ответа для расчета использования и стоимости токена на основе tokmon/openai-pricing.json.
tokmon
работает для программ наpython
/node
(с использованием клиентов OpenAI) илиcurl
(запускается напрямую, а не в bash-скрипте). Инструкции по использованиюtokmon
с программами Golang см. в инструкциях Golang.
если вы вручную устанавливаете сертификат CA
mitmproxy
, он должен работать для всех исполняемых файлов (примечание: это не проверялось.)
В большинстве случаев tokmon
использует поле 'usage'
в ответах API OpenAI для подсчета токенов. Однако для потоковых запросов tokmon
напрямую использует библиотеку tiktoken OpenAI для подсчета токенов. На момент написания API OpenAI не возвращает данные об использовании для запросов потоковой передачи (ссылка).
Данные о ценах были получены с сайта OpenAI с помощью ChatGPT.
tokmon
использует tokmon/openai-pricing.json из своего пакета.
{
"last_updated" : " 2023-04-12 " ,
"data_sources" : [
" https://openai.com/pricing " ,
" https://platform.openai.com/docs/models/model-endpoint-compatibility "
],
"gpt-4" : { "prompt_cost" : 0.03 , "completion_cost" : 0.06 , "per_tokens" : 1000 },
"gpt-4-0314" : { "prompt_cost" : 0.03 , "completion_cost" : 0.06 , "per_tokens" : 1000 },
"gpt-4-32k" : { "prompt_cost" : 0.06 , "completion_cost" : 0.12 , "per_tokens" : 1000 },
"gpt-4-32k-0314" : { "prompt_cost" : 0.06 , "completion_cost" : 0.12 , "per_tokens" : 1000 },
"gpt-3.5-turbo" : { "prompt_cost" : 0.002 , "completion_cost" : 0.002 , "per_tokens" : 1000 },
"gpt-3.5-turbo-0301" : { "prompt_cost" : 0.002 , "completion_cost" : 0.002 , "per_tokens" : 1000 },
"text-davinci-003" : { "cost" : 0.02 , "per_tokens" : 1000 },
"text-curie-001" : { "cost" : 0.002 , "per_tokens" : 1000 },
"text-babbage-001" : { "cost" : 0.0005 , "per_tokens" : 1000 },
"text-ada-001" : { "cost" : 0.0004 , "per_tokens" : 1000 },
"text-embedding-ada-002" : { "cost" : 0.0004 , "per_tokens" : 1000 }
}
Вы можете переопределить цену по умолчанию с помощью: tokmon --pricing /path/to/your/custom-openai-pricing.json ...
JSON с ценами неполный (отсутствует DALL-E и т. д.), может быть неверным и устаревшим.
Для достижения наилучших результатов убедитесь, что у вас есть последние цены.
Хакерский обходной путь для программ Golang. Добавьте это в свою программу:
// Import these packages
import (
"os"
"crypto/tls"
"crypto/x509"
"io/ioutil"
"net/http"
)
// Place this code somewhere in your go program *before* you make any calls to OpenAI's API.
certFile := os . Getenv ( "TOKMON_SSL_CERT_FILE" ) // This env variable will be set by tokmon
caCert , err := ioutil . ReadFile ( certFile )
if err == nil {
caCertPool , _ := x509 . SystemCertPool ()
caCertPool . AppendCertsFromPEM ( caCert )
http . DefaultTransport .( * http. Transport ). TLSClientConfig = & tls. Config {
RootCAs : caCertPool ,
}
}
tokmon
буферизует отправленные сервером события (SSE) до тех пор, пока не будет получен фрагмент data: [DONE]
. Если отслеживаемая программа использует потоковую передачу событий, ее поведение будет изменено.gpt-3.5-turbo
, gpt-4
и варианты).Если вы хотите внести свой вклад в проект, пожалуйста, выполните следующие действия:
tokmon
поставляется без каких-либо гарантий или гарантий.tokmon
тестировался только на macOS. На других платформах это может не работать.openai-pricing.json
могут устареть.