กลับไปที่บล็อก

เริ่มต้นใช้งานคู่มือ

สลับจาก OpenRouter เป็น CheapTokens: base_url, คีย์, model id

เปลี่ยน base_url, API key และ model id ใน OpenAI SDK (Python และ JavaScript) ส่งคำขอแรกและตรวจสอบว่าทำงานแล้ว

โดย CheapTokens Teamเผยแพร่เมื่อ ใช้เวลาอ่าน 4 นาที

หน้าปก: การสลับแอป OpenAI-SDK จาก OpenRouter เป็น CheapTokens โดยเปลี่ยน base_url, คีย์ และ model id
ในหน้านี้
  1. สิ่งที่เปลี่ยนจริงๆ
  2. โค้ดหลังการสลับ
  3. ตรวจสอบว่าทำงานแล้ว
  4. โมเดลไหนแทนอะไร
  5. ทราฟฟิกเดียวกันมีค่าใช้จ่ายเท่าไร
  6. หากไม่ทำงาน
  7. ก่อนเปิดตัว

แอปของคุณเรียก OpenRouter ผ่าน OpenAI SDK อยู่แล้ว และคุณต้องการให้มันเรียก CheapTokens แทน คุณเปลี่ยนสามค่า — base_url, API key และ id ของ model — และลบ header ที่ไม่บังคับสองตัว ส่วนโค้ดที่เหลือยังคงเหมือนเดิม

ด้านล่างคือบรรทัดที่แน่นอนสำหรับ Python, JavaScript และ curl วิธีเร็วๆ ในการยืนยันว่าการสลับทำงานแล้ว และตารางว่าโมเดลไหนเหมาะกับงานไหน หากคุณยังไม่เคยส่งคำขอไปยัง CheapTokens คู่มือคำขอ API แรก ครอบคลุมบัญชีและคีย์ ส่วน เอกสาร มีข้อมูลอ้างอิงฉบับเต็ม

สิ่งที่เปลี่ยนจริงๆ#

quickstart ของ OpenRouter (ตรวจสอบเมื่อ 27 ตุลาคม 2026) กำหนดค่าไคลเอนต์ OpenAI ด้วย base URL https://openrouter.ai/api/v1 และตั้งชื่อโมเดลเป็น provider/model-name CheapTokens พูดรูปแบบ OpenAI Chat Completions เดียวกันที่ https://api.cheaptokens.dev/v1 ดังนั้นคลาสไคลเอนต์ chat.completions.create และวิธีที่คุณอ่านคำตอบจึงไม่เปลี่ยน

ก่อนและหลัง: สามค่าที่เปลี่ยนเมื่อสลับจาก OpenRouter เป็น CheapTokens
สามค่าที่ต้องสลับ คีย์แสดงเป็นตัวแปรสภาพแวดล้อม ไม่เคยอยู่ในโค้ด

นั่นคือการสลับหนึ่งครั้งต่อบรรทัด:

  • base URL — https://api.cheaptokens.dev/v1 แทนที่อยู่ OpenRouter;
  • API key — คีย์จากบัญชี CheapTokens ของคุณ อ่านจากตัวแปรสภาพแวดล้อม;
  • model id — id เต็มของ CheapTokens เช่น deepseek-ai/DeepSeek-V4-Flash-0731 ใช้ id จากเอกสาร CheapTokens: ผู้ให้บริการแต่ละรายตั้งชื่อโมเดลเดียวกันต่างกัน และ id สั้นๆ จากป้ายราคาไม่ได้รับการยอมรับ

และการลบหนึ่งอย่าง header HTTP-Referer และ X-OpenRouter-Title ของ OpenRouter เป็นทางเลือกและป้อนเฉพาะกระดานผู้นำของ OpenRouter ลบออกจาก default_headers / defaultHeaders; คุณไม่จำเป็นต้องใช้ที่นี่

โค้ดหลังการสลับ#

คำขอเดียวกัน สามรันไทม์ เลือกอันที่แอปของคุณใช้

โค้ดของคุณหลังการสลับ

Python

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

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

bash
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

ตรวจสอบว่าทำงานแล้ว#

การตอบกลับไม่ใช่หลักฐานที่เพียงพอ พิมพ์สามสิ่งถัดจากนั้น: โมเดลใดตอบ ทำไมจึงหยุด และคิดค่าใช้จ่ายเป็นโทเค็นเท่าไร

python
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
สภาพแวดล้อมและสคริปต์ตรวจสอบรันในเทอร์มินัล
ตั้งค่าคีย์ครั้งเดียว รันการตรวจสอบ อ่าน model, finish_reason และ usage

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-ai/DeepSeek-V4-Flash-0731 380K 32,768 โทเค็น
GLM-5.3-Flash zai-org/GLM-5.3-Flash 390K 8,192 โทเค็น
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7 180K 8,192 โทเค็น

ไม่แน่ใจว่าแถวไหนคือของคุณ? เริ่มจากสิ่งที่แอปทำ:

เลือกกรณีของคุณ

แอปของคุณทำอะไรมากที่สุด?

คำขอสั้นๆ บ่อยครั้ง — การจำแนกประเภท การสกัดข้อมูล การตอบกลับฝ่ายสนับสนุน

ลอง zai-org/GLM-5.3-Flash: context 390K คำตอบสูงสุด 8,192 โทเค็น และถูกกว่า OpenRouter โดยรวมเมื่อนับอินพุตและเอาต์พุตรวมกัน

คำตอบยาว โค้ด ลูปเอเจนต์

ลอง deepseek-ai/DeepSeek-V4-Flash-0731: คำตอบสูงสุด 32,768 โทเค็น context 380K ราคาเดียวทุกชั่วโมงของวัน

ภาระงานsteadyที่คุณจ่ายอัตรา OpenRouter สูงอยู่ในปัจจุบัน

ลอง MiniMaxAI/MiniMax-M2.7: context 180K คำตอบสูงสุด 8,192 โทเค็น และโดยรวมแล้วถูกกว่า OpenRouter

ทราฟฟิกเดียวกันมีค่าใช้จ่ายเท่าไร#

สมมติบอทของคุณส่ง 1,000 คำขอ แต่ละคำขอมีอินพุตประมาณ 500 โทเค็นและเอาต์พุต 300 โทเค็น นั่นคือสมมติฐาน — เปลี่ยนเป็นตัวเลขของคุณเองจาก usage ตารางด้านล่างเป็นแบบสด: ราคาของเราและคอลัมน์ OpenRouter มาจากรายการราคาปัจจุบัน นับอินพุตและเอาต์พุตรวมกัน

โมเดล ต่อคำขอ 1,000 คำขอ OpenRouter, 1,000 คำขอ
GLM-5.3-Flash $0.000022 $0.022 $0.0434
DeepSeek-V4-Flash $0.000038 $0.0375 $0.0708
MiniMax-M2.7 $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 ผิดหนึ่งตัวจึงทำให้เส้นทางเสีย

ก่อนเปิดตัว#

เช็กลิสต์

รายการตรวจสอบการสลับ