Dùng AI

OpenRouter là gì: một API cho nhiều mô hình AI

Mỗi hãng AI có trang đăng ký, khóa API, cách tính tiền và kiểu gọi riêng. Muốn thử năm mô hình của năm hãng cho đồ án, bạn phải mở năm tài khoản. OpenRouter gom việc đó lại: một tài khoản, một khóa, một kiểu yêu cầu, gọi được hàng trăm mô hình. Bài này giải thích OpenRouter làm gì, tính tiền ra sao, mô hình miễn phí giới hạn tới đâu, dữ liệu của bạn đi qua những đâu, và cách gọi từ Python. Số liệu đọc từ trang của OpenRouter ngày 11/11/2026.

Ý chính
  • OpenRouter là cổng trung gian: bạn gửi yêu cầu theo một chuẩn chung tới OpenRouter, nó chuyển tới nhà cung cấp đang chạy mô hình bạn chọn.
  • Theo trang FAQ, giá mô hình được giữ nguyên như giá của nhà cung cấp; OpenRouter thu phí khi bạn mua credit. Trang Pricing ngày 11/11/2026 ghi 5,5% ở gói Standard.
  • Mô hình có đuôi :free không tốn tiền nhưng bị giới hạn: 20 lượt mỗi phút, và 50 lượt mỗi ngày nếu tài khoản chưa từng mua đủ 10 credit.
  • OpenRouter mặc định không lưu nội dung câu hỏi, nhưng mỗi nhà cung cấp có chính sách riêng; có cài đặt để không đi qua nhà cung cấp dùng dữ liệu để huấn luyện.

Bài dùng Python thuần (thư viện urllib có sẵn). Nguồn là các trang Quickstart, Limits, FAQ, Pricing, Models API, Data collection và Provider logging của OpenRouter, đọc ngày 11/11/2026. Giá và hạn mức có thể thay đổi; hãy mở lại các trang này trước khi dựa vào con số.

OpenRouter làm gì

Trang Quickstart giới thiệu OpenRouter là nơi truy cập hàng trăm mô hình AI qua một API duy nhất. Về kỹ thuật, OpenRouter nhận yêu cầu của bạn theo hai dạng: Responses API và Chat Completions API, cả hai giống cách gọi mà nhiều thư viện đã quen. Trang Quickstart cho biết bạn có thể dùng luôn thư viện của OpenAI, chỉ đổi địa chỉ gốc sang địa chỉ của OpenRouter và dùng khóa của OpenRouter. Từ đó, đổi mô hình chỉ là đổi một chuỗi tên trong yêu cầu.

Phía sau, mỗi mô hình có thể được nhiều nhà cung cấp chạy. OpenRouter chọn nhà cung cấp cho từng yêu cầu và có thể chuyển sang nhà khác khi một nơi gặp sự cố. Danh sách mô hình đọc được công khai qua địa chỉ models, không cần khóa. Lúc chạy code mẫu ngày 11/11/2026, danh sách có 469 mục, trong đó 13 mục có đuôi :free; con số này đổi thường xuyên.

Với người học, lợi ích lớn nhất là thử nhiều mô hình nhanh: so câu trả lời của vài mô hình cho cùng một bài tập, chọn mô hình rẻ cho việc đơn giản và mô hình mạnh cho việc khó, như bài định tuyến mô hình bàn. Nếu bạn chỉ dùng một mô hình của một hãng, gọi thẳng API của hãng đó, như bài gọi API AI bằng Python, thường đơn giản hơn và dùng được đầy đủ tính năng riêng của hãng.

Tính tiền thế nào

OpenRouter dùng credit trả trước. Trang FAQ giải thích: mỗi mô hình có giá theo triệu token, OpenRouter tính chi phí từ số token nhà cung cấp báo về rồi trừ vào credit. Giá mô hình được giữ nguyên như giá của nhà cung cấp, không cộng thêm; khoản OpenRouter thu là phí khi mua credit. Trang Pricing đọc ngày 11/11/2026 ghi phí này là 5,5% ở gói Standard và 8% ở gói Business, không tính trên từng yêu cầu. Nếu bạn dùng khóa riêng của nhà cung cấp qua OpenRouter (BYOK), trang Pricing ghi mỗi tháng có một hạn mức tính theo giá niêm yết không mất phí; vượt hạn mức thì trang FAQ ghi phí 5% trên giá mô hình.

