OpenAI
หน้านี้แปลด้วยระบบอัตโนมัติ ดูต้นฉบับภาษาอังกฤษ.

ทำความเข้าใจและนับ Token

เรียนรู้ว่า Token อินพุต เอาต์พุต แคช และการให้เหตุผลส่งผลต่อการใช้งาน API ขีดจำกัดของโมเดล และค่าใช้จ่ายอย่างไร

อัปเดตล่าสุด: 10 days ago

ภาพรวม

Token คือหน่วยที่โมเดลของ OpenAI ใช้ประมวลผลข้อความ Token หนึ่งรายการอาจแทนอักขระ ส่วนหนึ่งของคำ คำทั้งคำ หรือเครื่องหมายวรรคตอน ช่องว่างก็มีผลต่อการแบ่งข้อความเป็น Token เช่นกัน

จำนวน Token ไม่เท่ากับจำนวนคำ ข้อความเดียวกันอาจมีจำนวน Token ต่างกัน ขึ้นอยู่กับโมเดล การเข้ารหัส และภาษา

ทำความเข้าใจว่าข้อความกลายเป็น Token ได้อย่างไร

เมื่อคุณส่งข้อความไปยังโมเดล:

  1. ข้อความจะถูกแบ่งเป็น Token

  2. โมเดลจะประมวลผล Token เหล่านั้น

  3. โมเดลจะสร้าง Token เอาต์พุต Token เหล่านี้อาจรวมถึงข้อความที่คุณได้รับ และสำหรับโมเดลการให้เหตุผล ยังรวมถึง Token การให้เหตุผลภายในที่ไม่แสดงเป็นข้อความคำตอบ

ใช้ค่าประมาณคร่าวๆ สำหรับข้อความภาษาอังกฤษ

ค่าประมาณต่อไปนี้ช่วยประเมินขนาดข้อความภาษาอังกฤษได้:

  • 1 Token มีประมาณ 4 อักขระ

  • 1 Token มีประมาณสามในสี่ของคำ

  • 100 Token มีประมาณ 75 คำ

ตัวเลขเหล่านี้เป็นเพียงค่าประมาณ ไม่ใช่จำนวนที่แน่นอน ความยาวของประโยคและย่อหน้าแตกต่างกันไป และภาษาอื่นอาจมีความสัมพันธ์ระหว่างอักขระ คำ และ Token ที่ต่างออกไป

คำนึงถึงช่องว่างและการใช้ตัวพิมพ์ใหญ่

คำหนึ่งคำอาจถูกแบ่งเป็น Token ต่างกันตามการสะกด การใช้ตัวพิมพ์ใหญ่ และข้อความโดยรอบ

ตัวอย่างเช่น red, Red และ red ไม่ใช่ข้อความที่เหมือนกัน โดยตัวอย่างสุดท้ายมีช่องว่างนำหน้า การเข้ารหัสอาจแทนข้อความเหล่านี้ต่างกัน

รหัส Token ยังขึ้นอยู่กับการเข้ารหัสด้วย อย่าคิดว่ารหัส Token ในตัวอย่างจะใช้ได้กับทุกโมเดล

แยกความแตกต่างระหว่าง Token อินพุตและเอาต์พุต

ประเภทคำอธิบาย
Token อินพุตToken ที่ส่งให้โมเดลในคำขอ เรียกอีกอย่างว่า Token ของพรอมต์
Token เอาต์พุตToken ที่โมเดลสร้างขึ้น Chat Completions เรียก Token เหล่านี้ว่า completion tokens
Token อินพุตที่แคชไว้Token อินพุตที่นำกลับมาใช้ผ่าน Prompt Caching ราคาอาจต่างจาก Token อินพุตที่ไม่ได้แคช
Token การให้เหตุผลToken ที่โมเดลการให้เหตุผลใช้ภายในก่อนสร้างคำตอบที่มองเห็นได้

Token การให้เหตุผลจะไม่ปรากฏเป็นข้อความคำตอบ แต่จะนับรวมในการใช้เอาต์พุตและเรียกเก็บเงินในฐานะ Token เอาต์พุต

ดังนั้น คำตอบที่มองเห็นได้แม้จะสั้นก็อาจใช้ Token มากกว่าที่คาดจากข้อความที่แสดง

นับ Token ก่อนส่งคำขอ

นับ Token ของข้อความธรรมดา

ใช้ Tokenizer เพื่อดูว่าข้อความถูกแบ่งเป็น Token อย่างไร

หากต้องการทำ Tokenization ข้อความธรรมดาด้วยโปรแกรม ให้ใช้ tiktoken เลือกการเข้ารหัสสำหรับโมเดลเป้าหมาย เช่น ใช้ tiktoken.encoding_for_model(model)

จำนวน Token ของข้อความธรรมดาอาจไม่ครอบคลุม Token ทั้งหมดในคำขอ API โครงสร้างข้อความ เครื่องมือ สคีมา รูปภาพ และไฟล์อาจส่งผลต่อจำนวนอินพุตทั้งหมด

นับ Token ของอินพุต Responses แบบครบถ้วน

สำหรับอินพุต Responses API แบบครบถ้วน ให้ใช้ API สำหรับนับ Token อินพุต

