เริ่มต้นใช้งานคู่มือ
สลับจาก OpenRouter เป็น CheapTokens: base_url, คีย์, model id
เปลี่ยน base_url, API key และ model id ใน OpenAI SDK (Python และ JavaScript) ส่งคำขอแรกและตรวจสอบว่าทำงานแล้ว

ในหน้านี้
แอปของคุณเรียก OpenRouter ผ่าน OpenAI SDK อยู่แล้ว และคุณต้องการให้มันเรียก CheapTokens แทน คุณเปลี่ยนสามค่า — base_url, API key และ id ของ model — และลบ header ที่ไม่บังคับสองตัว ส่วนโค้ดที่เหลือยังคงเหมือนเดิม
ด้านล่างคือบรรทัดที่แน่นอนสำหรับ Python, JavaScript และ curl วิธีเร็วๆ ในการยืนยันว่าการสลับทำงานแล้ว และตารางว่าโมเดลไหนเหมาะกับงานไหน หากคุณยังไม่เคยส่งคำขอไปยัง CheapTokens คู่มือคำขอ API แรก ครอบคลุมบัญชีและคีย์ ส่วน เอกสาร มีข้อมูลอ้างอิงฉบับเต็ม
สิ่งที่เปลี่ยนจริงๆ#
quickstart ของ OpenRouter (ตรวจสอบเมื่อ 27 ตุลาคม 2026) กำหนดค่าไคลเอนต์ OpenAI ด้วย base URL https:/ และตั้งชื่อโมเดลเป็น provider/ CheapTokens พูดรูปแบบ OpenAI Chat Completions เดียวกันที่ https:/ ดังนั้นคลาสไคลเอนต์ chat. และวิธีที่คุณอ่านคำตอบจึงไม่เปลี่ยน

