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

ในหน้านี้
คุณสามารถรู้ค่าใช้จ่ายของทัวร์นาเมนต์โมเดลได้ก่อนคำขอแรก: นับโทเค็นที่หนึ่งที่นั่งส่งตลอดทั้งเกม คูณด้วยจำนวนที่นั่งและจำนวนเกม แล้วใส่เพดานแบบแข็งในโค้ด สิ่งที่คนมักมองข้ามคือประวัติ ทุกเทิร์นจะส่งทุกอย่างที่พูดไปแล้วซ้ำใหม่ ดังนั้นอินพุตจึงโตเร็วกว่าจำนวนเทิร์นมาก
พาดหัวข่าว $20,000 บอกอะไรคุณได้และบอกอะไรไม่ได้#
เมื่อวันที่ 5 พฤศจิกายน 2026 พอดแคสเตอร์ Dwarkesh Patel ได้เผยแพร่ Clocktower Bench ซึ่งเป็นเบนช์มาร์กที่โมเดลเล่นเกมสังคมนิยมการไขปริศนา Blood on the Clocktower แข่งกัน เขากล่าวว่าเขาใช้เครดิต API ประมาณ $20,000 ในการสร้างฮาร์เนส และส่วนใหญ่หมดไปกับการวนปรับการออกแบบสภาพแวดล้อม มากกว่าโทเค็นที่เขาวางแผนไว้
README ของโปรเจกต์ (ตรวจสอบเมื่อ 8 พฤศจิกายน 2026) อธิบายการตั้งค่า: 11 โมเดล, 386 เกมสำหรับการจัดอันดับหลัก, โมเดลหนึ่งเล่นทุกที่นั่งฝ่ายดีและอีกโมเดลหนึ่งเล่นทุกที่นั่งฝ่ายร้าย, ผู้เล่น 10–12 คน, เกมที่ใช้เวลาหลายชั่วโมง แต่ละดีลจะเล่นซ้ำโดยสลับฝ่าย เพื่อไม่ให้โมเดลใดได้บทบาทที่ง่ายกว่า นอกจากนี้ยังมี dry run ฟรี (--model random), บันทึกค่าใช้จ่ายลง games/, และมีเพดาน --budget ที่ค่าเริ่มต้นคือ $1,000
สิ่งที่มันไม่ได้ให้คือจำนวนโทเค็นต่อเกม ดังนั้นจึงไม่มีอะไรให้คัดลอก คุณต้องสร้างการประมาณการเอง นั่นคือสิ่งที่ส่วนที่เหลือของบทความนี้ทำ โดยมีสมมติฐานที่ระบุไว้ซึ่งคุณสามารถเปลี่ยนเป็นของคุณเองได้
หนึ่งที่นั่ง: ทำไมอินพุตจึงโตขึ้นเรื่อยๆ#
สมมติว่าคุณเล่นเกมเล็กกว่า: 6 ที่นั่ง, ทุกที่นั่งเป็นโมเดลที่มีบทสนทนาของตัวเอง, 20 เทิร์นต่อที่นั่ง สมมติว่า system prompt 2,000 โทเค็น (กฎและบทบาทของที่นั่ง), บทสนทนาโต๊ะใหม่ 600 โทเค็นที่มาถึงก่อนแต่ละเทิร์น, และคำตอบ 300 โทเค็น API ไม่มีความจำ ดังนั้นแต่ละคำขอจึงพาบทสนทนาทั้งหมดไปอีกครั้ง (ทำไมแชทยาวจึงมีค่าใช้จ่ายสูงขึ้น)
เทิร์น 1 ส่ง 2,000 + 600 = 2,600 โทเค็น เทิร์น 20 ส่ง 2,000 + 600 × 20 + 300 × 19 = 19,700 ลองคำนวณตัวเลขสุดท้ายด้วยตัวเอง:
ทายตัวเลข
ที่นั่งหนึ่งส่งอินพุตกี่โทเค็นในเทิร์นที่ 20 ของมัน?
คำตอบของคุณ
040,000
แสดงคำตอบ
คำตอบ: 19,700
19,700: system prompt 2,000 โทเค็น, บทสนทนาใหม่ 20 × 600, และคำตอบก่อนหน้า 19 ครั้งๆ ละ 300 ทุกคำตอบเก่าและทุกข้อความเก่าถูกส่งกลับไปทั้งหมด
รวมทั้ง 20 เทิร์นสำหรับหนึ่งที่นั่ง: 2,000 × 20 + 600 × 210 + 300 × 190 = 40,000 + 126,000 + 57,000 = 223,000 โทเค็นอินพุต เอาต์พุตมีเพียง 20 × 300 = 6,000 ถ้าคุณนับแต่ละข้อความเพียงครั้งเดียว คุณจะได้ 2,000 + 20 × 600 = 14,000 และคลาดเคลื่อนไปถึงสิบหกเท่า

