# 🛠️ Project: dựng lớp bảo vệ và bảng theo dõi chi phí cho API

By Better Wise

> This lesson is premium content. Sign in and purchase the course to view the full content.

Bài trước bạn đã đặt ngân sách và biết cảnh báo ở 50/80/100%. Giờ mình ghép tất cả lại thành một API thật: một endpoint `POST /api/chat` gọi dịch vụ AI bên thứ ba, có đủ rate limiting, quota, captcha, validate input và một bảng theo dõi chi phí.

Lý do mình bắt bạn làm bài này: tháng 3 năm ngoái mình mở một endpoint chat "cho vui", không giới hạn gì. Sáng hôm sau hoá đơn là **$1.240** trong 9 tiếng, gần như toàn bộ đến từ một script đổi IP liên tục, mỗi request đẩy `max_tokens` lên 4.000. Bài học duy nhất: **đặt giới hạn trước khi mở cửa**.

## Đề bài: một endpoint, sáu lớp chặn, một bảng chi phí

Giả sử giá nhà cung cấp: input $0.50 / 1M tokens, output $1.50 / 1M tokens. Một request trung bình 1.000 input + 500 output tokens:

- Chi phí một request: $0.0005 + $0.00075 = **$0.00125**
- 10.000 request/ngày = $12.50/ngày ≈ **$375/tháng** (mức bình thường)
- Bị bot đẩy lên 100.000 request/ngày = **$3.750/tháng** (mức làm bạn mất ngủ)

Nhiệm vụ của bạn: dựng lớp bảo vệ sao cho con số thứ hai không bao giờ xảy ra, và có một bảng cho biết tiền đang đi đâu mỗi ngày.

## Spec: sáu lớp xếp theo thứ tự này

Thứ tự quan trọng hơn bạn tưởng. Rẻ nhất chạy trước.

```mermaid
flowchart TD
  Req["📥 Request"] --> V["🧹 Validate input"]
  V --> C["🤖 Captcha"]
  C --> R["🚦 Rate limit IP + user"]
  R --> Q["📊 Quota user"]
  Q --> B["💰 Budget check"]
  B --> AI["☁️ AI API"]
  AI --> L["🧾 Ghi log chi phí"]
```

| Lớp | Ngưỡng gợi ý | Trả về khi vượt |
| --- | --- | --- |
| Validate input | rỗng, > 4.000 ký tự, sai schema | 400 |
| Captcha | request đầu session, hoặc điểm nghi ngờ bot cao | 403 |
| Rate limit IP | 20 request/phút | 429 |
| Rate limit user | 5 request/phút | 429 |
| Quota user | 50 request/ngày, 200k token/ngày | 402 |
| Ngân sách tổng | $10/ngày, $200/tháng | 503 |

Khung middleware, rút gọn cho dễ đọc:

## In this lesson

- Chia việc thành 5 mốc trong 35 phút
- Nghiệm thu: sáu phép thử phải qua
- Đóng lại: bạn vừa có gì trong tay


---

## Contents

Part of [🛡️ Chống lạm dụng API: rate limit, bot và chi phí AI](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai.md)

- **🚦 Kiểm soát lưu lượng và chống lạm dụng API**
  - [🚦 Rate limiting theo IP và theo user](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/rate-limiting-theo-ip-va-theo-user.md)
  - [📊 Quota theo user và validate input sớm để tiết kiệm tài nguyên](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/quota-theo-user-va-validate-input-som.md) (sign-in required)
  - [🤖 Captcha và chống bot cơ bản](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/captcha-va-chong-bot-co-ban.md)
  - [✅ Checkpoint: rate limiting, quota và chống bot](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/checkpoint-rate-limiting-quota-chong-bot.md)
- **💰 Kiểm soát chi phí API AI bên thứ ba**
  - [🧮 Đo và dự phóng chi phí khi gọi API AI bên thứ ba](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/do-va-du-phong-chi-phi-api-ai.md)
  - [🔔 Đặt ngân sách và cảnh báo khi vượt](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/dat-ngan-sach-va-canh-bao-khi-vuot.md)
  - [🛠️ Project: dựng lớp bảo vệ và bảng theo dõi chi phí cho API](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/project-lop-bao-ve-va-bang-theo-doi-chi-phi-api.md) (premium content) — this lesson
  - [✅ Checkpoint: chi phí, ngân sách và cảnh báo](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/checkpoint-chi-phi-ngan-sach-va-canh-bao.md) (premium content)
- [Course cheatsheet](https://everwise.study/courses/chong-lam-dung-api-rate-limit-bot-va-chi-phi-ai/cheatsheet.md) (premium content)
