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. ثم يقوم بمعالجة بيانات الطلب والاستجابة لحساب استخدام الرمز المميز والتكلفة بناءً على tokmon/openai-pricing.json.
يعمل
tokmon
مع البرامج الموجودة فيpython
/node
(باستخدام عملاء OpenAI)، أوcurl
(يتم تشغيله مباشرة، وليس في برنامج نصي bash). راجع تعليمات Golang للحصول على إرشادات حول كيفية استخدامtokmon
مع برامج Golang.
إذا قمت بتثبيت شهادة CA لـ
mitmproxy
يدويًا، فيجب أن تعمل مع جميع الملفات التنفيذية (ملاحظة: لم تختبر هذا.)
في معظم الحالات، يعتمد tokmon
على حقل 'usage'
في استجابات واجهة برمجة التطبيقات الخاصة بـ OpenAI لأعداد الرموز المميزة. ومع ذلك، بالنسبة لطلبات البث، يستخدم tokmon
مكتبة tiktoken الخاصة بـ OpenAI مباشرة لحساب الرموز المميزة. حتى كتابة هذا التقرير، لا تُرجع واجهة برمجة التطبيقات الخاصة بـ 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
قديمة.