Dùng OpenRouter trong code, n8n và Dify: hướng dẫn đủ bước

Chia sẻ bài viết

Mục lục
Dùng OpenRouter trong code, n8n và Dify: hướng dẫn đủ bước

Trả lời nhanh: Công thức chung mọi nền tảng: base URL https://openrouter.ai/api/v1, API key dạng sk-or-v1-..., tên model dạng hang/ten-model. n8n: tạo credential OpenAI với Base URL đó. Dify: thêm provider OpenRouter có sẵn trong danh sách. Code: SDK OpenAI đổi hai tham số. Key luôn nằm trong biến môi trường/secret, không bao giờ nằm trong code.

Bài trước trả lời OpenRouter là gì; bài này là sổ tay cấu hình, đi từng nền tảng dân vibe coding Việt dùng nhiều nhất, mỗi mục đủ chi tiết để làm theo không cần mở tài liệu gốc. Kèm hai chủ đề tách biệt người nghịch và người làm thật: xử lý khi model quá tải, và giữ key không bị lộ, vì key OpenRouter gắn thẳng vào ví tiền của bạn.

Tóm tắt nhanh
  • Bộ ba thần chú: base URL /api/v1 · key sk-or-v1 · model dạng hang/ten-model
  • n8n: một credential OpenAI sửa Base URL, mọi node AI dùng chung
  • Dify: provider OpenRouter có sẵn, điền key là chọn được model trong mọi app
  • Model quá tải/lỗi: bắt lỗi và thử model dự phòng, vài dòng code đổi lấy uptime
  • Key = ví tiền: biến môi trường, giới hạn nạp, theo dõi chi tiêu theo app
  • Một API chuẩn OpenAI → hàng trăm model nhiều hãng: đổi model = đổi một chuỗi tên
  • Một ví tiền chung: nạp một nơi, dùng cho mọi model, đỡ hẳn bài toán mở tài khoản từng hãng

Code Python và JavaScript: đổi hai tham số

# Python (SDK openai chinh chu)
from openai import OpenAI
client = OpenAI(base_url="https://openrouter.ai/api/v1",
                api_key=os.environ["OPENROUTER_API_KEY"])
r = client.chat.completions.create(
    model="anthropic/claude-sonnet-4.5",
    messages=[{"role": "user", "content": "..."}],
    stream=True)   # streaming chay y het OpenAI
// JavaScript
import OpenAI from "openai";
const client = new OpenAI({
  baseURL: "https://openrouter.ai/api/v1",
  apiKey: process.env.OPENROUTER_API_KEY,
});

Tùy chọn lịch sự: thêm header HTTP-Referer và X-Title khai tên app, chi tiêu của từng app tách bạch trên dashboard, về sau nhìn hóa đơn biết ngay con nào ăn tiền.

n8n: một credential cho mọi workflow

Trong n8n: Credentials → tạo mới loại OpenAI → API Key điền key OpenRouter, Base URL điền https://openrouter.ai/api/v1. Xong, mọi node AI Agent, LLM Chain, OpenAI Chat Model trỏ credential này; ô model gõ tay tên dạng google/gemini-2.5-flash (danh sách model xem trên trang OpenRouter). Mẹo phân tầng chi phí ngay trong workflow: bước phân loại rẻ tiền dùng model mini/flash, bước soạn nội dung quan trọng mới gọi model đỉnh, hai node AI, hai model, một credential. Và nhớ mô hình lai của bài trước: node việc nhạy cảm trỏ Ollama local, node việc khó trỏ OpenRouter.

Dify: provider có sẵn trong danh sách

Dify hỗ trợ OpenRouter chính thức: Settings → Model Provider → tìm OpenRouter → điền API key, toàn bộ danh mục model hiện ra cho mọi app trong workspace chọn. Điểm mạnh của cặp Dify + OpenRouter là A/B model: cùng một app, đổi model trong dropdown rồi chạy bộ câu thử là so sánh được chất lượng/chi phí trong vài phút, dân làm chatbot thuê cho khách chốt model nhanh hơn hẳn. Dify self-host trên VPS (đã có bài dựng) thì lưu ý duy nhất là máy cần ra được internet, không như Ollama thuần nội bộ.

Chống chết vặt: fallback khi model quá tải

Model hot có lúc quá tải hoặc bảo trì, app nghiêm túc phải có đường lùi:

MODELS = ["anthropic/claude-sonnet-4.5",      # uu tien
          "google/gemini-2.5-flash",          # du phong nhanh-re
          "qwen/qwen-2.5-72b-instruct"]       # du phong mo
for m in MODELS:
    try:
        r = client.chat.completions.create(model=m, messages=msgs, timeout=60)
        break
    except Exception as e:
        log.warning(f"{m} loi: {e}")   # thu con tiep theo

