localhost
에서 실행되는 API 사용 데이터를 모니터링하는 자체 호스팅 웹 UI입니다.______ ______ __ __ __ __ ______ __ __ /__ _ / __ / / / / "-./ / __ / "-. /_/ / / _"-. -./ / -. _ _____ _ _ _ _ _____ _\"_ /_/ /_____/ /_//_/ /_/ /_/ /_____/ /_/ /_/ OpenAI API 토큰 사용량을 모니터링하는 CLI 유틸리티
tokmon
?? - OpenAI API 사용을 모니터링하는 CLI tokmon
( Tok en Monitor )을 사용하면 프로그램의 OpenAI API 토큰 사용량을 추적할 수 있습니다.
time
유틸리티를 사용하는 것처럼 tokmon
사용할 수 있지만 실행 시간 대신 OpenAI 사용량 및 비용 통계를 얻습니다.
pip install tokmon
참고 : 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
tokmon
포함하도록 package.json
의 "scripts" 항목을 편집하세요.
{
"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 라이브러리를 사용하여 프로그램과 OpenAI API 간의 HTTP 요청 및 응답을 가로챕니다. 그런 다음 요청 및 응답 데이터를 처리하여 tokmon/openai-pricing.json을 기반으로 토큰 사용량과 비용을 계산합니다.
tokmon
python
/node
(OpenAI 클라이언트 사용) 또는curl
(bash 스크립트가 아닌 직접 실행)의 프로그램에서 작동합니다. Golang 프로그램과 함께tokmon
사용하는 방법에 대한 지침은 Golang 지침을 참조하세요.
mitmproxy
의 CA 인증서를 수동으로 설치하면 모든 실행 파일에 대해 작동해야 합니다(참고: 아직 테스트하지 않았습니다.)
대부분의 경우 tokmon
토큰 수에 대한 OpenAI API 응답의 'usage'
필드를 사용합니다. 그러나 스트리밍 요청의 경우 tokmon
OpenAI의 tiktoken 라이브러리를 직접 사용하여 토큰을 계산합니다. OpenAI의 API는 작성 당시 스트리밍 요청에 대한 사용 데이터를 반환하지 않습니다(참조).
가격 데이터는 ChatGPT의 도움을 받아 OpenAI 웹사이트에서 추출되었습니다.
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
data: [DONE]
청크가 수신될 때까지 서버에서 보낸 이벤트(SSE)를 버퍼링합니다. 모니터링되는 프로그램이 이벤트 스트리밍을 활용하는 경우 해당 동작이 수정됩니다.gpt-3.5-turbo
, gpt-4
및 변형)프로젝트에 기여하고 싶다면 다음 단계를 따르세요.
tokmon
어떠한 보증이나 보장도 없이 제공됩니다.tokmon
macOS에서만 테스트되었습니다. 다른 플랫폼에서는 작동하지 않을 수도 있습니다.openai-pricing.json
의 가격 데이터가 최신 상태가 아닐 수 있습니다.