localhost
- - - - - ยูทิลิตี้ CLI เพื่อตรวจสอบการใช้งานโทเค็น OpenAI API ของคุณ
tokmon
?? - CLI เพื่อตรวจสอบการใช้งาน OpenAI API tokmon
( Tok en Mon itor) ช่วยให้คุณติดตามการใช้งานโทเค็น OpenAI API ของโปรแกรมของคุณ
คุณสามารถใช้ tokmon
ได้เหมือนกับที่คุณใช้ยูทิลิตี้ time
แต่แทนที่จะใช้เวลาดำเนินการ คุณจะได้รับการใช้งาน 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
แก้ไขรายการ "สคริปต์" ของ 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 และการตอบกลับระหว่างโปรแกรมของคุณกับ OpenAI API จากนั้นจะประมวลผลข้อมูลคำขอและการตอบกลับเพื่อคำนวณการใช้โทเค็นและต้นทุนตาม tokmon/openai-pricing.json
tokmon
ใช้งานได้กับโปรแกรมในpython
/node
(โดยใช้ไคลเอนต์ของ OpenAI) หรือcurl
(รันโดยตรงและไม่ใช่ในสคริปต์ทุบตี) ดูคำแนะนำของ Golang สำหรับคำแนะนำเกี่ยวกับวิธีใช้tokmon
กับโปรแกรม 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
อาจล้าสมัย