OpenRouter cũng có cơ chế routing/fallback phía server cho một số trường hợp, nhưng vòng lặp phía client như trên minh bạch và kiểm soát được thứ tự ưu tiên chi phí. n8n làm điều tương đương bằng nhánh error của node.

Giữ key an toàn: đây là ví tiền, không phải mật khẩu thường

Key OpenRouter bị lộ = người lạ tiêu tiền trong ví bạn cho đến khi cạn. Kỷ luật tối thiểu: key chỉ sống trong biến môi trường/secret manager (n8n credential, Dify setting đã là dạng lưu an toàn, đừng dán key vào node code hay commit .env lên git); tạo key riêng cho từng app để lộ con nào khóa con đó không vạ lây; đặt giới hạn chi trên từng key ngay khi tạo (OpenRouter cho đặt credit limit per key); và xem trang Activity mỗi tuần, chi tiêu lạ lộ diện sớm. Server gọi OpenRouter đặt trong tailnet thì log và key càng khó bị với tới từ ngoài.

Tiền nong: cơ chế giá và nhóm model free

Cơ chế minh bạch: mỗi model có giá theo triệu token vào/ra do hãng gốc định, OpenRouter cộng phụ phí khi bạn nạp tiền (vài phần trăm) thay vì đội giá từng lượt gọi. Nạp bằng thẻ quốc tế, dùng đến đâu trừ đến đó, bảng điều khiển cho xem chi tiêu theo từng model và từng app, thứ mà tự quản nhiều tài khoản hãng không bao giờ gọn được như vậy. Điểm được dân thử nghiệm quý: nhóm model free (tag :free), có giới hạn lượt nhưng đủ cho prototype và học; chi tiết cách đọc bảng giá và mẹo tiết kiệm nằm ở bài giá của cụm này.

Đánh đổi cần biết trước khi dựa vào

Ba cái giá của sự tiện: thêm một trung gian, độ trễ cộng thêm một chặng (thường nhỏ nhưng có), và khi OpenRouter trục trặc thì mọi model của bạn trục trặc theo; dữ liệu đi qua bên thứ ba, prompt của bạn chảy qua hạ tầng OpenRouter đến hãng gốc: đọc chính sách lưu trữ của họ và của từng nhà cung cấp trước khi đưa dữ liệu nhạy cảm (có cấu hình routing để loại nhà cung cấp lưu dữ liệu); phụ thuộc chính sách, giá, danh sách model, hạn mức free đổi theo thời gian, ứng dụng nghiêm túc nên viết lớp gọi AI đủ trừu tượng để đổi đường không đau, vốn là thói quen tốt bất kể dùng gì.

OpenRouter + Ollama: cặp bài trùng của stack tự chủ

Hai công cụ này không cạnh tranh, chúng chia vai: Ollama lo việc đều đặn khối lượng lớn và dữ liệu không được rời nhà (phân loại, tóm tắt nội bộ, RAG tài liệu); OpenRouter lo việc cần trí tuệ đỉnh hoặc thử nghiệm model mới (viết nội dung quan trọng, suy luận khó, benchmark). Mô hình phổ biến trên một VPS: n8n/Dify làm nhạc trưởng, node AI trỏ Ollama local cho 80% việc, trỏ OpenRouter cho 20% việc khó, hóa đơn token chỉ phát sinh đúng chỗ đáng tiền. Router LLM tự host như LiteLLM còn tự động hóa được cả sự phân vai này.

Kiểm cấu hình đã đúng chưa, ba lệnh

# 1. Key con hieu luc va con tien khong
curl https://openrouter.ai/api/v1/auth/key -H "Authorization: Bearer $OPENROUTER_API_KEY"

# 2. Goi thu mot model re nhat de xac nhan duong day thong
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d @yeucau.json

# 3. Xem danh sach model va gia hien tai
curl https://openrouter.ai/api/v1/models | head -c 600

Lệnh đầu trả về hạn mức và số tiền đã dùng. Chạy nó trước khi đổ lỗi cho cấu hình: rất nhiều ca lỗi 401 hoặc 402 chỉ là hết tiền trong tài khoản.

Bảng lỗi hay gặp

Mã lỗiNghĩaCách xử
401Khóa sai hoặc thiếu tiền tố BearerKiểm biến môi trường đã nạp chưa, in ra 6 ký tự đầu để đối chiếu
402Hết số dưNạp thêm, hoặc chuyển sang nhóm model miễn phí
404 model not foundSai tên model, thường quên phần tên hãng ở đầuTên đúng có dạng hãng gạch chéo tên model
429Vượt giới hạn tần suấtChờ và thử lại theo cấp số nhân, hoặc đổi model dự phòng
502 hoặc 503Model đang quá tải phía nhà cung cấpĐây là lúc cơ chế model dự phòng phát huy tác dụng
Trả lời rỗngModel bị lọc nội dung, hoặc đã chạm giới hạn số từKiểm trường lý do kết thúc trong phản hồi

