Trước khi chuyển sang endpoint hợp nhất: bốn API key rải rác khắp trình quản lý mật khẩu của bạn. Bốn bảng điều khiển thanh toán, mỗi cái có mức nạp tối thiểu riêng và bảng điều khiển rate limit khó hiểu riêng. Một model mới ra —bạn muốn thử nó, nên bạn mất 20 phút đào bới thông tin đăng nhập, 10 phút lướt tài liệu SDK đã thay đổi từ tháng trước, và 5 phút nhìn chằm chằm vào base_url không chịu resolve. Rồi Claude báo vùng của bạn không được hỗ trợ. Cuối cùng bạn nhận được phản hồi, nhưng giờ đã là thứ Ba và bạn chưa viết nổi một dòng feature code.
Sau khi chuyển: một API key. Một endpoint. Đổi "gpt-5" thành "claude-opus-4-5" trong một dòng duy nhất là bạn đã đổi nhà cung cấp —cùng client, cùng định dạng request, cùng cách xử lý lỗi. So sánh năm model trong một loop. Fallback sang Gemini ngay khi OpenAI trả về 429. Không import mới. Không tài khoản mới.
Khác biệt nằm ở một endpoint hợp nhất, 15 dòng code thiết lập và 5 phút để đi từ con số không đến gọi được mọi model lớn. Đây là code chính xác —Python và Node.js, sẵn sàng để dán.
Vì sao một API key?
Nói một câu: quản lý bốn tài khoản nhà cung cấp lãng phí 8–12 giờ-lập trình viên mỗi tháng vào công việc không phải code —KYC, nạp tối thiểu, chu kỳ thanh toán, bảng điều khiển rate limit, cập nhật phiên bản SDK— những thứ biến mất ngay khi bạn gộp về một endpoint duy nhất.
Cho luận điểm đầy đủ với dữ liệu thị trường, so sánh chi phí và phân tích độ tin cậy qua 3.6M lượt truy cập hàng tháng vào nền tảng tổng hợp, đọc vì sao lập trình viên chuyển sang nền tảng tổng hợp.
Hãy nghĩ nó như một bộ chuyển đổi phổ quát cho AI API. Ứng dụng của bạn nói một giao thức —OpenAI Chat Completions— đến một endpoint. Sau endpoint đó, nền tảng dịch request của bạn sang nhà cung cấp bạn nhắm tới bằng tham số model, chuẩn hóa phản hồi và trả về ở định dạng code của bạn đã mong đợi. Từ góc nhìn của ứng dụng, mọi model đều là model OpenAI. Khác biệt giữa các nhà cung cấp —handshake xác thực, lỗi định dạng đặc trưng, frame streaming không nhất quán— được hấp thụ trước khi chạm tới code của bạn.
Đó là bức tranh kỹ thuật. Bức tranh tài chính cũng thuyết phục không kém —đây là sự hợp nhất trông như thế nào trên bảng cân đối kế toán của một đội thực.
So sánh chi phí thực tế
Một đội năm lập trình viên xây sản phẩm SaaS thuần AI. Đây là chi tiêu hàng tháng thực tế của họ —được ghi chép trong một lần di chuyển ba tháng trước.
Trước khi hợp nhất —tài khoản trực tiếp của nhà cung cấp:
OpenAI: nạp tối thiểu $200, dùng thực $180 trên GPT-5.5 cho tác vụ suy luận phức tạp. Anthropic: nạp tối thiểu $200, dùng thực $150 trên Claude Opus cho tạo code. Google: nạp tối thiểu $100, dùng thực $85 trên Gemini cho xử lý đa phương thức. DeepSeek: không tối thiểu, dùng thực $60 cho phân loại văn bản khối lượng. Tổng tiền nạp nằm im giữa các tài khoản: $185. Chi tiêu hàng tháng thực: $475.
Chi phí hành chính thêm 2–3 giờ mỗi lập trình viên mỗi tháng —email xác minh lại KYC rơi vào spam, chuỗi thương lượng rate limit kéo dài cả tuần, ngày chu kỳ thanh toán không bao giờ khớp. Trên năm lập trình viên, đó là 10–15 giờ đội mỗi tháng mất vào quản trị API. Với chi phí lập trình viên toàn tải $75/giờ, chi phí lao động ẩn là $750–1,125/tháng.
Sau khi hợp nhất —một endpoint tổng hợp duy nhất:
Một tài khoản. Một số dư trả trước. Một hóa đơn. Không tiền nạp nằm im. Giá gộp theo khối lượng hạ giá model tiên tiến xuống 15–35% so với bán lẻ —GPT-5.5 ở $12.75/M token thay vì $15, Claude Opus ở $12.75/M thay vì $15.
Định tuyến theo chi phí (Pattern 2 bên dưới) chuyển 60% request “medium” từ giá tầng Opus sang giá tầng Sonnet —tiết kiệm thêm 40–60% trên lưu lượng đủ điều kiện định tuyến. Kết hợp giảm giá theo khối lượng, chi tiêu hàng tháng thực rơi vào $285–340. Rẻ hơn 28–30% so với tài khoản trực tiếp.
Chi phí hành chính giảm còn 15 phút mỗi tháng —nạp một số dư, xem một hóa đơn. Đội tài chính của bạn thấy một khoản mục duy nhất ghi “AI API” thay vì bốn khoản mục với bốn chu kỳ thanh toán, ba phương thức thanh toán và một nhà cung cấp chỉ chấp nhận chuyển khoản.
Tiết kiệm cộng dồn. Mỗi lần ra mắt model mới thêm không tài khoản mới, không khoản nạp mới, không quan hệ thanh toán mới. Khi DeepSeek V4 ra mắt, đội đã chuyển đổi bằng cách đổi một chuỗi model —không quy trình đăng ký, không xác minh mới, không chờ đợi.
Cho giá từng model ở mọi tầng trên tất cả 10 nhà cung cấp, xem phân tích giá model.
Thiết lập trong 5 phút: cuộc gọi đa model đầu tiên của bạn
Cần hướng dẫn từng bước với ảnh chụp màn hình? Hướng dẫn bắt đầu nhanh chính thức bao quát thiết lập tài khoản, tạo API key và request đầu tiên của bạn trong vòng dưới năm phút.
Python —15 dòng code.
from openai import OpenAI
# One client. One base_url. One API key.
client = OpenAI(
base_url="https://api.tokspan.com/v1",
api_key="ts-your-key-here"
)
# GPT-5.5
gpt_response = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Explain quantum computing in one sentence."}]
)
print(f"GPT-5.5: {gpt_response.choices[0].message.content}")
# Claude Opus 4.8 —same client, different model string
claude_response = client.chat.completions.create(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "Explain quantum computing in one sentence."}]
)
print(f"Claude: {claude_response.choices[0].message.content}")
Node.js —cùng pattern.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: "https://api.tokspan.com/v1",
apiKey: "ts-your-key-here"
});
// Switch models by changing one string
const models = ["gpt-5.5", "claude-opus-4-8", "gemini-3.1-pro", "deepseek-v4-pro"];
for (const model of models) {
const response = await client.chat.completions.create({
model,
messages: [{ role: "user", content: "Explain quantum computing in one sentence." }]
});
console.log(`${model}: ${response.choices[0].message.content}`);
}
Vậy là xong. Đổi model nghĩa là đổi chuỗi tham số model —OpenAI Python SDK lo phần còn lại. Không đổi SDK. Không đổi base_url. Không quy trình xác thực mới.
Pattern sản xuất: ngoài phần bắt đầu nhanh
Bắt đầu nhanh phù hợp để khám phá. Sản xuất cần khả năng chống chịu. Đây là ba pattern biến một prototype chạy được thành ứng dụng đáng tin cậy.
Pattern 1: chuỗi fallback model.
Một nhà cung cấp ngừng hoạt động không nên kéo ứng dụng của bạn xuống. Chuỗi fallback này thử model ưa thích của bạn, rồi bản dự phòng, rồi fallback tiết kiệm chi phí —tất cả minh bạch với người dùng.
import logging
from openai import OpenAI
client = OpenAI(
base_url="https://api.tokspan.com/v1",
api_key="ts-your-key-here"
)
FALLBACK_CHAIN = [
"gpt-5.5", # Primary: strongest agent reliability
"gemini-3.1-pro", # First fallback: multimodality and long-context
"deepseek-v4-pro" # Cost-efficient safety net for text-only tasks
]
def chat_with_fallback(messages, model_chain=FALLBACK_CHAIN):
last_error = None
for model in model_chain:
try:
response = client.chat.completions.create(
model=model,
messages=messages,
timeout=30
)
return response.choices[0].message.content
except Exception as e:
last_error = e
logging.warning(f"Model {model} failed: {e}. Trying next.")
continue
raise RuntimeError(
f"All models in chain failed. Last error: {last_error}"
)
Ba dòng logic fallback. Khác biệt giữa “chatbot đang sập” và “người dùng không nhận ra.” Người dùng của bạn không quan tâm model nào phục vụ request. Họ quan tâm rằng nó đến được.
Pattern 2: định tuyến theo chi phí.
Không phải mọi request đều cần model tiên tiến. Bộ phân loại này định tuyến truy vấn đơn giản đến model có khả năng rẻ nhất và chỉ nâng cấp khi cần thiết.
ROUTING_RULES = {
"simple": "deepseek-v4-flash", # $0.14/$0.28 —classification, extraction, simple Q&A
"medium": "claude-sonnet-4-6", # $3/$15 —coding, analysis, moderately complex tasks
"complex": "claude-opus-4-8" # $5/$25 —architectural decisions, debugging, legal analysis
}
def classify_complexity(user_message: str) -> str:
"""Use a cheap model to classify task complexity before routing."""
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{
"role": "system",
"content": "Classify this request as 'simple', 'medium', or 'complex'. Reply with one word."
}, {
"role": "user",
"content": user_message
}],
max_tokens=3
)
return response.choices[0].message.content.strip().lower()
Bộ phân loại tốn $0.000004 mỗi request. Tiết kiệm từ định tuyến đúng: thường là 70–80% hóa đơn API của bạn. Sự bất đối xứng này đáng giá ba dòng thêm.
Pattern 3: streaming hợp nhất.
Streaming cải thiện độ trễ nhận thức từ 3+ giây xuống 0.3 giây. Handler này hoạt động giống hệt bất kể model nào đang kích hoạt.
def stream_response(model: str, messages: list):
stream = client.chat.completions.create(
model=model,
messages=messages,
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
Cùng loop cho GPT-5.5, Claude, Gemini, DeepSeek —không cần logic streaming riêng nhà cung cấp. Endpoint tổng hợp chuẩn hóa định dạng streaming.
Pattern 4: retry với exponential backoff.
Lỗi thoáng qua —429 rate limit, 503 service unavailable, reset kết nối— xảy ra 0.5–2% thời gian trên mọi nhà cung cấp. Bỏ qua chúng nghĩa là ứng dụng của bạn thất bại 1 trong 50 đến 1 trong 200 request. Một wrapper retry ba dòng giảm con số đó xuống gần bằng không.
import time
import random
def chat_with_retry(model, messages, max_retries=3, base_delay=1.0):
last_exception = None
for attempt in range(max_retries + 1):
try:
response = client.chat.completions.create(
model=model,
messages=messages,
timeout=30
)
return response.choices[0].message.content
except Exception as e:
last_exception = e
if attempt == max_retries:
break
# Exponential backoff: 1s -> 2s -> 4s with 0-25% jitter
delay = base_delay * (2 ** attempt) + random.uniform(0, 0.25 * base_delay)
time.sleep(delay)
raise RuntimeError(f"Request failed after {max_retries + 1} attempts: {last_exception}")
Ba chi tiết quan trọng trong sản xuất. Thứ nhất, luôn thêm jitter —không có nó, các client retry đồng bộ hóa thành pattern thundering-herd khiến rate limit tồi tệ hơn. Thứ hai, phân biệt lỗi retry được (429, 5xx) với lỗi không retry được (400, 401, 403) —retry một API key sai sáu lần lãng phí thời gian của tất cả. Thứ ba, đặt ngân sách timeout tổng (ví dụ 60 giây) qua mọi lần retry để một nhà cung cấp suy giảm không giữ pipeline request của bạn làm con tin.
Kết hợp cái này với Pattern 1 (chuỗi fallback) và bạn có phòng thủ theo chiều sâu: retry model ưa thích tối đa 3 lần, rồi fallback sang model tiếp theo trong chuỗi, retry nó tối đa 3 lần, và cứ thế. Trong thực tế, tổ hợp này xử lý 99.7% lỗi thoáng qua mà người dùng không nhận ra.
Bẫy di chuyển thường gặp
Khi bạn chuyển từ API trực tiếp của nhà cung cấp sang endpoint hợp nhất, bốn thứ này vỡ. Tôi học từng cái theo cách khó khăn —bằng cách nhìn test thất bại lúc 11 giờ đêm thứ Sáu.
Bẫy 1: mã lỗi riêng nhà cung cấp bị hardcode.
Handler lỗi của bạn kiểm tra loại lỗi context_length_exceeded của Anthropic sẽ bỏ lỡ định dạng chuẩn hóa từ lớp tổng hợp. Sửa: bắt theo mã trạng thái HTTP. 400 bao phủ lỗi độ dài ngữ cảnh và request không hợp lệ trên mọi nhà cung cấp. 429 là rate limit ở mọi nơi. 5xx nghĩa là nhà cung cấp đang có ngày tồi tệ. Viết một handler lỗi rẽ nhánh theo mã trạng thái, không phải bốn handler rẽ nhánh theo chuỗi loại lỗi riêng nhà cung cấp.
Bẫy 2: giả định về response header.
Nếu code tracing của bạn đọc x-request-id từ response header của OpenAI, endpoint tổng hợp có thể dùng header khác —thường là x-trace-id hoặc x-platform-request-id. Header rate limit như x-ratelimit-remaining-tokens cũng khác giữa các nhà cung cấp. Cách tiếp cận đáng tin cậy: đọc trường id từ body phản hồi (mọi endpoint tương thích OpenAI đều bao gồm nó) và dựa vào dashboard của nền tảng tổng hợp để theo dõi rate limit thay vì parse header lúc chạy.
Bẫy 3: đếm token bằng tiktoken.
tiktoken bị hardcode vào tokenizer của OpenAI. Định tuyến một request đến Claude hoặc Gemini qua endpoint hợp nhất, và ước tính token pre-flight của bạn sai 10–20%. Sửa: dùng đối tượng usage trong body phản hồi —response.usage.total_tokens luôn báo số token thực của model phục vụ request, bất kể nhà cung cấp. Cho ước tính pre-flight nơi bạn phải xấp xỉ, dùng cl100k_base và thêm bộ đệm an toàn 15% cho model không phải OpenAI.
Bẫy 4: khả năng null của streaming chunk.
OpenAI stream delta.content dưới dạng chuỗi. Một số nhà cung cấp thỉnh thoảng phát delta None hoặc chunk rỗng trong lúc thiết lập và đóng kết nối. Endpoint tổng hợp chuẩn hóa hầu hết việc này, nhưng code phòng thủ kiểm tra if chunk.choices[0].delta.content is not None trước khi yield tránh ngoại lệ AttributeError thầm lặng khi nhà cung cấp gửi frame bất thường. Một mệnh đề bảo vệ duy nhất này đã cứu tôi khỏi ba phiên gỡ lỗi 2 giờ sáng.
Vượt qua bốn cái bẫy này, và việc di chuyển mất dưới một giờ. Khi đã qua, đây là đội hình model đầy đủ chờ bạn sau một API key duy nhất.
Bạn có thể truy cập những model nào?
Qua một endpoint tổng hợp hợp nhất, bạn có 30+ model cấp sản xuất trên mọi nhà cung cấp lớn —không tài khoản riêng, không thanh toán riêng, không giới hạn địa lý.
| Nhà cung cấp | Model có sẵn | Giá | Tốt nhất cho |
|---|---|---|---|
| OpenAI | GPT-5.5, GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, o4-mini | Giá chính thức | Agent, bề rộng hệ sinh thái |
| Anthropic | Claude Opus 4.8, Sonnet 4.6, Haiku 4.5 | Giá chính thức | Lập trình, suy luận phức tạp |
| Gemini 3.1 Pro, 3.1 Flash, 2.5 Flash | Giá chính thức | Đa phương thức, ngữ cảnh dài | |
| DeepSeek | V4 Pro, V4 Flash, R1 | Giá theo khối lượng | Lập trình tiết kiệm chi phí, văn bản |
| Qwen | Qwen3.7 Max, Qwen3-32B | Giá chính thức | Đa ngôn ngữ (tiếng châu Á) |
| GLM | GLM-5.2, GLM-4.7 Flash | Giá chính thức | Tác vụ tiết kiệm, tương đương mã nguồn mở |
| MiniMax | M3 | Giá chính thức | Lập trình giá trị tốt nhất (80.5% SWE-bench) |
| Kimi | K2.6 | Giá chính thức | Suy luận ngữ cảnh dài |
| Mistral | Large 3, Small 4 | Giá chính thức | Lưu trữ dữ liệu tại EU |
| Meta | Llama 4 Scout, Llama 3.3 70B | Giá chính thức | Tự lưu trữ, quyền riêng tư |
Tính khả dụng của model minh bạch —nền tảng định tuyến yêu cầu qua hạ tầng toàn cầu và trả về phản hồi chuẩn, không để lộ thông báo lỗi riêng của nhà cung cấp.
Trải nghiệm lập trình viên: trước và sau
Trước endpoint hợp nhất: Bốn tài khoản nhà cung cấp với bốn quy trình đăng ký riêng, mỗi nơi có bước xác minh và yêu cầu khu vực riêng. Bạn dành nhiều thời gian quản lý truy cập hơn xây tính năng.
Khi một model mới ra mắt, bạn lại trải qua vũ điệu đăng ký. Mỗi thành viên phải xoay xở với các tài khoản, mối quan hệ thanh toán và yêu cầu truy cập khác nhau. Bạn duy trì một trang Notion chỉ để theo dõi API key nào dùng ở đâu.
Sau: Một tài khoản. Một số dư trả trước. Một SDK. Một mối quan hệ thanh toán. Model mới ra mắt? Nó xuất hiện trong danh sách model —không tài khoản mới, không quy trình đăng ký mới, không phương thức thanh toán mới.
Đồng nghiệp của bạn trên toàn thế giới dùng cùng endpoint bạn dùng. Trang Notion trở thành một dòng: “API key: xem 1Password.”
Câu hỏi thường gặp
Cái này có hoạt động với OpenAI Python SDK không?
Có. Đổi base_url thành endpoint tổng hợp của bạn. Mọi lệnh gọi client.chat.completions.create() hoạt động không đổi —streaming, function calling, structured outputs, mọi thứ.
Còn Claude Code và Cursor thì sao?
Có. Đặt ANTHROPIC_BASE_URL thành endpoint tổng hợp của bạn và ANTHROPIC_AUTH_TOKEN thành API key của bạn. Claude Code dùng giao thức Anthropic gốc qua nền tảng. Cursor hoạt động với endpoint tương thích OpenAI. Cả hai đều hoạt động với nền tảng tổng hợp hỗ trợ giao thức gốc. Xác minh nền tảng của bạn hỗ trợ Anthropic gốc trước khi phụ thuộc vào nó cho quy trình Claude Code.
Tôi có mất tính năng nào so với dùng API trực tiếp không?
Hầu hết nền tảng tổng hợp hỗ trợ toàn bộ API Chat Completions —streaming, function calling, JSON mode, structured outputs đều hoạt động. Tính năng gốc Anthropic (extended thinking, computer use) và tính năng riêng Google (search grounding, automatic function calling) yêu cầu nền tảng hỗ trợ giao thức gốc. Kiểm tra ma trận hỗ trợ giao thức của nền tảng. Về xác thực và quản lý key, mô hình tổng hợp an toàn hơn truy cập trực tiếp —xem trang thực hành bảo mật của chúng tôi.
Nó rẻ hơn hay đắt hơn API trực tiếp?
Bảng so sánh thực tế đầu bài viết này kể câu chuyện: năm lập trình viên đi từ $475/tháng chi tiêu API thực cộng $185 đóng băng trong tiền nạp không dùng đến xuống $285–340/tháng sau khi hợp nhất. Đó là 28–30% chỉ từ gộp nhóm —một hóa đơn, không tiền nằm im, giá mỗi token theo khối lượng. Thêm Pattern 2 trong bài này (định tuyến theo chi phí) và lưu lượng từng chạm model $30/M giờ xử lý trên model $0.28/M hoặc $3/M 60–80% thời gian. Giữa gộp nhóm và định tuyến, các đội nhất quán đạt thấp hơn 30–50% so với mức họ trả khi chạy tài khoản model tiên tiến trực tiếp không tối ưu. Giá niêm yết bán lẻ từng model không phải con số quan trọng —hóa đơn hàng tháng tổng mới là.
Tôi có thể đặt giới hạn chi tiêu theo người dùng không?
Có. Hầu hết nền tảng tổng hợp hỗ trợ API key ảo —tạo key riêng cho mỗi thành viên đội, ứng dụng hoặc môi trường. Đặt ngân sách tối đa theo key, rate limit và danh sách cho phép model. Khi ai đó rời đội, thu hồi key của họ —key nhà cung cấp chưa bao giờ bị lộ cho họ. Đây là mô hình bảo mật mà truy cập API trực tiếp không thể cung cấp nếu không tự xây lớp proxy.
Điều gì xảy ra khi nhà cung cấp sập giữa request?
Endpoint tổng hợp xử lý failover ở cấp hạ tầng. Nếu request của bạn đến endpoint và nhà cung cấp trả lỗi 5xx, nền tảng retry trên model hoặc nhà cung cấp thay thế theo cấu hình định tuyến của bạn. Không có fallback tường minh được cấu hình, request thất bại với lỗi rõ ràng —không phải timeout TCP 15 giây. Hầu hết sự cố phía nhà cung cấp trên nền tảng tổng hợp được giải quyết trong vòng dưới 2 giây qua retry tự động đến model khỏe mạnh.
Cấu hình Pattern 1 (chuỗi fallback) trong code ứng dụng của bạn để phòng thủ theo chiều sâu —nền tảng xử lý failover cấp hạ tầng, code của bạn xử lý ưu tiên model cấp ứng dụng. Cùng nhau chúng bao phủ cả sự cố nhà cung cấp lẫn quyết định định tuyến cấp nền tảng. Trong thực tế, cách tiếp cận phân lớp này nghĩa là người dùng của bạn thấy phản hồi ngay cả khi một nhà cung cấp lớn suy giảm hoàn toàn 30+ phút.
Độ trễ so với truy cập API trực tiếp thế nào?
Endpoint tổng hợp thêm 50–150ms chi phí định tuyến và chuẩn hóa mỗi request. Cho request streaming với time-to-first-token 300–2000ms, chi phí này không nhận thấy được. Cho request không streaming với thời gian hoàn tất 2–5 giây, 50–150ms chiếm 2–7% tổng độ trễ. Đánh đổi rõ ràng: bạn đánh đổi 50–150ms mỗi request để có failover tự động có thể cứu 15–30 giây gián đoạn khi nhà cung cấp suy giảm.
Nếu ứng dụng của bạn yêu cầu chi phí dưới 50ms —trading tần suất cao, AI game thời gian thực, SLA phản hồi dưới 100ms— truy cập API trực tiếp là lựa chọn tốt hơn. Cho 95% trường hợp sử dụng còn lại, khác biệt độ trễ nhỏ hơn biến thiên tự nhiên giữa hai request giống hệt đến cùng một model.
Tôi có thể dùng cái này để fine-tuning không?
Không —endpoint tổng hợp chỉ dành cho inference. Fine-tuning cần truy cập trực tiếp nhà cung cấp vì hạ tầng huấn luyện (tải dataset, quản lý job huấn luyện, lưu trữ artifact model) riêng từng nhà cung cấp và không được phơi bày qua API chat completions tương thích OpenAI. Quy trình thực tế: dùng key tổng hợp của bạn cho mọi lưu lượng inference, giữ một key trực tiếp nhà cung cấp riêng cho job fine-tuning, và khi huấn luyện xong, thêm ID model thu được vào cấu hình định tuyến tổng hợp. Một key trực tiếp cho huấn luyện, một key tổng hợp cho mọi thứ khác.
Mở dự án hiện tại của bạn. Tìm dòng bạn khởi tạo client OpenAI. Đổi base_url thành endpoint tổng hợp của bạn. Đổi api_key thành key tổng hợp của bạn. Chạy bộ test của bạn. Đó là quá trình di chuyển —hai dòng, năm phút, không thay đổi hành vi. Rồi làm điều thiết lập cũ không bao giờ cho phép bạn làm: A/B test Claude Opus với GPT-5.5 trên cùng prompt bằng cách đổi một chuỗi duy nhất. Bạn đã định benchmark điều đó hàng tháng. Làm hôm nay.
Quá trình di chuyển hai dòng mô tả ở trên —đổi base_url, đổi api_key— hoạt động với bất kỳ endpoint tổng hợp tương thích OpenAI nào. Code xuyên suốt bài viết này dùng TokSpan làm endpoint đó. Bạn có thể bắt đầu với model gói miễn phí để xác thực thiết lập, rồi thêm tín dụng trả trước khi cần thông lượng gói trả phí hoặc truy cập Claude Opus và GPT-5.5.