Nếu anh muốn dùng Codex ổn định hơn, dễ đổi nhà cung cấp hơn và kiểm soát key tốt hơn, thì mô hình Codex → 9Router → ChiaseGPU là một cách đi khá hợp lý.
Tại sao nên dùng 9Router ở giữa?
9Router đóng vai trò như một lớp điều phối trung gian giữa Codex và nhà cung cấp model. Thay vì để Codex gọi thẳng đến từng dịch vụ AI, anh gom tất cả về một đầu mối rồi quản lý ở đó.
- Dễ thay nhà cung cấp: hôm nay dùng ChiaseGPU, ngày mai muốn đổi sang nguồn khác thì chỉ cần sửa ở 9Router, không phải đi sửa lại từng file cấu hình.
- Quản lý key gọn hơn: Codex chỉ biết key của 9Router. Key upstream được giữ trong dashboard 9Router, đỡ lộ và đỡ rối.
- Dễ route nhiều model: cùng một lớp 9Router, anh có thể nối nhiều provider, nhiều model và điều khiển theo nhu cầu.
- Dễ debug hơn: khi có lỗi, anh biết đang lỗi ở tầng Codex, tầng 9Router hay tầng nhà cung cấp model.
- Dễ scale về sau: nếu sau này anh muốn thêm nhiều app cùng dùng AI, 9Router giúp gom tất cả về một chỗ quản trị.
Tại sao nên dùng LLM API của ChiaseGPU?
Nếu mục tiêu là có một nguồn model dùng được ở Việt Nam, chi phí dễ kiểm soát và có thể tự tạo key theo nhu cầu, thì ChiaseGPU khá hợp cho các bài toán kiểu Codex, automation hoặc agent nội bộ.
- Chủ động tạo key: ChiaseGPU có lớp API quản trị riêng để tạo PAT, tạo LLM key và quản lý subscriptions.
- Phù hợp cho tích hợp: API v2 cho phép quản lý key, usage và model theo hướng khá rõ ràng.
- Dễ tách tầng quản trị và tầng gọi model: PAT dùng để quản trị, còn LLM key dùng để gọi model. Cách này sạch hơn về mặt vận hành.
- Phù hợp với luồng qua router: khi đi qua 9Router, mô hình key của ChiaseGPU khá hợp vì có thể tạo key riêng cho từng mục đích.
- Thuận tiện cho team nội bộ: có thể cấp key cho từng app hoặc từng workflow mà không cần dùng chung một khóa duy nhất.
Sơ đồ hoạt động
Luồng request chuẩn sẽ là: Codex → 9Router local → ChiaseGPU → model
Điều quan trọng nhất khi cấu hình là phân biệt đúng 3 loại key:
- ChiaseGPU PAT (
pat-...) — dùng để quản lý tài khoản, tạo LLM key qua API v2 - ChiaseGPU LLM key (
sk-...) — dùng để gắn vào provider trong 9Router - 9Router API key (
sk-...) — dùng trongconfig.tomlcủa Codex
Thông tin thực tế từ dashboard 9Router hiện tại
Dựa trên dashboard đang chạy local, provider hiện tại có các thông tin sau:
- Provider type:
Anthropic Compatible - Upstream base URL:
https://llm.chiasegpu.vn/v1 - API path:
/messages - Model đang thấy:
claude-sonnet-4.6 - Tunnel endpoint của 9Router:
https://rtgp347.9router.com/v1
Nếu anh dùng local theo đúng máy đang chạy hiện tại, Codex vẫn nên trỏ vào http://127.0.0.1:20128/v1. Còn tunnel là lựa chọn khi muốn gọi từ nơi khác.
Bước 1: Tạo PAT trong ChiaseGPU
Vào console ChiaseGPU → phần Tài khoản → tạo Personal Access Token.
- Mỗi user có 1 PAT duy nhất
- Token chỉ hiện ra 1 lần khi tạo — cần lưu lại ngay
- PAT dùng với header:
Authorization: Bearer pat-your-token
PAT không phải key để gọi model. Đây là key quản trị tài khoản.
Bước 2: Tạo LLM key trên ChiaseGPU
Sau khi có PAT, tạo LLM API key bằng endpoint:
POST https://chiasegpu.vn/api/v2/llm/keys
Ví dụ bằng curl:
curl -X POST "https://chiasegpu.vn/api/v2/llm/keys"
-H "Authorization: Bearer pat-your-token"
-H "Content-Type: application/json"
-d '{"name": "9Router Claude Key"}'
Response trả về raw_key: "sk-xxx..." — đây là key chỉ hiện 1 lần, cần lưu lại ngay.
Nếu không muốn dùng API, anh có thể tạo key trực tiếp trong console ChiaseGPU.
Bước 3: Subscribe model cho LLM key
Nếu LLM key chưa được gán model, 9Router sẽ gọi upstream được nhưng model không chạy.
Có thể subscribe qua console ChiaseGPU, hoặc qua API:
POST https://chiasegpu.vn/api/v2/llm/keys/:id/subscriptions
{
"provider_id": "provider-uuid",
"model_id": "model-id",
"alias": "my-alias"
}
Bước 4: Gắn ChiaseGPU LLM key vào 9Router
Mở dashboard 9Router, vào provider Anthropic Compatible đang trỏ tới https://llm.chiasegpu.vn/v1/messages.
- Bấm Edit ở phần Connections
- Dán ChiaseGPU LLM key dạng
sk-...vào ô API Key - Bấm Save
Lưu ý quan trọng: Ô này dùng ChiaseGPU LLM key (sk-...), không phải PAT (pat-...).
Bước 5: Lấy Base URL và API key của 9Router
Mở trang Endpoint của 9Router và lấy 2 thông tin:
- Base URL local:
http://127.0.0.1:20128/v1 - 9Router API key: key do 9Router cấp ở mục API Keys
Đây là thông tin Codex dùng để gọi vào 9Router — không phải key của ChiaseGPU.
Bước 6: Cấu hình file config.toml cho Codex
Trên Windows, file thường nằm ở:
C:\Users\ADMIN\.codex\config.toml
Cấu hình tối giản để chạy ngay:
model = "claude-sonnet-4.6"
model_provider = "9router"
model_reasoning_effort = "high"
[model_providers.9router]
name = "9Router"
base_url = "http://127.0.0.1:20128/v1"
api_key = "sk-REPLACE_WITH_YOUR_9ROUTER_KEY"
wire_api = "responses"
Ý nghĩa từng dòng
model— tên model đang có trong 9Router providermodel_provider— tên provider khai báo ở block bên dướibase_url— Codex gọi vào 9Router local, không gọi thẳng ChiaseGPUapi_key— là 9Router key, không phải key ChiaseGPUwire_api = "responses"— kiểu giao tiếp chuẩn của Codex với provider này
Các lỗi thường gặp
1. Dùng nhầm PAT trong 9Router provider
PAT (pat-...) chỉ dùng để gọi API quản trị ChiaseGPU. Ô API Key trong 9Router phải là LLM key dạng sk-....
2. Dùng nhầm ChiaseGPU key trong config.toml
config.toml chỉ dùng 9Router API key. ChiaseGPU key lưu bên trong 9Router, Codex không cần biết.
3. Trỏ base_url thẳng sang ChiaseGPU
Nếu đặt base_url = "https://llm.chiasegpu.vn/v1" thì Codex sẽ bỏ qua 9Router, mất lớp routing và quản lý key tập trung.
4. Chọn sai tên model
Tên model trong config.toml phải khớp với model đã có trong provider của 9Router. Kiểm tra lại dashboard nếu gặp lỗi model not found.
Kết luận
Nếu anh muốn một cấu hình dễ quản lý, dễ đổi nguồn model và ít phải sửa lại nhiều nơi, thì dùng 9Router ở giữa là hợp lý. Còn nếu anh cần một nguồn key tách bạch giữa tầng quản trị và tầng gọi model, ChiaseGPU là một lựa chọn khá gọn để ghép vào luồng đó.
- ChiaseGPU lo phần key và model
- 9Router lo phần route và điều phối
- Codex chỉ cần nói chuyện với một endpoint duy nhất


River Studio