การลดต้นทุนคู่มือ
นับโทเค็นก่อนส่งคำขอ: tiktoken ใน Python
ประมาณจำนวนโทเค็นของพรอมต์แบบออฟไลน์ด้วย tiktoken ตรวจสอบกับหน้าต่างบริบท คิดราคา และเปรียบเทียบกับฟิลด์ usage ของ API

ในหน้านี้
คุณสามารถนับโทเค็นของพรอมต์บนเครื่องของคุณเองได้ก่อนที่จะส่ง: ติดตั้ง tiktoken, เข้ารหัสข้อความ, แล้วนำ len() ของผลลัพธ์ tiktoken เป็นตัวแบ่งโทเค็นของ OpenAI ดังนั้นสำหรับโมเดล DeepSeek, GLM และ MiniMax ตัวเลขที่ได้จึงเป็นเพียงการประมาณ ตัวเลขจริงจะกลับมาใน usage. หลังจากการเรียกครั้งแรก และการเปรียบเทียบทั้งสองใช้เวลาเพิ่มอีกหนึ่งบรรทัด
ทำไมต้องสนใจ? เพราะทั้งค่าใช้จ่ายและข้อผิดพลาดต่างเริ่มต้นจากขนาดของอินพุต วางสัญญายาว ๆ ลงในสคริปต์ แล้วคุณจะรู้ว่ามันใหญ่เกินไปก็ต่อเมื่อ API ตอบกลับด้วย 400 รันอีเมลห้าพันฉบับ แล้วคุณจะรู้ว่ามันมีค่าใช้จ่ายเท่าไรก็ต่อเมื่อยอดคงเหลือลดลง การนับก่อนจะเปลี่ยนความประหลาดใจทั้งสองให้เป็นตัวเลขที่คุณอ่านล่วงหน้าได้
ห้าบรรทัดที่นับโทเค็น#
tiktoken README (ตรวจสอบเมื่อ 1 พฤศจิกายน 2026) แสดงแนวคิดทั้งหมด: เลือกการเข้ารหัส, เข้ารหัสข้อความ, และความยาวของลิสต์คือจำนวนโทเค็น
pip install tiktokenimport tiktoken
enc = tiktoken.get_encoding('o200k_base')
text = 'Hello world'
tokens = enc.encode(text)
print(len(tokens)) # how many tokens the text is
enc. คืนข้อความต้นฉบับกลับมา ซึ่งเป็นการตรวจสอบความถูกต้องที่ handy ว่าคุณกำลังดูข้อความเดียวกับที่โมเดลจะเห็น README ยังกล่าวถึง tiktoken. ซึ่งเลือกตัวแบ่งโทเค็นสำหรับโมเดล OpenAI ที่ระบุ นั่นคือจุดที่ควรจำ: ตัวแบ่งโทเค็นเป็นของตระกูลโมเดล กฎง่าย ๆ ใน README คือประมาณสี่ไบต์ของข้อความต่อโทเค็น และอธิบายเฉพาะตัวแบ่งโทเค็นของ OpenAI เท่านั้น
แล้วคุณจะทำอย่างไรกับโมเดล DeepSeek? ใช้การนับเดียวกันเป็นประมาณการใช้งาน และปรับเทียบตามที่แสดงด้านล่าง
ทายตัวเลข
ข้อความภาษาอังกฤษ 2,000 ตัวอักษรมีประมาณกี่โทเค็น?
คำตอบของคุณ
02,000
แสดงคำตอบ
คำตอบ: 500
ประมาณ 500 ด้วยกฎง่าย ๆ ใน README ที่สี่ไบต์ต่อโทเค็น และข้อความภาษาอังกฤษทั่วไปที่ประมาณหนึ่งไบต์ต่อตัวอักษร 2,000 ÷ 4 = 500 ภาษาอื่นและอีโมจิใช้ไบต์ต่อตัวอักษรมากกว่า ดังนั้น 2,000 ตัวอักษรเดียวกันมักหมายถึงโทเค็นมากขึ้นตามกฎนั้น
พรอมต์พอดีกับหน้าต่างหรือไม่?#
ทุกโมเดลมีหน้าต่างบริบท และอินพุตของคุณบวกกับคำตอบที่คุณอนุญาตต้องพอดีกับมัน หน้าต่างสำหรับโมเดลที่เราให้บริการ: DeepSeek-V4-Flash 380K, GLM-5.3-Flash 390K, MiniMax-M2.7 180K โทเค็น คำตอบที่ยาวที่สุดคือ 32,768 โทเค็นสำหรับ DeepSeek-V4-Flash และ 8,192 สำหรับอีกสองตัว (รายการโมเดล CheapTokens, 1 พฤศจิกายน 2026)
การป้องกันก่อนการเรียกคือสี่บรรทัด:
CONTEXT = {
'deepseek-ai/DeepSeek-V4-Flash-0731': 380_000,
'zai-org/GLM-5.3-Flash': 390_000,
'MiniMaxAI/MiniMax-M2.7': 180_000,
}
def fits(prompt_tokens, max_tokens, model):
return prompt_tokens + max_tokens <= CONTEXT[model]สมมติว่าคุณมีเอกสาร 250,000 โทเค็น fits(250_ คือ False ดังนั้นคุณจึงส่งงานนั้นไปยังโมเดลที่มีหน้าต่างใหญ่กว่าหรือแบ่งเอกสาร และ 400 จะไม่เกิดขึ้น fits(250_ คือ True หากคุณต้องการเรื่องราวเต็มของข้อผิดพลาดที่เกิดขึ้น request too long: 400 vs 413, context window and max_tokens อธิบายไว้
จะมีค่าใช้จ่ายเท่าไร?#
ตอนนี้มาดูงบประมาณ ใช้รายการทั่วไปหนึ่งรายการ นับมัน แล้วคูณ สมมติว่าคุณจำแนกอีเมลคำสั่งซื้อ 5,000 ฉบับ คุณนับอีเมลตัวแทนหนึ่งฉบับและได้ประมาณ 800 โทเค็นอินพุต และคุณจำกัดป้ายกำกับและเหตุผลสั้น ๆ ไว้ที่ 200 โทเค็นเอาต์พุต ยอดรวม: 5,000 × 800 = 4,000,000 โทเค็นอินพุต และ 5,000 × 200 = 1,000,000 โทเค็นเอาต์พุต
ตารางด้านล่างกำหนดราคางานนั้นพอดีด้วยราคาปัจจุบัน โดยนับอินพุตและเอาต์พุตรวมกัน:
| โมเดล | Input $/1M | Output $/1M | ต่อคำขอ | 5,000 คำขอ | OpenRouter, 5,000 คำขอ |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000024 | $0.12 | $0.217 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000032 | $0.16 | $0.42 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.35 | $4.20 |
800 โทเค็นอินพุตและ 200 โทเค็นเอาต์พุตต่อคำขอ ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน
โดยรวม เมื่อนับอินพุตและเอาต์พุตรวมกัน คอลัมน์ CheapTokens ถูกกว่า OpenRouter สำหรับโมเดลเหล่านี้ เปลี่ยนตัวเลขสามตัวเป็นจำนวนของคุณเอง แล้วคุณจะมีงบประมาณก่อนคำขอแรก สำหรับความแตกต่างระหว่างสองด้านของบิล ดู input vs output tokens: what an AI API bills you for และสำหรับตัวอย่างที่วัดจริง how many tokens an API request uses ราคาปัจจุบันอยู่บน pricing page เสมอ

เปรียบเทียบการประมาณกับการใช้งาน#
การประมาณคือการเดาเกี่ยวกับตัวแบ่งโทเค็นของคนอื่น ดังนั้นตรวจสอบสักครั้งกับเฉลย ทุกการตอบกลับมีฟิลด์ usage และ usage. คือสิ่งที่ API นับสำหรับอินพุตของคุณ วางตัวเลขสองตัวเคียงข้างกันแล้วหาร
ทีละขั้นตอน
รันการเปรียบเทียบ
ตั้งค่า
ติดตั้งแพ็กเกจและใส่คีย์ในตัวแปรสภาพแวดล้อม อย่าวางลงในสคริปต์
pip install tiktoken openai
export CHEAPTOKENS_API_KEY='your-key-here'รันสคริปต์
บันทึกเป็น compare.py มันนับในเครื่อง ส่งคำขอไปยัง https:/ และพิมพ์ตัวเลขทั้งสอง รหัสโมเดลคือรหัสเต็มจากรายการโมเดล CheapTokens เนื่องจากชื่อย่อไม่ได้รับการยอมรับ
import os
import tiktoken
from openai import OpenAI
MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'
enc = tiktoken.get_encoding('o200k_base')
messages = [{'role': 'user',
'content': 'Classify this email as order, refund or other: Hi, my parcel from last Tuesday has not arrived yet.'}]
estimate = sum(len(enc.encode(m['content'])) for m in messages)
client = OpenAI(base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'])
r = client.chat.completions.create(model=MODEL, messages=messages, max_tokens=200)
real = r.usage.prompt_tokens
print(f'estimate {estimate}, usage.prompt_tokens {real}, ratio {real / estimate:.2f}')อ่านช่องว่าง
บรรทัดสุดท้ายพิมพ์ตัวเลขสามตัว สมมติว่าแสดง estimate 24, usage. จากนั้นคูณการประมาณในอนาคตของคุณด้วยอัตราส่วนก่อนจัดงบประมาณ พรอมต์จริงยังถูกห่อด้วยการจัดรูปแบบแชท ดังนั้นจำนวนจริงอาจออกมาสูงกว่าการประมาณข้อความล้วนเล็กน้อย รันกับพรอมต์ทั่วไปหลาย ๆ อัน ไม่ใช่แค่อันเดียว และใช้อัตราส่วนเฉลี่ย
จากนั้นขั้นตอนคือ: ประมาณในเครื่อง, ป้องกันหน้าต่าง, ใช้อัตราส่วนของคุณกับงบประมาณ, และให้ usage ในแต่ละการตอบกลับคอยตรวจสอบคุณ หากคุณต้องการยอดรวมสะสมตลอดทั้งงาน track AI agent token cost in Python สร้างสิ่งนั้นบนฟิลด์เดียวกัน ใหม่กับการเชื่อมต่อเอง? Your first API request with CheapTokens ครอบคลุมไว้ และ docs มีส่วนที่เหลือ
จับคู่
จับคู่แต่ละชื่อกับสิ่งที่มันบอกคุณ
แตะรายการทางซ้าย แล้วแตะคู่ของมัน
- len(enc.encode(text))การประมาณในเครื่องของคุณเกี่ยวกับขนาดอินพุต
- usage.prompt_tokensขนาดอินพุตตามที่ API นับ
- usage.completion_tokensขนาดของคำตอบ คิดราคาด้านเอาต์พุต
- max_tokensขีดจำกัดความยาวคำตอบที่คุณกันไว้ในการตรวจสอบหน้าต่าง
การนับนั้นถูก ออฟไลน์ และใช้เวลาไม่กี่วินาที ทำก่อนการเรียกที่ต้องเสียเงิน