Trong dữ liệu trả về từ địa chỉ models, giá nằm trong trường pricing và tính bằng USD cho mỗi token, dạng chuỗi số. Muốn ước chi phí một lượt gọi, nhân giá token vào với số token câu hỏi, cộng giá token ra nhân số token câu trả lời. Tài liệu Models API lưu ý một số mô hình có giá khác khi câu hỏi rất dài, ghi trong mục overrides.

Mô hình miễn phí và giới hạn

Mô hình có tên kết thúc bằng :free là bản miễn phí. Trang Limits ghi giới hạn cho các bản này: 20 lượt mỗi phút; mỗi ngày 50 lượt nếu tổng credit đã mua từ trước tới nay dưới 10, và 1.000 lượt nếu đã mua ít nhất 10. Trang Limits cũng lưu ý tạo thêm tài khoản hay thêm khóa không làm tăng giới hạn, và nếu số dư âm thì có thể bị chặn cả mô hình miễn phí. Bạn xem lượt còn lại bằng cách gọi địa chỉ key với khóa của mình.

Một cái bẫy được tài liệu về bản :free cảnh báo: nếu bạn khai báo danh sách mô hình dự phòng và mô hình miễn phí đứng đầu, khi nó hết lượt hay không chạy được, OpenRouter chuyển sang mô hình tiếp theo trong danh sách, và mô hình đó tính tiền theo giá của nó. Nếu chỉ muốn dùng miễn phí, đừng đặt mô hình trả phí trong danh sách dự phòng.

OpenRouter: một API, nhiều mô hình Một khóa, một kiểu yêu cầu, nhiều nhà cung cấp 1. Chương trìnhMột khóa APIchuẩn chung 2. OpenRouterChọn nơi chạy469 mô hình 3. Nhà cung cấpChạy mô hìnhchính sách riêng 4. Mô hình :free20 lượt/phút50 lượt/ngày Số liệu đọc từ OpenRouter ngày 11/11/2026
OpenRouter: một API, nhiều mô hình 1. Chương trìnhMột khóa APIchuẩn chung 2. OpenRouterChọn nơi chạy469 mô hình 3. Nhà cung cấpChạy mô hìnhchính sách riêng 4. Mô hình :free20 lượt/phút50 lượt/ngày Số liệu đọc từ OpenRouter ngày 11/11/2026
Hình 1. OpenRouter, một API cho nhiều mô hình: (1) chương trình của bạn dùng một khóa API và một chuẩn yêu cầu chung; (2) OpenRouter chọn nơi chạy, danh sách có 469 mô hình; (3) nhà cung cấp chạy mô hình theo chính sách dữ liệu riêng; (4) mô hình :free giới hạn 20 lượt mỗi phút và 50 lượt mỗi ngày nếu chưa mua đủ 10 credit. Số liệu đọc từ OpenRouter ngày 11/11/2026.

Ví dụ bằng Python

Chương trình mẫu có bốn hàm. Hàm tai_danh_sach đọc danh sách mô hình. Hàm uoc_chi_phi tính tiền một lượt gọi từ giá mỗi token. Hàm re_nhat chọn các mô hình trả phí rẻ nhất có cửa sổ ngữ cảnh đủ lớn. Hàm hoi gửi câu hỏi tới Chat Completions với khóa lấy từ biến môi trường. Phần chạy thử dùng bốn mô hình giả lập, tên và giá do bài tự đặt, để không phụ thuộc mạng và không trích giá thật có thể đã đổi.

"""OpenRouter: đọc danh sách mô hình (giá theo USD mỗi token), lọc mô hình miễn phí, ước chi phí, gọi Chat Completions.

- tai_danh_sach: GET https://openrouter.ai/api/v1/models (không cần khóa).
- uoc_chi_phi: giá trong trường pricing tính theo USD cho MỖI token (chuỗi số), nhân với số token vào và ra.
- hoi: POST /api/v1/chat/completions với khóa trong biến môi trường OPENROUTER_API_KEY.
- con_lai: GET /api/v1/key xem hạn mức của khóa (lượt gọi mô hình miễn phí còn lại trong ngày).
Chạy thử dùng danh sách MAU GIẢ LẬP (tên và giá do bài tự đặt). Chạy với --that để đọc danh sách thật.
"""
import json
import os
import sys
import urllib.request
from decimal import Decimal

