Bắt đầuHướng dẫn
Chuyển từ OpenRouter sang CheapTokens: base_url, key, model id
Đổi base_url, API key và model id trong OpenAI SDK (Python và JavaScript), gửi request đầu tiên và kiểm tra xem đã thành công chưa.

Trên trang này
Ứng dụng của bạn đã gọi OpenRouter qua OpenAI SDK, và bạn muốn nó gọi CheapTokens thay thế. Bạn đổi ba giá trị — base_url, API key và id model — và xoá hai header tuỳ chọn. Phần còn lại của code giữ nguyên.
Dưới đây là các dòng chính xác cho Python, JavaScript và curl, một cách nhanh để xác nhận việc chuyển đổi đã thành công, và bảng mô hình nào phù hợp với việc gì. Nếu bạn chưa từng gửi request tới CheapTokens, hướng dẫn gửi API request đầu tiên đề cập tài khoản và key; tài liệu có đầy đủ tham chiếu.
Điều gì thực sự thay đổi#
Quickstart của OpenRouter (kiểm tra ngày 27 tháng 10 năm 2026) cấu hình OpenAI client với base URL https:/ và đặt tên mô hình dạng provider/. CheapTokens nói cùng định dạng OpenAI Chat Completions tại https:/. Vì vậy class client, chat. và cách bạn đọc câu trả lời không thay đổi.

Đó là một lần hoán đổi mỗi dòng:
- base URL —
https:/thay cho địa chỉ OpenRouter;/ api. cheaptokens. dev/ v1 - API key — key từ tài khoản CheapTokens của bạn, đọc từ biến môi trường;
- model id — id đầy đủ của CheapTokens, ví dụ
deepseek-. Lấy id từ tài liệu CheapTokens: các nhà cung cấp khác nhau đặt tên khác nhau cho cùng một mô hình, và id rút gọn từ nhãn giá không được chấp nhận.ai/ DeepSeek- V4- Flash- 0731
Và một lần xoá. Các header HTTP-Referer và X- của OpenRouter là tuỳ chọn và chỉ cấp dữ liệu cho bảng xếp hạng của OpenRouter. Xoá chúng khỏi default_headers / defaultHeaders; ở đây bạn không cần chúng.
Code sau khi chuyển đổi#
Cùng một request, ba runtime. Chọn cái mà ứng dụng của bạn dùng.
Code của bạn sau khi chuyển đổi
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}'Một điều nữa trước khi chạy. Nếu request của bạn mang các trường chỉ dành cho OpenRouter — danh sách routing hoặc fallback, tuỳ chọn nhà cung cấp, id mô hình ~alias — thì chúng thuộc về OpenRouter. Giữ request chỉ với các trường Chat Completions tiêu chuẩn: model, messages, temperature, max_tokens, stream.
Kiểm tra xem đã thành công chưa#
Có câu trả lời chưa đủ để chứng minh. In ba thứ bên cạnh nó: mô hình nào đã trả lời, vì sao nó dừng, và nó tính bao nhiêu token.
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
finish_reason của stop nghĩa là mô hình đã tự kết thúc. length nghĩa là max_tokens đã cắt câu trả lời. usage hiển thị token đầu vào và đầu ra riêng biệt, và đó là hai con số tạo nên hoá đơn của bạn — cũng chính là hai con số bạn đang theo dõi trên OpenRouter.
Tự mình thử xemThử xem: finish_reason nói gì nếu bạn đặt max_tokens bằng 1?Hiện đáp án
Nó nói length — câu trả lời bị cắt bởi max_tokens. Một bài kiểm tra tốt để biết code của bạn xử lý câu trả lời bị cắt cụt.
Mô hình nào thay thế cái gì#
Chọn mô hình theo công việc, không theo tên bạn đã dùng trên OpenRouter. Các số liệu dưới đây lấy từ bảng giá CheapTokens kiểm tra ngày 27 tháng 10 năm 2026; một số dư bao trùm cả ba mô hình và giá không thay đổi theo thời điểm trong ngày.
Cuộn bảng sang phải →
| Mô hình | id model |
Ngữ cảnh | Câu trả lời tối đa |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32.768 token |
| GLM-5.3-Flash | zai- |
390K | 8.192 token |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8.192 token |
Không chắc dòng nào là của bạn? Bắt đầu từ việc ứng dụng làm gì:
Chọn trường hợp của bạn
Ứng dụng của bạn chủ yếu làm gì?
Chọn một tùy chọn để xem đáp án
Request ngắn, thường xuyên — phân loại, trích xuất, trả lời hỗ trợ
Thử zai-: ngữ cảnh 390K, câu trả lời tối đa 8.192 token, và tổng cộng rẻ hơn OpenRouter khi tính cả đầu vào lẫn đầu ra.
Câu trả lời dài, code, vòng lặp agent
Thử deepseek-: câu trả lời tối đa 32.768 token, ngữ cảnh 380K, một mức giá bất kể giờ nào trong ngày.
Khối lượng công việc ổn định mà bạn đang trả mức giá OpenRouter cao
Thử MiniMaxAI/: ngữ cảnh 180K, câu trả lời tối đa 8.192 token, và tổng cộng rẻ hơn OpenRouter.
Cùng lưu lượng đó tốn bao nhiêu#
Giả sử bot của bạn gửi 1.000 request, mỗi request khoảng 500 token đầu vào và 300 token đầu ra. Đó là giả định — hãy thay bằng số của bạn từ usage. Bảng dưới đây là trực tiếp: giá của chúng tôi và cột OpenRouter lấy từ bảng giá hiện tại, tính cả đầu vào lẫn đầu ra.
| Mô hình | Đầu vào $/1M | Đầu ra $/1M | Mỗi yêu cầu | 1.000 yêu cầu | OpenRouter, 1.000 yêu cầu |
|---|---|---|---|---|---|
| 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 token đầu vào và 300 token đầu ra mỗi yêu cầu. Giá trên 1 triệu token là giá hiện hành và thay đổi cùng với biểu phí của chúng tôi; cột OpenRouter hiển thị giá tham chiếu cho cùng khối lượng công việc.
Với DeepSeek-V4-Flash, 1.000 request đó tốn $0.0375. Giá đầy đủ ở trang giá; ý tưởng về những gì bạn bị tính phí nằm trong token đầu vào vs đầu ra.
Nếu không hoạt động#
Sau khi chuyển đổi, ba lỗi bao trùm phần lớn vấn đề. Khớp thông báo với nguyên nhân:
Ghép cặp
Khớp từng triệu chứng với nguyên nhân
Nhấn vào một mục bên trái, rồi đến cặp của nó
- 401 UnauthorizedKey bị thiếu, gõ sai, hoặc vẫn là key OpenRouter
- 404 Not FoundĐường dẫn base URL sai hoặc model id không phải id đầy đủ của CheapTokens
- Câu trả lời bị cắt giữa câumax_tokens thấp hơn mức câu trả lời cần; finish_reason nói length
Bài viết khắc phục sự cố 401 và 404 đi qua từng lỗi với thông báo chính xác, và base_url là gì giải thích vì sao một dấu gạch chéo sai làm hỏng đường dẫn.
Trước khi phát hành#
Danh sách kiểm tra
Danh sách kiểm tra chuyển đổi



