API là gì? Cách lấy và dùng API key an toàn
API là giao diện để một chương trình gửi yêu cầu tới dịch vụ khác và nhận phản hồi theo quy tắc đã định. API key là thông tin xác thực dùng để nhận diện/ủy quyền ứng dụng; nếu là khóa bí mật, ai lấy được có thể dùng dịch vụ và phát sinh chi phí trong tài khoản của chủ khóa.
A. Tạo OpenAI API key (ví dụ cụ thể)
- Đăng nhập vào OpenAI API Platform bằng tài khoản được phép sử dụng và thanh toán API. Với học sinh, cần hỏi giáo viên/người giám hộ và tuân thủ yêu cầu độ tuổi, quy định nhà trường và điều khoản dịch vụ.
- Vào dự án (Project) phù hợp → phần **API Keys** → **Create new secret key**. Tên mục giao diện có thể thay đổi; xem hướng dẫn chính thức ở nguồn bên dưới nếu màn hình khác.
- Chọn quyền nhỏ nhất cần thiết nếu có lựa chọn permissions. Tạo khóa riêng cho thử nghiệm, không dùng chung khóa cá nhân hoặc khóa của dự án thật.
- Sao chép khóa ngay lúc tạo và lưu vào nơi quản lý bí mật. Nhiều nền tảng chỉ hiển thị toàn bộ khóa một lần; nếu mất, tạo khóa mới thay vì tìm cách khôi phục.
- Kiểm tra trang Billing/Usage và bảng giá hiện hành của mô hình trước khi gửi yêu cầu. API thường tính phí riêng; gói ChatGPT không mặc nhiên bao gồm chi phí API. Bắt đầu với thử nghiệm ít yêu cầu, giám sát mức dùng và đặt các giới hạn/nhắc nhở khả dụng.
B. Lưu khóa khi phát triển cục bộ
Trong dự án server-side, lưu biến môi trường ở máy phát triển, ví dụ tên biến `OPENAI_API_KEY`. Tệp `.env` chỉ chứa khóa trên máy cá nhân và phải được thêm vào `.gitignore` để Git không đưa lên GitHub. Không chụp màn hình có khóa; không ghi khóa vào log, prompt, issue hoặc tài liệu.
.env
.env.*
!.env.example
Trong .env.example chỉ ghi tên biến giả, không ghi khóa thật:
OPENAI_API_KEY=
`.env` không phải kho bí mật hoàn hảo; chỉ dùng cho phát triển cục bộ và bảo vệ máy. Trên môi trường triển khai, dùng secret manager của nhà cung cấp.
C. Dùng với Cloudflare mà không lộ khóa
- Tạo Worker hoặc backend endpoint riêng; giữ API key trong mục **Secrets** của Worker, không phải biến công khai của website.
- Với Wrangler, lệnh quản lý secret có dạng
npx wrangler secret put OPENAI_API_KEY; nhập khóa vào lời nhắc bảo mật của CLI. Hoặc thêm secret trong Dashboard ở phần cài đặt Worker. Giao diện Cloudflare có thể thay đổi, hãy đối chiếu tài liệu chính thức. - Trang web chỉ gửi nội dung tới endpoint của chính Worker bằng địa chỉ tương đối/HTTPS. Worker mới là nơi gọi nhà cung cấp bằng secret.
- Worker cần kiểm tra đầu vào, giới hạn kích thước và tần suất, chặn spam, hạn chế CORS và kiểm soát chi phí. Không để endpoint công khai vô hạn hoặc cho người lạ gọi model tùy ý.
- Không gửi dữ liệu học sinh nhạy cảm tới mô hình. Xin phê duyệt của nhà trường trước khi triển khai; thử với dữ liệu giả trước.
Trình duyệt người dùng → endpoint Worker có giới hạn → nhà cung cấp AI (API key nằm kín ở Worker) → Worker lọc phản hồi → trình duyệt
Không an toàn:
Trình duyệt → API nhà cung cấp với khóa bí mật đặt trong JavaScript/HTML.
D. Lỗi thường gặp
- 401/Unauthorized: khóa sai, bị thu hồi, thiếu quyền hoặc gửi sai header; kiểm tra cấu hình server, không in khóa ra log.
- 429/Rate limit hoặc quota: vượt giới hạn tốc độ/sử dụng; giảm tần suất, kiểm tra usage/billing và chính sách tài khoản.
- Timeout/5xx: dịch vụ hoặc mạng tạm lỗi; xử lý retry có giới hạn và backoff, tránh vòng lặp tạo chi phí.
- Khóa bị lộ: thu hồi/xóa ngay trên trang quản lý của nhà cung cấp, tạo khóa mới, thay ở secret store, xem usage/billing để tìm hoạt động lạ; xóa khóa khỏi mã và lịch sử công khai nếu có. Xóa commit không đảm bảo bí mật đã biến mất khỏi lịch sử hoặc bản sao.
E. Trước khi cho CLB dùng thật
Đừng dán API key vào cuộc trò chuyện này. Nếu cần hỗ trợ cấu hình, chỉ gửi tên biến hoặc thông báo lỗi đã xóa mọi bí mật.

