Cách Dùng 9Router: Một Endpoint Cục Bộ Cho Mọi API AI
•
7 phút đọc
Tóm tắt bằng:ChatGPTPerplexityGrokClaude

Cách Dùng 9Router: Một Endpoint Cục Bộ Cho Mọi API AI

Cài 9Router, nối API key và model chạy cục bộ của bạn, tạo combo fallback và trỏ công cụ code về localhost:20128. Kèm tài khoản không nên đặt sau router.

Mỗi công cụ code đều đòi base URL, key và tên model riêng. Khi một quota cạn giữa lúc đang refactor, bạn phải sửa ba file cấu hình để đổi nhà cung cấp, rồi công cụ tiếp theo vẫn trỏ vào tài khoản đã hết. 9Router đặt một proxy cục bộ vào giữa. Các công cụ chỉ gọi một endpoint tương thích OpenAI tại http://localhost:20128/v1, còn proxy quyết định nhà cung cấp nào trả lời.

Bài này đi qua cài đặt, các bước bảo vệ lần chạy đầu, kết nối provider, combo fallback và nối công cụ, dựa trên ảnh chụp dashboard 9Router v0.5.112. Bài cũng tách các credential nên đặt sau router khỏi những credential không nên.

9Router Làm Được Gì, Và Không Làm Được Gì

9Router là ứng dụng cục bộ giấy phép MIT, cần Node.js 20 trở lên. Nó mở một API tương thích OpenAI, chuyển request tới các provider bạn đã kết nối, giữ danh sách fallback có thứ tự gọi là combo và ghi lại mức sử dụng. Router chỉ chuyển request giữa các quota bạn đã có. Nó không tạo thêm dung lượng. Cách duy nhất để "có thêm" từ router là đặt thêm tài khoản phía sau, và không phải tài khoản nào cũng được phép nằm ở đó.

Cài Đặt Và Chạy Lần Đầu

Cài từ npm rồi khởi động:

npm install -g 9router
9router

Hoặc chạy Docker image đã phát hành, dữ liệu lưu trong thư mục được mount:

docker run -d --name 9router -p 20128:20128 \
  -v "$HOME/.9router:/app/data" -e DATA_DIR=/app/data \
  decolua/9router:latest

Dashboard mở tại http://localhost:20128/dashboard. README cho biết mật khẩu đăng nhập lần đầu lấy từ biến INITIAL_PASSWORD, và là 123456 nếu biến này không được đặt. Hãy đặt mật khẩu riêng trước lần khởi động đầu tiên:

INITIAL_PASSWORD='a-long-random-string' 9router

Trang Endpoint & Key của 9Router hiển thị endpoint API cục bộ, các nút tunnel và API key mặc định

Thanh bên bên trái ảnh liệt kê các trang của dashboard. Bài này đi qua Endpoint & Key, Providers, Combo, Usage, Token Saver và CLI Tools theo đúng thứ tự đó. Trang Quota Tracker không nằm trong bài.

Trang Endpoint & Key cho bạn hai giá trị mà mọi client cần: base URL và một API key. Hãy để "Require API key" ở trạng thái bật để chỉ request mang key này mới được chấp nhận.

Khóa Dashboard Trước Mọi Việc Khác

Mở Settings và xem thẻ Security. "Require login" nên được bật, và các ô mật khẩu cho phép bạn thay mật khẩu mặc định. Trang này cũng hiển thị vị trí database, ~/.9router/db/data.sqlite. Hãy coi thư mục đó như kho mật khẩu, vì router lưu các kết nối và key trong bộ nhớ cục bộ.

Trang Settings của 9Router với vị trí database, nút bật đăng nhập và các ô mật khẩu

Trang Endpoint cũng cảnh báo bạn đổi mật khẩu mặc định trước khi bật Tunnel hoặc Tailscale. Cả hai đều đưa dashboard ra một mạng bạn không kiểm soát. Hãy tắt chúng nếu bạn không cần truy cập từ xa.

Kết Nối Provider: Chọn Thứ Được Đặt Sau Router

Trang Providers liệt kê các endpoint tùy chỉnh tương thích OpenAI hoặc Anthropic, tiếp đến là provider OAuth, rồi provider có gói miễn phí. README bổ sung hơn 40 provider dùng API key.

Trang Providers của 9Router liệt kê các provider OAuth gồm Antigravity và phần gói miễn phí