Giữ khóa an toàn, đây là ví tiền

# Dat trong bien moi truong, khong bao gio trong ma nguon
echo 'OPENROUTER_API_KEY=sk-or-v1-...' >> .env
echo '.env' >> .gitignore

# Kiem ma nguon co lo khoa khong truoc khi day len kho
grep -rn "sk-or-v1" --exclude-dir=.git . || echo "sach"

# Voi n8n va Dify chay bang Docker: dua qua bien moi truong cua container
docker compose exec n8n printenv | grep -i openrouter
  • Đặt hạn mức chi tiêu trong bảng điều khiển trước khi cho quy trình tự động chạy. Đây là việc làm trước, không phải sau khi nhận hóa đơn.
  • Mỗi dự án một khóa riêng để biết phần nào tiêu bao nhiêu và thu hồi được từng cái.
  • Xoay khóa định kỳ, và thu hồi ngay khi một thành viên rời dự án.

Cơ chế dự phòng khi model quá tải

Nguyên tắc: khai một danh sách model theo thứ tự ưu tiên, gặp lỗi thì tự chuyển sang model kế tiếp thay vì báo lỗi cho người dùng. Với quy trình tự động chạy ban đêm, đây là khác biệt giữa một sáng có kết quả và một sáng phải chạy lại từ đầu.

Thứ tự nên đặt: một model chính cho chất lượng, một model rẻ hơn cùng hãng, và một model của hãng khác để phòng trường hợp cả hãng đó gặp sự cố. Ghi lại vào nhật ký mỗi lần phải dùng model dự phòng, con số đó cho biết model chính có đáng tin không.

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

Một key dùng được cho nhiều app không?

Được về kỹ thuật nhưng nên mỗi app một key, tách chi tiêu, thu hồi độc lập khi lộ, và đặt hạn mức riêng. Tạo key không giới hạn số lượng.

Danh sách model lấy ở đâu và có API không?

Trang models của OpenRouter liệt kê đầy đủ kèm giá; lập trình thì GET /api/v1/models trả về danh mục kèm giá máy đọc được, hữu ích cho dropdown chọn model trong app của bạn.

Lỗi 402 khi gọi API nghĩa là gì?

Hết credit trong ví, nạp thêm hoặc chuyển sang model :free tạm thời. Đây là lý do nên bật cảnh báo số dư và có fallback sang Ollama local cho các workflow không được phép dừng.

Có dùng OpenRouter cho Claude Code / các CLI agent được không?

Các công cụ cho phép đổi endpoint OpenAI-compatible đều trỏ được vào OpenRouter theo đúng công thức base URL + key. Công cụ gắn chặt một hãng cụ thể thì tùy phiên bản có hỗ trợ cấu hình proxy/endpoint hay không, kiểm tra tài liệu công cụ đó, đừng cố lách bằng cách hack config thiếu chính chủ.

OpenRouter có hợp pháp/chính chủ không?

OpenRouter là dịch vụ thương mại công khai, mua model qua kênh chính thức của các hãng, không phải chợ key lậu. Bạn vẫn chịu điều khoản sử dụng của model gốc khi gọi qua nó.

Thanh toán từ Việt Nam có dễ không?

Nạp bằng thẻ quốc tế (Visa/Mastercard) phổ biến ở VN là được; đây chính là lý do nhiều dev Việt chọn nó thay vì mở tài khoản từng hãng vốn có hãng khó thanh toán hơn.

Model :free có dùng cho sản phẩm thật được không?

Không nên, hạn mức thấp và không cam kết. Free để học, prototype, demo; sản phẩm có người dùng thì trả phí model rẻ (rất nhiều model mở giá thấp) hoặc chạy Ollama tự host cho phần việc nặng.

Gọi OpenRouter từ server đặt ở Việt Nam có nhanh không?

Độ trễ đến hạ tầng OpenRouter (đặt ở nước ngoài) cộng vài trăm ms mỗi lượt so với gọi thẳng hãng, với chat/batch hầu như không thành vấn đề; ứng dụng nhạy độ trễ từng ms thì cân nhắc gọi thẳng hoặc dùng model local.

Hạ tầng VPS tại Việt Nam của TND
Cloud VPS linh hoạt và VPS NVMe xung cao, IP công cộng riêng, đặt tại Việt Nam
n8n gọi OpenRouter chạy bền nhất trên máy không bao giờ tắt: Cloud VPS TND cho cả stack tự động hóa, workflow, bot, webhook, IP riêng, đặt tại Việt Nam, bàn giao 5 phút. Muốn thêm Ollama local chia tải thì chọn dòng VPS NVMe RAM lớn.
Thuê VPS giá rẻ tại TND, bàn giao trong 5 phútCần I/O mạnh? Xem VPS NVMe

Bài viết liên quan