API นี้รองรับรูปแบบอินพุตของ Responses รวมถึงข้อความ รูปภาพ ไฟล์ เครื่องมือ และบทสนทนา จำนวนที่นับได้รวม Token สำหรับการจัดรูปแบบโครงสร้างคำขอ เช่น บทบาทและขอบเขตของข้อความ

จำนวนอินพุตไม่สามารถใช้คาดการณ์จำนวน Token เอาต์พุตที่โมเดลจะสร้างได้

ตรวจสอบการใช้ Token จริง

หลังส่งคำขอ ให้ตรวจสอบข้อมูลการใช้งานของคำขอนั้น ชื่อฟิลด์จะแตกต่างกันไปตาม endpoint:

  • Chat Completions รายงาน prompt_tokens, completion_tokens และ total_tokens

  • Responses รายงาน input_tokens, output_tokens และ total_tokens

คุณยังตรวจสอบกิจกรรมย้อนหลังได้ในแดชบอร์ดการใช้งาน ดูคำแนะนำ รวมถึงการใช้งานแบบสตรีมได้ที่ การตรวจสอบการใช้งานและค่าใช้จ่ายของ API

ใช้งานภายในขีดจำกัดของโมเดล

ตรวจสอบหน้าต่างบริบทและเอาต์พุตสูงสุดจากเอกสารประกอบของโมเดล ขีดจำกัดเหล่านี้อาจแตกต่างกันในแต่ละโมเดล

หน้าต่างบริบทจำกัดจำนวน Token ที่โมเดลประมวลผลได้ในคำขอหนึ่งรายการ โมเดลยังมีขีดจำกัดเอาต์พุตด้วย สำหรับโมเดลการให้เหตุผล ให้เผื่อพื้นที่ทั้งสำหรับ Token การให้เหตุผลและคำตอบที่มองเห็นได้

หากอินพุตมีขนาดใหญ่เกินไป คุณสามารถ:

  • ย่อหรือเรียบเรียงพรอมต์ใหม่

  • ลบบริบทที่ไม่จำเป็นหรือซ้ำกัน

  • แบ่งอินพุตขนาดใหญ่ออกเป็นส่วนย่อย

  • สรุปหรือประมวลผลข้อความล่วงหน้าก่อนส่ง

ใช้การตั้งค่า Token เอาต์พุตที่ endpoint และโมเดลของคุณรองรับ Chat Completions ใช้ max_completion_tokens ส่วน Responses ใช้ max_output_tokens

ขีดจำกัดขนาดคำขอเหล่านี้แยกจากขีดจำกัดอัตราการเรียก API และขีดจำกัดการใช้งานหรือค่าใช้จ่ายรายเดือน ตรวจสอบเอกสารประกอบของโมเดลที่คุณใช้

ทำความเข้าใจค่าบริการตาม Token

สำหรับค่าบริการ API ที่คิดตาม Token อัตราค่าบริการจะขึ้นอยู่กับโมเดลและประเภท Token Token อินพุต อินพุตที่แคชไว้ และเอาต์พุตอาจมีราคาต่างกัน ความสามารถอื่นๆ ของ API อาจใช้หน่วยเรียกเก็บเงินที่ต่างกัน

ตรวจสอบอัตราปัจจุบันได้ที่หน้าค่าบริการ API

เมื่อเปรียบเทียบโมเดล ให้พิจารณาจำนวน Token และค่าใช้จ่ายทั้งหมดที่ต้องใช้เพื่อทำงานให้เสร็จ ราคาต่อหนึ่งล้าน Token ที่ต่ำกว่าไม่ได้หมายความว่าค่าใช้จ่ายรวมจะต่ำกว่าเสมอไป เพราะแต่ละโมเดลอาจ Tokenize ข้อความเดียวกันต่างกัน และสร้างเอาต์พุตหรือการให้เหตุผลในปริมาณต่างกัน

ทดสอบด้วยงานที่เป็นตัวแทนของการใช้งานจริง แทนที่จะเปรียบเทียบเพียงความยาวของคำตอบที่มองเห็นได้

คำนึงถึงผลลัพธ์หลายรายการ

เมื่อ endpoint และโมเดลรองรับการสร้างผลลัพธ์หลายรายการ ผลลัพธ์เพิ่มเติมเหล่านั้นก็ใช้ Token เช่นกัน

สำหรับ Chat Completions การตั้งค่า n มากกว่า 1 จะสร้างตัวเลือกหลายรายการ ระบบจะเรียกเก็บค่าบริการสำหรับ Token ที่สร้างขึ้นในตัวเลือกเหล่านั้นทั้งหมด

สำหรับ Completions API รุ่นเก่า best_of สามารถสร้างตัวเลือกที่ไม่ได้ส่งกลับมาทั้งหมด ตัวอย่างเช่น best_of = 3 สามารถสร้าง Token ของผลลัพธ์ได้สูงสุด 3 × max_tokens จากตัวเลือกทั้งหมด

พารามิเตอร์เหล่านี้ใช้เฉพาะกับแต่ละ endpoint อย่าคิดว่า API หรือโมเดลอื่นจะรองรับ n หรือ best_of

บทความนี้มีประโยชน์หรือไม่