ไลบรารีนี้เป็นการใช้งาน 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 ในโหมด Debug
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 ;
}
วิธี | งาน | รันไทม์ | หมายถึง | ข้อผิดพลาด | มาตรฐาน | Gen0 | จัดสรรแล้ว |
---|---|---|---|---|---|---|---|
TiktokenSharp | .NET8.0 | .NET8.0 | 98.34 น | 0.198 มิลลิวินาที | 0.176 มิลลิวินาที | 9833.3333 | 82321080 บ |
ชาร์ปโทเค็น | .NET8.0 | .NET8.0 | 116.38 น | 1.026 มิลลิวินาที | 0.909 มิลลิวินาที | 2,000.0000 | 23201696 บ |