Tôi còn nhớ rõ buổi họp đầu tháng 4 của một startup AI tại TP.HCM (đề nghị giấu tên, mình gọi tạm là "Team Omega"). Họ vận hành một chatbot tư vấn bán hàng xử lý trung bình 1,8 triệu request Claude Sonnet mỗi tháng. Điểm đau: hóa đơn Anthropic trực tiếp lên tới 4.200 USD, độ trễ p95 đo được 420 ms vì phải vượt đại dương tới us-east-1, và đội vận hành phải thức đêm xử lý rate-limit 429 mỗi khi chiến dịch marketing đẩy traffic đột biến. Họ cần một lớp trung gian để (1) đổi base_url sang nhà cung cấp rẻ hơn mà vẫn tương thích SDK Anthropic, (2) xoay vòng key, (3) quan sát chi phí theo phút, (4) cảnh báo khi p99 vượt ngưỡng. Sau 14 ngày di chuyển sang đăng ký tại đây thông qua Nginx + Lua, số liệu 30 ngày sau go-live của họ như sau: độ trễ trung bình giảm từ 420 ms → 180 ms, hóa đơn hàng tháng giảm từ 4.200 USD → 680 USD (tiết kiệm 84 %), số lần lỗi 429 giảm 92 % nhờ cơ chế xoay key tự động. Bài viết này chia sẻ lại toàn bộ kiến trúc và mã nguồn mà Team Omega đã dùng.

1. Tại sao phải tự dựng lớp chuyển tiếp thay vì gọi thẳng?

2. Kiến trúc tổng quan

[Client App]
   |  (gọi https://api.nội-bộ/v1/messages)
   v
[Nginx + Lua] --(ghi log JSON)--> [Filebeat] --> [Elasticsearch] --> [Grafana]
   |
   |  (proxy_pass + xoay key)
   v
[https://api.holysheep.ai/v1/messages]  (Claude Sonnet 4.5, GPT-4.1, Gemini 2.5 Flash, DeepSeek V3.2)
   |
   v
[Alertmanager] --(webhook)--> [Slack / Lark] khi p99 > 250 ms hoặc chi phí > 25 USD/giờ

Lớp Nginx đóng vai trò "bộ não": nhận request, đo thời gian, ước lượng token, ghi log JSON, xoay key, và chuyển tiếp sang https://api.holysheep.ai/v1 với header x-api-key: YOUR_HOLYSHEEP_API_KEY. Toàn bộ chi phí quan sát được trên Grafana với độ phân giải 1 giây.

3. Cài đặt Nginx có Lua (OpenResty)

# Ubuntu 22.04 / Debian 12
sudo apt-get update && sudo apt-get install -y wget gnupg2 ca-certificates
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
echo "deb http://openresty.org/package/