Provider OAuth là những nơi bạn đăng nhập bằng tài khoản subscription thay vì dán API key. Danh sách này có Claude Code, Antigravity (công cụ lập trình agent của Google), GitHub Copilot và Cursor. Một đăng nhập có mặt trong danh sách không cho biết nhà cung cấp của nó có cho phép cách dùng này hay không. README tôi đọc không nói việc đi qua proxy bằng gói subscription có tuân thủ điều khoản của từng nhà cung cấp không, nên bạn phải tự kiểm tra:

Credential Văn bản của nhà cung cấp nói gì Khuyến nghị
API key, trả theo token Anthropic yêu cầu lập trình viên dùng xác thực bằng API key qua Claude Console hoặc một nhà cung cấp cloud được hỗ trợ Kết nối
Server cục bộ (LM Studio, Ollama) Phần cứng của bạn, quy tắc của bạn Kết nối
Gói miễn phí Giới hạn thay đổi, và README ghi gói miễn phí của Gemini CLI, Qwen Code và iFlow đã ngừng Chỉ làm phương án dự phòng cho tác vụ ít quan trọng
Đăng nhập gói Claude Anthropic nói OAuth dành cho việc dùng thông thường Claude Code và các ứng dụng gốc khác của Anthropic, không cho phép chuyển request qua credential gói Free, Pro, Max hay Ultra thay cho người dùng, và có thể áp dụng biện pháp mà không báo trước Bỏ qua, dùng API key
Đăng nhập Antigravity Mục 6 của Antigravity Additional Terms coi việc dùng phần mềm bên thứ ba để truy cập dịch vụ (ví dụ nêu tên là OpenClaw) là vi phạm, và có thể dẫn tới đình chỉ hoặc chấm dứt tài khoản Antigravity và Gemini CLI Bỏ qua

Proxy cục bộ không phải Claude Code hay Antigravity, nên tôi coi cả hai đăng nhập subscription này là vùng cấm. Sự tiện lợi của một endpoint không đáng để mất tài khoản đứng sau công cụ hằng ngày của bạn.

Gói miễn phí cần sự dè dặt tương tự. 9Router hỗ trợ round-robin (chia request lần lượt) giữa nhiều tài khoản của cùng một provider. Xoay vòng hai API key của chính bạn thì không sao. Gom nhiều tài khoản miễn phí để không giới hạn nào bị chạm tới là kiểu né quota mà điều khoản của provider sinh ra để chặn. Hãy kiểm tra endpoint miễn phí có lưu hay dùng prompt để huấn luyện không trước khi gửi code riêng tư qua đó.

Ví Dụ: Kết Nối OpenRouter Và Thử Model Miễn Phí

OpenRouter là lựa chọn an toàn cho kết nối đầu tiên vì nó dùng API key thông thường. Các bước:

  1. Ở trang Providers, mở OpenRouter.
  2. Bấm Add, đặt tên cho kết nối và dán key tạo tại openrouter.ai/settings/keys.
  3. Trong Available Models, tìm openrouter/openrouter/free và bấm Test.

Trang provider OpenRouter của 9Router với một kết nối API key đang active và model openrouter/openrouter/free có dấu tích xanh sau khi Test

Kết nối hiện active và model có dấu tích xanh khi một request thật trả về. Tôi bấm Test một lần để chụp ảnh này. Banner trên trang ghi "27+ free models, no credit card needed, 200 req/day", đó là con số của dashboard và tôi không bảo đảm được, nên hãy kiểm tra giới hạn trên trang của OpenRouter. Một key của chính bạn là đủ ở đây. Mở thêm tài khoản để nới mức giới hạn hằng ngày là kiểu gom tài khoản đã nói ở trên.

Tạo Combo

Combo là một cái tên trỏ tới danh sách model có thứ tự. Trang Combos mô tả bốn chiến lược: Fallback thử lần lượt các model khi lỗi, Round Robin xoay vòng giữa các model, Smart Router nhờ một decision model System One chọn trước khi sinh, còn Fusion hỏi song song mọi model rồi để một judge tổng hợp câu trả lời. Fusion tính tiền mọi model trong nhóm cộng thêm judge, nên chỉ dành cho prompt hiếm và có giá trị cao. Về ý tưởng decision model, xem Jev và các model System One.

Hộp thoại Create Combo của 9Router với ô tên combo và nút Add Model

Combo đầu tiên hợp lý, đặt tên daily-coder, dùng Fallback với các credential bạn sở hữu:

Thứ tự Model Lý do
1 Model chính của bạn qua API key trả phí Chất lượng tốt nhất cho việc thật
2 Một model rẻ hơn qua API key khác Vẫn chạy khi model đầu bị giới hạn tốc độ
3 Model chạy bằng LM Studio trên máy của bạn Miễn phí, riêng tư, không quota

