เครื่องนับโทเค็นฟรีสำหรับ GPT-4, ChatGPT และโมเดล AI
เครื่องนับโทเค็นที่แม่นยำโดยใช้ไลบรารี tiktoken ของ OpenAI นับโทเค็นสำหรับโมเดล GPT-4, ChatGPT และ GPT-3 จัดการค่า API และเพิ่มประสิทธิภาพการป้อนข้อมูล AI ได้ทันที
เครื่องนับโทเค็น
ข้อมูลไม่ถูกต้อง
เอกสารประกอบการใช้งาน
ตัวนับโทเคนคืออะไร?
ตัวนับโทเคนใช้วัดว่าข้อความหนึ่งชิ้นถูกแบ่งออกเป็นโทเคนกี่โทเคนเมื่อโมเดลภาษาปัญญาประดิษฐ์อ่าน โทเคนคือส่วนย่อยของข้อความ เช่น คำทั้งคำ ส่วนหนึ่งของคำ หรือเครื่องหมายวรรคตอน ซึ่งโมเดลอย่าง GPT-4 และ ChatGPT ใช้ประมวลผลแทนการประมวลผลตัวอักษรดิบ เครื่องมือนี้ใช้ tiktoken ซึ่งเป็นไลบรารีแบ่งโทเคนแบบโอเพนซอร์สที่เผยแพร่โดย OpenAI ดังนั้นจำนวนที่นับได้จึงตรงกับผลที่โมเดลและ API ของ OpenAI เองจะสร้างขึ้น
การแบ่งข้อความเป็นโทเคนทำงานอย่างไร
เครื่องมือแบ่งโทเคนไม่ได้เพียงนับคำ แต่จะประมวลผลข้อความด้วยอัลกอริทึมที่เรียกว่า การเข้ารหัสแบบไบต์แพร์ (byte pair encoding หรือ BPE) อัลกอริทึมนี้เริ่มจากไบต์แต่ละไบต์ของข้อความ แล้วรวมคู่ที่อยู่ติดกันและปรากฏบ่อยที่สุดซ้ำ ๆ โดยอาศัยรูปแบบที่เรียนรู้จากคลังข้อความขนาดใหญ่ระหว่างการฝึก ผลลัพธ์คือชุดคำศัพท์แบบตายตัวที่มีหน่วยย่อยซึ่งพบบ่อยหลายหมื่นหน่วย ได้แก่ คำสั้นทั้งคำ ส่วนประกอบคำที่พบบ่อย และอักขระเดี่ยวสำหรับสิ่งที่พบได้ยาก
ด้วยเหตุนี้ คำภาษาอังกฤษหนึ่งคำมักกลายเป็นหนึ่งโทเคน แต่คำที่ยาวหรือไม่คุ้นเคยอาจถูกแบ่งเป็นสองโทเคนหรือมากกว่า โดยปกติช่องว่างจะถูกผนวกไว้ที่ต้นโทเคนถัดไป แทนที่จะนับเป็นโทเคนแยกต่างหาก และเครื่องหมายวรรคตอนมักเป็นโทเคนของตัวเอง
การเข้ารหัสที่เครื่องมือนี้รองรับ
Tiktoken มีการเข้ารหัสหลายแบบ โดยแต่ละแบบเชื่อมโยงกับตระกูลโมเดลของ OpenAI เครื่องมือนี้รองรับสามแบบ:
| การเข้ารหัส | ใช้โดย | ขนาดคลังคำศัพท์โดยประมาณ |
|---|---|---|
cl100k_base | โมเดลตระกูล GPT-3.5 และ GPT-4, ChatGPT | ประมาณ 100,000 โทเคน |
p50k_base | โมเดล GPT-3 รุ่นหลัง | ประมาณ 50,000 โทเคน |
r50k_base | โมเดล GPT-3 และ GPT-2 รุ่นก่อนหน้า | ประมาณ 50,000 โทเคน |
โดยค่าเริ่มต้นจะเลือก cl100k_base เนื่องจากครอบคลุมตระกูลโมเดลที่คนส่วนใหญ่ใช้อยู่ในปัจจุบัน ข้อความเดียวกันอาจให้จำนวนโทเคนต่างกันเมื่อใช้การเข้ารหัสแต่ละแบบ เพราะแต่ละแบบได้รับการฝึกด้วยข้อความคนละชุดและรวมอักขระในลักษณะต่างกัน
วิธีคำนวณจำนวนโทเคน
ไม่มีสูตรคณิตศาสตร์อย่างง่ายสำหรับแปลงจำนวนอักขระหรือจำนวนคำเป็นจำนวนโทเคน เนื่องจากการรวมของ BPE ขึ้นอยู่กับข้อความเฉพาะและคลังคำศัพท์ที่ผ่านการฝึก วิธีที่ให้ผลถูกต้องเพียงวิธีเดียวคือส่งข้อความผ่านเครื่องมือแบ่งโทเคนโดยตรง:
- เลือกการเข้ารหัสที่ตรงกับโมเดลเป้าหมาย
- ป้อนข้อความเข้าไปในโทเคไนเซอร์ของการเข้ารหัสนั้น
- นับรายการรหัสโทเคนที่ได้ ความยาวของรายการนั้นคือจำนวนโทเคน
สำหรับข้อความภาษาอังกฤษ การประมาณแบบหยาบคือหนึ่งโทเคนใกล้เคียงกับอักขระสี่ตัว หรือประมาณสามในสี่ของหนึ่งคำ นี่เป็นเพียงแนวทางเท่านั้น ตัวเลข โค้ด ข้อความที่ไม่ใช่ภาษาอังกฤษ และการสะกดที่ไม่คุ้นเคยอาจทำให้อัตราส่วนเปลี่ยนไปมาก
ตัวอย่างพร้อมวิธีทำ
พิจารณาประโยค:
"การแบ่งเป็นโทเคนจะแบ่งข้อความออกเป็นส่วนย่อย"
ภายใต้การเข้ารหัส cl100k_base, tiktoken จะแบ่งข้อความนี้ออกเป็น 7 โทเคน:
Token, ization, splits, text, into, pieces, .
สังเกตว่า "Tokenization" เองถูกแบ่งเป็นสองโทเคน คือ "Token" และ "ization" ขณะที่คำอื่น ๆ ยังคงเป็นคำเต็ม จุดมหัพภาคท้ายประโยคเป็นโทเคนของตัวเอง นี่จึงเป็นเหตุให้ประโยคที่มีอักขระ 37 ตัวและมี 5 คำ ผลิตโทเคนได้ 7 โทเคนแทนที่จะเป็น 6 โทเคน
เหตุใดจำนวนโทเคนจึงสำคัญ
ผู้ให้บริการปัญญาประดิษฐ์คิดค่าการใช้งาน API ตามจำนวนโทเคน โดยนับทั้งข้อความที่ส่งเข้าไปและข้อความที่สร้างเป็นคำตอบ ดังนั้นจำนวนโทเคนจึงช่วยคาดการณ์ค่าใช้จ่ายได้ก่อนส่งคำขอ โมเดลทุกตัวยังมีความยาวบริบทสูงสุด ซึ่งเป็นขีดจำกัดว่าคำขอหนึ่งรายการและคำตอบของคำขอนั้นจะมีโทเคนรวมกันได้กี่โทเคน ขีดจำกัดนี้แตกต่างกันไปตามโมเดลและเปลี่ยนแปลงเมื่อผู้ให้บริการเผยแพร่รุ่นใหม่ จึงควรตรวจสอบจากเอกสารปัจจุบันของโมเดลที่ใช้งาน แทนการคาดเดาจากความจำ
คำถามที่พบบ่อย
โทเคนในโมเดลภาษาปัญญาประดิษฐ์คืออะไร โทเคนคือส่วนหนึ่งของข้อความที่โมเดลภาษาอ่านเป็นหน่วยเดียว อาจเป็นคำสั้นทั้งคำ ส่วนหนึ่งของคำที่ยาวกว่า เครื่องหมายวรรคตอน หรือช่องว่างที่ผนวกกับคำถัดไป
เหตุใดการเข้ารหัสต่างกันจึงให้จำนวนโทเคนต่างกันสำหรับข้อความเดียวกัน การเข้ารหัสแต่ละแบบได้รับการฝึกด้วยตัวอย่างข้อความของตนเองและสร้างคลังคำศัพท์ของส่วนย่อยที่พบบ่อยขึ้นมาเอง คำที่พบบ่อยมากพอจะเป็นโทเคนเดียวในคลังคำศัพท์หนึ่ง อาจไม่อยู่ในอีกคลังคำศัพท์หนึ่ง จึงถูกแบ่งแตกต่างกัน
เครื่องหมายวรรคตอนนับเป็นโทเคนหรือไม่ ใช่ โดยปกติเครื่องหมายวรรคตอนจะถูกนับเป็นโทเคนของตัวเอง หรือบางครั้งถูกรวมกับอักขระข้างเคียง ขึ้นอยู่กับว่าการจับคู่ดังกล่าวปรากฏบ่อยเพียงใดระหว่างการฝึกเครื่องมือแบ่งโทเคน
โทเคนเหมือนกับคำหรือไม่ ไม่ใช่ คำสั้นที่พบบ่อยมักมีหนึ่งโทเคนต่อคำ ส่วนคำที่ยาวหรือพบไม่บ่อย รวมถึงคำส่วนใหญ่ที่ไม่ใช่ภาษาอังกฤษ มักถูกแบ่งเป็นสองโทเคนหรือมากกว่า
เครื่องมือนี้มีความแม่นยำเพียงใด เครื่องมือนี้นับโทเคนโดยใช้ไลบรารี tiktoken ของ OpenAI เอง และใช้ตรรกะการเข้ารหัสเดียวกับที่ OpenAI ใช้ภายใน ดังนั้นจำนวนที่ได้จึงตรงกับที่การเรียกใช้ OpenAI API จะแจ้งสำหรับข้อความและการเข้ารหัสเดียวกัน
เครื่องมือนี้นับโทเคนสำหรับโมเดลที่ไม่ใช่ของ OpenAI ได้หรือไม่ เครื่องมือนี้ใช้การเข้ารหัสของ tiktoken ซึ่งสร้างขึ้นสำหรับโมเดลของ OpenAI ผู้ให้บริการรายอื่น เช่น Anthropic หรือ Google ใช้เครื่องมือแบ่งโทเคนของตนเอง ซึ่งอาจให้จำนวนที่แตกต่างกันสำหรับข้อความเดียวกัน
เอกสารอ้างอิง
- OpenAI. "tiktoken." GitHub, https://github.com/openai/tiktoken.
- Sennrich, Rico และคณะ "Neural Machine Translation of Rare Words with Subword Units." arXiv:1508.07909, 2016, http://arxiv.org/abs/1508.07909.
- Brown, Tom B. และคณะ "Language Models are Few-Shot Learners." arXiv:2005.14165, 2020, http://arxiv.org/abs/2005.14165.