هذه المكتبة عبارة عن تطبيق C# لحساب عدد الرموز المميزة، مع الرجوع إلى إصدار لغة Rust الرسمية لـ OpenAI. حاليًا، تم تنفيذ خوارزميات التشفير لـ o200k_base
و cl100k_base
و p50k_base
. يمكنك الحصول مباشرة على خوارزمية التشفير المقابلة باستخدام اسم النموذج.
TiktokenSharp متاح كحزمة NuGet.
using TiktokenSharp ;
//use model name
TikToken tikToken = TikToken . EncodingForModel ( " gpt-3.5-turbo " ) ;
var i = tikToken . Encode ( " hello world " ) ; //[15339, 1917]
var d = tikToken . Decode ( i ) ; //hello world
//use encoding name
TikToken tikToken = TikToken . GetEncoding ( " cl100k_base " ) ;
var i = tikToken . Encode ( " hello world " ) ; //[15339, 1917]
var d = tikToken . Decode ( i ) ; //hello world
عند استخدام برنامج تشفير جديد لأول مرة، سيتم تنزيل ملفات tiktoken المطلوبة لبرنامج التشفير من الإنترنت. قد يستغرق هذا بعض الوقت. بمجرد نجاح التنزيل، لن تتطلب الاستخدامات اللاحقة التنزيل مرة أخرى. يمكنك تعيين TikToken.PBEFileDirectory
قبل استخدام برنامج التشفير لتعديل مسار تخزين ملفات tiktoken التي تم تنزيلها، أو يمكنك تنزيل الملفات مسبقًا لتجنب مشكلات الشبكة التي تسبب فشل التنزيل.
لماذا لم يتم دمج ملفات tiktoken في الحزمة؟ من ناحية، وهذا من شأنه أن يجعل حجم الحزمة أكبر. من ناحية أخرى، أريد أن أبقى متسقًا قدر الإمكان مع كود Python الرسمي الخاص بـ OpenAI.
إذا كنت تقوم بنشر وظائف سحابية، مثل "Azure App Service"، والتي لا يمكنها قراءة/كتابة الملفات المحلية، فيرجى حزم ملفات tiktoken (PBE Dir) مع ملفات النشر.
فيما يلي روابط تنزيل الملف: p50k_base.tiktoken cl100k_base.tiktoken o200k_base.tiktoken
لقد لاحظت أن بعض المستخدمين يرغبون في الحصول على مقارنة الكفاءة. هنا، أستخدم SharpToken كمقارنة أساسية، مع برنامج التشفير cl100k_base، على .Net 6.0 في وضع التصحيح.
private GptEncoding _sharpToken = GptEncoding . GetEncoding ( " cl100k_base " ) ;
private TikToken _tikToken = TikToken . GetEncoding ( " cl100k_base " ) ;
private string _kLongText = " King Lear, one of Shakespeare's darkest and most savage plays, tells the story of the foolish and Job-like Lear, who divides his kingdom, as he does his affections, according to vanity and whim. Lear’s failure as a father engulfs himself and his world in turmoil and tragedy. " ;
[ Benchmark ]
public int SharpToken ( )
{
var sum = 0 ;
for ( var i = 0 ; i < 10000 ; i ++ )
{
var encoded = _sharpToken . Encode ( _kLongText ) ;
var decoded = _sharpToken . Decode ( encoded ) ;
sum += decoded . Length ;
}
return sum ;
}
[ Benchmark ]
public int TiktokenSharp ( )
{
var sum = 0 ;
for ( var i = 0 ; i < 10000 ; i ++ )
{
var encoded = _tikToken . Encode ( _kLongText ) ;
var decoded = _tikToken . Decode ( encoded ) ;
sum += decoded . Length ;
}
return sum ;
}
طريقة | وظيفة | وقت التشغيل | يقصد | خطأ | ستديف | الجنرال0 | المخصصة |
---|---|---|---|---|---|---|---|
TiktokenSharp | نت 8.0 | نت 8.0 | 98.34 مللي ثانية | 0.198 مللي ثانية | 0.176 مللي ثانية | 9833.3333 | 82321080 ب |
شاربتوكين | نت 8.0 | نت 8.0 | 116.38 مللي ثانية | 1.026 مللي ثانية | 0.909 مللي ثانية | 2000.0000 | 23201696 ب |