Tầng cục bộ là câu trả lời thẳng thắn cho tình huống mọi thứ cùng sập. Nó tốn tiền điện.

Trỏ Công Cụ Về Endpoint

Client tương thích OpenAI nào cũng cần hai thiết lập: base URL http://localhost:20128/v1 và key lấy từ trang Endpoint. Thử nhanh từ terminal, với key đó đã được gán vào biến môi trường NINEROUTER_KEY:

curl http://localhost:20128/v1/chat/completions \
  -H "Authorization: Bearer $NINEROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "daily-coder", "messages": [{"role": "user", "content": "Say hello"}]}'

Cùng lời gọi bằng Python:

from openai import OpenAI
 
client = OpenAI(base_url="http://localhost:20128/v1", api_key="<your 9Router key>")
reply = client.chat.completions.create(
    model="daily-coder",
    messages=[{"role": "user", "content": "Say hello"}],
)
print(reply.choices[0].message.content)

GET /v1/models liệt kê các model và combo mà router cung cấp. Trang CLI Tools có sẵn màn hình thiết lập cho các coding agent.

Trang CLI Tools của 9Router cho Claude Code với endpoint, API key và các ô ánh xạ model

Hãy xem phần ánh xạ model trước khi bấm Apply. Các tên điền sẵn bắt đầu bằng cc/, tức đường đi qua đăng nhập gói Claude. Hãy thay chúng bằng tên combo hoặc model của provider dùng API key, hoặc dùng Manual Config để tự sửa thiết lập của công cụ.

Các dạng request ở trên theo README. Trong lần thử này, tôi mở hộp thoại Create Combo rồi hủy, và không gửi traffic nào qua combo.

Theo Dõi Mức Dùng Và Cắt Bớt Token

Trang Usage hiển thị tổng request, token đầu vào, token cache, token đầu ra, cùng bảng request gần đây có model đã trả lời từng lời gọi. Ô chi phí được ghi là "Estimated, not actual billing", nên hãy đối chiếu với hóa đơn của nhà cung cấp thay vì tin vào nó.

Trang Usage and Analytics của 9Router với tổng request, token và biểu đồ provider

Trang Token Saver liệt kê bốn tùy chọn: RTK nén đầu ra của tool, Headroom nén context qua một proxy bên ngoài (chưa được cài ở đây), Caveman yêu cầu câu trả lời ngắn gọn, và Ponytail nghiêng về code tối giản. Dashboard nêu RTK giảm 60-90% token đầu vào, còn README nói 20-40%. Hãy coi cả hai là số liệu từ phía nhà phát triển và tự đo trên workload của bạn bằng cách so tổng Usage trước và sau. Cơ chế đằng sau các mức tiết kiệm này được giải thích trong nén context cho coding agent.

Trang Token Saver của 9Router với RTK được bật cùng các tùy chọn Headroom, Caveman và Ponytail

Các Dạng Lỗi Cần Lường Trước

  • Một tiến trình cục bộ phục vụ mọi công cụ. Nếu nó dừng, mọi client lỗi cùng lúc. Hãy giữ cấu hình trực tiếp của từng provider ở nơi bạn khôi phục được nhanh.
  • Fallback che đi sự tụt chất lượng. Combo rơi xuống model yếu hơn sẽ đổi kết quả của bạn mà không báo lỗi. Hãy xem cột model trong các request gần đây.
  • Credential tập trung một chỗ. Router giữ mọi key đã kết nối, nên mật khẩu dashboard yếu làm lộ tất cả.
  • Quy định của provider thay đổi. Điều khoản, gói miễn phí và danh sách model đều thay đổi, nên hãy đọc lại khi một kết nối đột nhiên lỗi.

Một Endpoint, Tài Khoản Của Chính Bạn

9Router có giá trị khi nó gom những thứ bạn đã trả tiền hoặc tự chạy: API key, một model cục bộ và một lớp đệm gói miễn phí nhỏ. Khi nó kéo subscription vượt quá mức nhà cung cấp cho phép, bạn có nguy cơ bị đình chỉ chính tài khoản mà công cụ hằng ngày của bạn phụ thuộc vào.

Tài Liệu Tham Khảo

  1. decolua/9Router trên GitHub: lệnh cài đặt, cổng mặc định, provider, combo và ghi chú về token saver.
  2. Claude Code: Legal and compliance: chính sách xác thực và sử dụng credential của Anthropic.
  3. Google Antigravity Additional Terms: Mục 6 về truy cập bằng phần mềm bên thứ ba.
|Chia sẻ:

Đăng ký nhận bản tin

Nhận các bài viết và cập nhật mới nhất qua email.

Bài viết liên quan