GOC = "https://openrouter.ai/api/v1"

MAU = [
    {"id": "vi-du/mo-hinh-lon", "context_length": 200000, "pricing": {"prompt": "0.000003", "completion": "0.000015"}},
    {"id": "vi-du/mo-hinh-vua", "context_length": 128000, "pricing": {"prompt": "0.0000004", "completion": "0.0000016"}},
    {"id": "vi-du/mo-hinh-nho", "context_length": 32000, "pricing": {"prompt": "0.0000001", "completion": "0.0000004"}},
    {"id": "vi-du/mo-hinh-nho:free", "context_length": 32000, "pricing": {"prompt": "0", "completion": "0"}},
]


def _get(duong, khoa=None):
    yc = urllib.request.Request(GOC + duong, headers={"Authorization": f"Bearer {khoa}"} if khoa else {})
    with urllib.request.urlopen(yc, timeout=30) as r:
        return json.load(r)


def tai_danh_sach():
    return _get("/models")["data"]


def uoc_chi_phi(mo_hinh, token_vao, token_ra):
    g = mo_hinh["pricing"]
    return Decimal(g["prompt"]) * token_vao + Decimal(g["completion"]) * token_ra


def mien_phi(ds):
    return [m["id"] for m in ds if m["id"].endswith(":free")]


def re_nhat(ds, token_vao, token_ra, ngu_canh_toi_thieu=0, k=3):
    tra_phi = [m for m in ds if not m["id"].endswith(":free") and m.get("context_length", 0) >= ngu_canh_toi_thieu
               and uoc_chi_phi(m, token_vao, token_ra) > 0]
    return sorted(tra_phi, key=lambda m: uoc_chi_phi(m, token_vao, token_ra))[:k]


def hoi(mo_hinh, cau_hoi, khoa, mo=urllib.request.urlopen):
    than = json.dumps({"model": mo_hinh, "messages": [{"role": "user", "content": cau_hoi}]}).encode()
    yc = urllib.request.Request(GOC + "/chat/completions", data=than, method="POST",
                                headers={"Authorization": f"Bearer {khoa}", "Content-Type": "application/json"})
    with mo(yc, timeout=60) as r:
        return json.load(r)["choices"][0]["message"]["content"]


def con_lai(khoa):
    d = _get("/key", khoa)["data"]
    return d.get("free_model_daily_requests"), d.get("limit_remaining")


def chay_thu(ds=MAU):
    vao, ra = 2_000, 500  # một câu hỏi kèm đoạn tài liệu ngắn
    dong = [f"{len(ds)} mô hình, {len(mien_phi(ds))} mô hình miễn phí: {mien_phi(ds)}"]
    for m in ds:
        dong.append(f"{m['id']}: {uoc_chi_phi(m, vao, ra):.6f} USD mỗi lượt, {uoc_chi_phi(m, vao, ra) * 1000:.2f} USD cho 1.000 lượt")
    dong.append(f"Rẻ nhất có ngữ cảnh từ 100.000 token: {[m['id'] for m in re_nhat(ds, vao, ra, 100_000, 1)]}")
    print("\n".join(dong))
    return dong


if __name__ == "__main__":
    if "--that" in sys.argv:
        ds = tai_danh_sach()
        print(f"Danh sách thật: {len(ds)} mô hình, {len(mien_phi(ds))} mô hình :free")
        khoa = os.environ.get("OPENROUTER_API_KEY")
        if khoa:
            print("Còn lại:", con_lai(khoa))
            print(hoi(mien_phi(ds)[0], "Giải thích đệ quy trong 3 câu.", khoa))
        else:
            print("Chưa có OPENROUTER_API_KEY: chỉ đọc danh sách mô hình")
    else:
        chay_thu()

Với một lượt gọi gồm 2.000 token câu hỏi và 500 token trả lời, mô hình giả lập lớn nhất tốn 0,0135 USD mỗi lượt, tức 13,50 USD cho 1.000 lượt, trong khi mô hình nhỏ chỉ tốn 0,40 USD cho 1.000 lượt. Khi yêu cầu ngữ cảnh từ 100.000 token, mô hình nhỏ bị loại vì chỉ có 32.000, và hàm chọn mô hình vừa. Chạy với tùy chọn --that, chương trình đọc danh sách thật; nếu có biến môi trường chứa khóa, nó in lượt miễn phí còn lại và gửi một câu hỏi tới mô hình miễn phí đầu tiên. Giữ khóa trong biến môi trường, không ghi vào code, như bài giữ khóa API an toàn hướng dẫn.