ฝั่งเอาต์พุตแทบไม่ขยับ อินพุตคือที่ที่เงินไป และนั่นคือฝั่งที่แย่ลงเมื่อเกมยาวขึ้น
จากหนึ่งที่นั่งสู่ทั้งทัวร์นาเมนต์#
ตอนนี้ขยายด้วยตัวคูณสามตัว
- ที่นั่ง 6 ที่นั่ง × 223,000 = 1,338,000 โทเค็นอินพุต และ 6 × 6,000 = 36,000 โทเค็นเอาต์พุตต่อเกม
- การสลับฝ่าย ใช้ 3 โมเดลใน round robin: 3 คู่ เล่น 10 ดีลต่อคู่ แต่ละดีลเล่นสองครั้งโดยสลับฝ่าย: 3 × 10 × 2 = 60 เกม
- เกม 60 × 1,338,000 = 80,280,000 อินพุต และ 60 × 36,000 = 2,160,000 โทเค็นเอาต์พุตสำหรับทัวร์นาเมนต์

หนึ่งเกมบน DeepSeek-V4-Flash คิดเป็น $0.0237 ตารางด้านล่างคิดราคาทัวร์นาเมนต์ 60 เกมทั้งหมดราวกับว่าโมเดลนั้นเล่นทุกที่นั่ง เพื่อให้คุณเปรียบเทียบสามโมเดลที่ CheapTokens เสนอสำหรับงานบทสนทนายาวแบบนี้ โดยรวมแล้ว เมื่อนับอินพุตและเอาต์พุตรวมกัน แต่ละตัวถูกกว่าค่าอ้างอิง OpenRouter ในคอลัมน์สุดท้าย
| โมเดล | Input $/1M | Output $/1M | ต่อคำขอ | 60 คำขอ | OpenRouter, 60 คำขอ |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0282 | $1.69 | $2.87 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0237 | $1.42 | $5.92 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0723 | $4.34 | $52.06 |
1,338,000 โทเค็นอินพุตและ 36,000 โทเค็นเอาต์พุตต่อคำขอ ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน
ในแง่งบประมาณ นี่คือกลเม็ดทั้งหมด: คุณไม่ต้องมีรายการ $20,000 เพื่อรู้ว่าสามโมเดลใดเล่นเกมเจรจาได้ดีกว่า คุณต้องมีการประมาณการข้างต้น แล้วจึงทำไพล็อตจริงเพื่อตรวจสอบ
เช็กด่วน
เกม 6 ที่นั่งของคุณเพิ่มจาก 20 เป็น 40 เทิร์นต่อที่นั่ง เกิดอะไรขึ้นกับค่าใช้จ่ายอินพุต?
แสดงคำตอบ
คำตอบ: โตประมาณ 3.6 เท่า
สำหรับ 40 เทิร์น สูตรเดิมให้ 2,000 × 40 + 600 × 820 + 300 × 780 = 806,000 โทเค็นอินพุต เทียบกับ 223,000 สำหรับ 20 เทิร์น พจน์ประวัติโตตามกำลังสองของจำนวนเทิร์น
มีการตรวจสอบสองอย่างก่อนที่คุณจะเชื่อตัวเลขใดๆ เช่นนี้ อย่างแรก คำขอที่ใหญ่ที่สุดต้องพอดีกับหน้าต่างของโมเดล ที่ 20 เทิร์น คำขอที่ใหญ่ที่สุดคือ 19,700 โทเค็น ไม่มีปัญหา เกมหลายชั่วโมงที่มี 200 เทิร์นต่อที่นั่งจะไปถึง 2,000 + 600 × 200 + 300 × 199 = 181,700 ประมาณ 182K ดังนั้นอ่านขนาดคอนเท็กซ์บนหน้าโมเดลก่อนออกแบบเกม DeepSeek-V4-Flash มีหน้าต่าง 380K และเอาต์พุตสูงสุด 32,768 โทเค็น ดูหน้าโมเดล อย่างที่สอง หากโมเดลสร้าง reasoning ยาว เอาต์พุต 300 โทเค็นของคุณจะมากขึ้น (โทเค็นการคิดในงานจำนวนมาก)
ใส่เพดานแบบแข็งในโค้ด#
แฟล็ก --budget ใน README เป็นแนวคิดที่ถูกต้อง และใช้เวลาเพียงสิบคัดลอกลงในฮาร์เนสของคุณเอง สคริปต์ด้านล่างประมาณการก่อนรัน ปฏิเสธที่จะส่งคำขอที่อาจทำให้ยอดรวมเกินเพดาน และบันทึกทุกการเรียกไปยังไฟล์ ledger ราคาในนั้นเป็นตัวอย่าง: แทนที่ด้วยราคาปัจจุบันจากตารางราคา
import json, os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
MODEL = 'deepseek-ai/DeepSeek-V4-Flash-0731'
PRICE_IN, PRICE_OUT = 0.10, 0.40 # per 1M tokens: example, substitute current
CAP_USD = 5.00
spent = 0.0
def cost(tin, tout):
return (tin * PRICE_IN + tout * PRICE_OUT) / 1_000_000
def estimate(seats, turns, system=2000, new_in=600, out=300):
tin = sum(system + new_in * k + out * (k - 1) for k in range(1, turns + 1))
return seats * tin, seats * turns * out
def ask(seat, history, max_out=400):
global spent
rough_in = sum(len(m['content']) for m in history) // 3 # pessimistic
if spent + cost(rough_in, max_out) > CAP_USD:
raise SystemExit(f'cap reached: ${spent:.4f} spent')
r = client.chat.completions.create(
model=MODEL, messages=history, max_tokens=max_out)
u = r.usage
spent += cost(u.prompt_tokens, u.completion_tokens)
with open('ledger.jsonl', 'a') as f:
f.write(json.dumps({'seat': seat, 'in': u.prompt_tokens,
'out': u.completion_tokens,
'spent': round(spent, 6)}) + '\n')
return r.choices[0].message.content
print(estimate(6, 20)) # (1338000, 36000) per gameestimate(6, 20) พิมพ์ (1338000, 36000) ซึ่งเป็นตัวเลขต่อเกมเดียวกันกับข้างต้น ดังนั้นโค้ดและการคำนวณตรวจสอบซึ่งกันและกัน usage. และ usage. มาจากการตอบกลับและเป็นสิ่งที่คุณถูกเรียกเก็บเงิน การตรวจสอบล่วงหน้าใช้การนับอักขระแบบ pessimistic เพราะจำนวนจริงจะรู้ได้หลังการเรียกเท่านั้น เพิ่มเติมเกี่ยวกับ ledger ต่อโปรเจกต์ในการติดตามค่าใช้จ่ายโทเค็นของเอเจนต์ใน Python
ลำดับที่ปลอดภัยสำหรับการรันครั้งแรก#
ลำดับของรีโปเองเป็นแบบอย่างที่ดี: ฟรีก่อน, ถูกเป็นอันดับสอง, แพงเป็นอันดับสุดท้าย วางขั้นตอนเหล่านี้ตามลำดับ:
เรียงลำดับ
วางขั้นตอนของการรันครั้งแรกที่ปลอดภัยตามลำดับ
ลากรายการหรือใช้ลูกศร
- Dry run ด้วยผู้เล่นสุ่ม ไม่มีการเรียก API
- รัน
estimate()และเปรียบเทียบกับเพดานของคุณ - เล่นหนึ่งเกมจริงและอ่าน ledger
- แก้ไขสมมติฐานด้วยจำนวนโทเค็นจริง
- เปิดทัวร์นาเมนต์เต็มรูปแบบโดยเปิดเพดาน
README กล่าวว่าเกมสาธิตบนโมเดลราคาถูกมีค่าใช้จ่ายประมาณ $2–5 นั่นเป็นคำกล่าวของผู้เขียนและไม่ได้ระบุชื่อโมเดล ดังนั้นให้ถือเป็นช่วงที่สมเหตุสมผล ไม่ใช่ใบเสนอราคาสำหรับการตั้งค่าของคุณ เกมไพล็อตของคุณเองให้ตัวเลขที่สำคัญ: หาก ledger ของมันแสดง 1,500,000 โทเค็นอินพุตในขณะที่คุณสมมติไว้ 1,338,000 คุณได้เรียนรู้อะไรบางอย่างด้วยค่าใช้จ่ายไม่กี่เซนต์แทนที่จะเป็นตอนเกมที่ 40
สำหรับการทดลองที่ยาวขึ้น คันโยกตามปกติอยู่ในการตัดทอนประวัติแชท: ตัดสิ่งที่แต่ละที่นั่งต้องอ่านซ้ำ และพจน์กำลังสองจะหดตัวตามไปด้วย เมื่อคุณพร้อมที่จะรัน เอกสาร มี endpoint และ model id