นั่นคือการสลับหนึ่งครั้งต่อบรรทัด:
- base URL —
https:/แทนที่อยู่ OpenRouter;/ api. cheaptokens. dev/ v1 - API key — คีย์จากบัญชี CheapTokens ของคุณ อ่านจากตัวแปรสภาพแวดล้อม;
- model id — id เต็มของ CheapTokens เช่น
deepseek-ใช้ id จากเอกสาร CheapTokens: ผู้ให้บริการแต่ละรายตั้งชื่อโมเดลเดียวกันต่างกัน และ id สั้นๆ จากป้ายราคาไม่ได้รับการยอมรับai/ DeepSeek- V4- Flash- 0731
และการลบหนึ่งอย่าง header HTTP-Referer และ X- ของ OpenRouter เป็นทางเลือกและป้อนเฉพาะกระดานผู้นำของ OpenRouter ลบออกจาก default_headers / defaultHeaders; คุณไม่จำเป็นต้องใช้ที่นี่
โค้ดหลังการสลับ#
คำขอเดียวกัน สามรันไทม์ เลือกอันที่แอปของคุณใช้
โค้ดของคุณหลังการสลับ
Python
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Reply with one word: ready'}],
max_tokens=20,
)
print(resp.choices[0].message.content)JavaScript
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.cheaptokens.dev/v1',
apiKey: process.env.CHEAPTOKENS_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-ai/DeepSeek-V4-Flash-0731',
messages: [{ role: 'user', content: 'Reply with one word: ready' }],
max_tokens: 20,
});
console.log(resp.choices[0].message.content);curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Reply with one word: ready"}], "max_tokens": 20}'อีกอย่างก่อนที่คุณจะรัน หากคำขอของคุณมีฟิลด์เฉพาะ OpenRouter — รายการ routing หรือ fallback, การตั้งค่าผู้ให้บริการ, id โมเดล ~alias — สิ่งเหล่านั้นเป็นของ OpenRouter ให้คำขอใช้ฟิลด์มาตรฐานของ Chat Completions: model, messages, temperature, max_tokens, stream
ตรวจสอบว่าทำงานแล้ว#
การตอบกลับไม่ใช่หลักฐานที่เพียงพอ พิมพ์สามสิ่งถัดจากนั้น: โมเดลใดตอบ ทำไมจึงหยุด และคิดค่าใช้จ่ายเป็นโทเค็นเท่าไร
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
finish_reason ของ stop หมายความว่าโมเดลจบด้วยตัวเอง length หมายความว่า max_tokens ตัดคำตอบ usage แสดงโทเค็นอินพุตและเอาต์พุตแยกกัน และนั่นคือตัวเลขสองตัวที่ค่าใช้จ่ายของคุณประกอบขึ้น — สองตัวเดียวกับที่คุณติดตามบน OpenRouter
ลองด้วยตัวเองลองดู: finish_reason บอกอะไรหากคุณตั้ง max_tokens เป็น 1?แสดงคำตอบ
มันบอก length — คำตอบถูกตัดโดย max_tokens เป็นการทดสอบที่ดีว่าโค้ดของคุณจัดการกับการตอบกลับที่ถูกตัดได้
โมเดลไหนแทนอะไร#
เลือกโมเดลตามงาน ไม่ใช่ตามชื่อที่คุณใช้บน OpenRouter ข้อเท็จจริงด้านล่างมาจากรายการราคา CheapTokens ที่ตรวจสอบเมื่อ 27 ตุลาคม 2026; ยอดคงเหลือหนึ่งยอดครอบคลุมทั้งสามโมเดล และราคาไม่เปลี่ยนตามเวลาของวัน
เลื่อนตารางไปทางขวา →
| โมเดล | id model |
Context | คำตอบสูงสุด |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32,768 โทเค็น |
| GLM-5.3-Flash | zai- |
390K | 8,192 โทเค็น |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8,192 โทเค็น |
ไม่แน่ใจว่าแถวไหนคือของคุณ? เริ่มจากสิ่งที่แอปทำ:
เลือกกรณีของคุณ
แอปของคุณทำอะไรมากที่สุด?
เลือกตัวเลือกเพื่อดูคำตอบ
คำขอสั้นๆ บ่อยครั้ง — การจำแนกประเภท การสกัดข้อมูล การตอบกลับฝ่ายสนับสนุน
ลอง zai-: context 390K คำตอบสูงสุด 8,192 โทเค็น และถูกกว่า OpenRouter โดยรวมเมื่อนับอินพุตและเอาต์พุตรวมกัน
คำตอบยาว โค้ด ลูปเอเจนต์
ลอง deepseek-: คำตอบสูงสุด 32,768 โทเค็น context 380K ราคาเดียวทุกชั่วโมงของวัน
ภาระงานsteadyที่คุณจ่ายอัตรา OpenRouter สูงอยู่ในปัจจุบัน
ลอง MiniMaxAI/: context 180K คำตอบสูงสุด 8,192 โทเค็น และโดยรวมแล้วถูกกว่า OpenRouter
ทราฟฟิกเดียวกันมีค่าใช้จ่ายเท่าไร#
สมมติบอทของคุณส่ง 1,000 คำขอ แต่ละคำขอมีอินพุตประมาณ 500 โทเค็นและเอาต์พุต 300 โทเค็น นั่นคือสมมติฐาน — เปลี่ยนเป็นตัวเลขของคุณเองจาก usage ตารางด้านล่างเป็นแบบสด: ราคาของเราและคอลัมน์ OpenRouter มาจากรายการราคาปัจจุบัน นับอินพุตและเอาต์พุตรวมกัน
| โมเดล | Input $/1M | Output $/1M | ต่อคำขอ | 1,000 คำขอ | OpenRouter, 1,000 คำขอ |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000022 | $0.022 | $0.0434 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000038 | $0.0375 | $0.0708 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.07 | $0.51 |
500 โทเค็นอินพุตและ 300 โทเค็นเอาต์พุตต่อคำขอ ราคาต่อ 1M โทเค็นเป็นราคาปัจจุบันและเปลี่ยนแปลงไปพร้อมกับอัตราค่าบริการของเรา คอลัมน์ OpenRouter แสดงราคาอ้างอิงสำหรับปริมาณงานเดียวกัน
บน DeepSeek-V4-Flash 1,000 คำขอเหล่านั้นรวมเป็น $0.0375 ราคาเต็มอยู่ในหน้าราคา; แนวคิดเกี่ยวกับสิ่งที่คุณถูกเรียกเก็บเงินอยู่ในอินพุตกับโทเค็นเอาต์พุต
หากไม่ทำงาน#
หลังการสลับ ข้อผิดพลาดสามอย่างครอบคลุมปัญหาส่วนใหญ่ จับคู่ข้อความกับสาเหตุ:
จับคู่
จับคู่อาการแต่ละอย่างกับสาเหตุ
แตะรายการทางซ้าย แล้วแตะคู่ของมัน
- 401 Unauthorizedคีย์หาย พิมพ์ผิด หรือยังเป็นของ OpenRouter
- 404 Not Foundเส้นทาง base URL ผิด หรือ id โมเดลไม่ใช่ id เต็มของ CheapTokens
- คำตอบถูกตัดกลางประโยคmax_tokens ต่ำกว่าที่คำตอบต้องการ; finish_reason บอก length
บทความแก้ปัญหา 401 และ 404 อธิบายแต่ละอย่างพร้อมข้อความที่แน่นอน และbase_url คืออะไร อธิบายว่าทำไม slash ผิดหนึ่งตัวจึงทำให้เส้นทางเสีย
ก่อนเปิดตัว#
เช็กลิสต์
รายการตรวจสอบการสลับ