Dữ liệu của bạn đi đâu

Câu hỏi đi qua hai chặng: OpenRouter và nhà cung cấp. Trang Data collection ghi OpenRouter không lưu nội dung câu hỏi và câu trả lời trừ khi bạn bật một trong hai tùy chọn: lưu nhật ký riêng để tự xem lại, hoặc cho OpenRouter dùng dữ liệu để cải thiện sản phẩm đổi lấy giảm giá 1%; cả hai mặc định tắt. OpenRouter vẫn lưu siêu dữ liệu như số token, độ trễ. Trang này cũng nêu ngoại lệ về rà soát nội dung lạm dụng trẻ em theo luật.

Ở chặng nhà cung cấp, trang Provider logging nói mỗi nhà cung cấp có chính sách riêng, và trong cài đặt tài khoản có lựa chọn cho phép hay không cho phép đi qua những nhà cung cấp có thể dùng câu hỏi để huấn luyện, riêng cho mô hình trả phí và miễn phí. Nếu tắt, OpenRouter không chuyển yêu cầu tới những nơi đó. Với bài tập, đồ án có dữ liệu cá nhân hay mã nguồn của công ty, hãy kiểm cài đặt này trước khi dùng, nhất là với mô hình miễn phí.

Khi nào không nên dùng

Không cần OpenRouter nếu bạn chỉ dùng một mô hình và cần các tính năng riêng mới nhất của hãng đó, vì lớp trung gian có thể chưa hỗ trợ hoặc hỗ trợ khác đi. Cũng nên cân nhắc khi dự án có yêu cầu chặt về nơi lưu dữ liệu, vì yêu cầu đi qua thêm một bên. Và đừng xây ứng dụng phụ thuộc vào mô hình miễn phí: giới hạn lượt gọi thấp, danh sách mô hình miễn phí thay đổi, có lúc không chạy được.

Cẩn thận
  • Đặt mô hình trả phí trong danh sách dự phòng khi chỉ muốn dùng miễn phí.
  • Ghi khóa OpenRouter thẳng vào code rồi đẩy lên GitHub.
  • Gửi dữ liệu cá nhân mà chưa kiểm cài đặt về nhà cung cấp huấn luyện trên dữ liệu.
  • Dùng con số giá chép từ bài viết cũ thay vì đọc lại danh sách mô hình.
  • Tạo nhiều tài khoản để tăng lượt miễn phí: tài liệu nói việc này không có tác dụng.

Câu hỏi thường gặp

OpenRouter có đắt hơn gọi thẳng nhà cung cấp không?

Theo FAQ, giá mô hình giữ nguyên; khoản thêm là phí khi mua credit.

Có dùng được thư viện của OpenAI không?

Được, đổi địa chỉ gốc sang OpenRouter và dùng khóa OpenRouter, theo trang Quickstart.

Mô hình miễn phí có ổn định không?

Không đảm bảo: giới hạn lượt thấp và danh sách thay đổi. Hợp để thử và học.

Làm sao biết còn bao nhiêu lượt miễn phí?

Gọi địa chỉ key với khóa của bạn; trường free_model_daily_requests cho biết.

Học tiếp

  • Gọi thẳng API của một hãng: gọi API AI bằng Python.
  • Câu dễ cho mô hình rẻ, câu khó cho mô hình mạnh: định tuyến mô hình.
  • Cất khóa cho đúng chỗ: giữ khóa API an toàn.

Nếu bạn muốn học Python và AI bài bản cùng giảng viên, tham khảo khóa học AI của Big-O Coding.

Muốn học bài bản cùng giảng viên?

Khóa AI – Introduction to Machine Learning: nền tảng Máy học từ thuật toán cơ bản đến Neural Networks và LLM, học bằng Python. Học thử buổi 1 miễn phí.

Xem Khóa AI

Nguồn tham khảo

Chia sẻ: Facebook LinkedIn
Nhắn Zalo tư vấnZalo Gọi 0937 401 483