Trong quá trình phát triển ứng dụng tích hợp AI, hai khái niệm thường bị nhầm lẫn hoặc gộp chung là API Key (chìa khóa xác thực) và Token (đơn vị tính toán/chi phí dữ liệu). Hiểu đúng bản chất của từng thành phần sẽ giúp hệ thống vận hành an toàn và tối ưu chi phí.
1. Phân biệt Gemini API Key và Token
| Tiêu chí | Gemini API Key | Token trong Gemini API |
| Bản chất | Chuỗi ký tự định danh & xác thực quyền truy cập (Authentication). | Đơn vị dữ liệu cơ bản (từ, cụm từ, ký tự) mà mô hình AI đọc và xử lý. |
| Vai trò | Cánh cổng bảo mật: Giúp Google nhận diện request đến từ ai, thuộc dự án nào. | Thước đo tài nguyên: Quyết định giới hạn ngữ cảnh (Context Window) và chi phí xử lý. |
| Cách tính | Cố định cho mỗi khóa tạo ra; dùng chung cho nhiều request. | Biến động theo độ dài Input (prompt gửi lên) và Output (câu trả lời trả về). |
| Độ dài/Quy đổi | Chuỗi ký tự cố định (dạng token string bảo mật). | Với tiếng Anh, ~1 token tương đương 3-4 ký tự. Với tiếng Việt có dấu, thường tốn nhiều token hơn do tách âm tiết. |
2. Quy trình lấy Gemini API Key miễn phí (Google AI Studio)
Quy trình đăng ký qua Google AI Studio là cách nhanh nhất để thử nghiệm mà không cần thẻ tín dụng:
-
Truy cập nền tảng: Mở trình duyệt đến
https://aistudio.google.com/và đăng nhập bằng tài khoản Google. -
Khởi tạo khóa:
-
Nhấn vào nút Get API key ở thanh điều hướng bên trái hoặc góc trên màn hình.
-
Nhấn Create API key.
-
-
Chọn dự án: Chọn dự án có sẵn từ Google Cloud Console hoặc bấm Create API key in new project để hệ thống tự tạo dự án mới.
-
Lưu trữ: Hệ thống tạo ra một chuỗi ký tự ngẫu nhiên. Sao chép chuỗi này và lưu vào môi trường an toàn (tuyệt đối không commit trực tiếp lên GitHub).
3. Quản lý Token & Giới hạn sử dụng (Quotas & Context)
Mỗi mô hình Gemini (như gemini-2.5-flash, gemini-3.1-pro hay gemini-3.6-flash) sở hữu cấu trúc Context Window và giới hạn xử lý khác nhau:
-
Context Window lớn: Lên đến 1.000.000 – 3.000.000 tokens, cho phép nạp trực tiếp toàn bộ tài liệu PDF dài, mã nguồn lớn hoặc file media (video, audio) vào prompt.
-
Rate Limits (Hạn mức ở gói miễn phí):
-
RPM (Requests Per Minute): Giới hạn số lượt gọi trong 1 phút (thường là 15 RPM ở gói free).
-
TPM (Tokens Per Minute): Giới hạn tổng số token gửi và nhận trong 1 phút.
-
RPD (Requests Per Day): Giới hạn tổng lượt gọi tối đa trong 1 ngày (thường là 1.500 RPD).
-
-
Đếm Token trước khi gửi: Sử dụng phương thức
count_tokenstrên SDK để kiểm tra độ dài đầu vào, tránh phát sinh lỗi vượt ngưỡng trước khi gọi hàm sinh nội dung (generateContent).
4. Tích hợp thực tế bằng Python
Ví dụ chuẩn triển khai với thư viện chính thức của Google, lưu API Key vào file môi trường .env.
Cấu hình môi trường
Tạo file .env ở thư mục gốc của dự án:
GEMINI_API_KEY=AIzaSyD-your-api-key-here
Cài đặt thư viện:
pip install google-genai python-dotenv
Code mẫu kiểm tra Token và Gửi Prompt
import os
from dotenv import load_dotenv
from google import genai
# Nạp biến môi trường từ .env
load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")
if not api_key:
raise ValueError("Chưa thiết lập GEMINI_API_KEY trong file .env")
# Khởi tạo Client
client = genai.Client(api_key=api_key)
model_name = "gemini-3.6-flash"
prompt = "Giải thích nguyên lý hoạt động của giao thức MQTT trong IoT một cách ngắn gọn."
# 1. Đếm số lượng Token đầu vào trước khi gọi API
token_count_resp = client.models.count_tokens(
model=model_name,
contents=prompt
)
print(f"Tổng số token đầu vào: {token_count_resp.total_tokens}")
# 2. Gửi request sinh nội dung
response = client.models.generate_content(
model=model_name,
contents=prompt,
)
print("\n--- Phản hồi từ Gemini ---")
print(response.text)
# 3. Xem mức độ tiêu thụ token thực tế của phiên
if hasattr(response, 'usage_metadata'):
print("\n--- Chi tiết sử dụng Token ---")
print(f"Prompt Tokens: {response.usage_metadata.prompt_token_count}")
print(f"Candidates (Output) Tokens: {response.usage_metadata.candidates_token_count}")
print(f"Total Tokens: {response.usage_metadata.total_token_count}")
5. Các biện pháp bảo mật và tối ưu chi phí
-
Bảo vệ API Key: Luôn dùng biến môi trường (
os.getenv), thêm.envvào.gitignore. Nếu dùng trên production, cấu hình trực tiếp trên Secret Manager (GCP, AWS hoặc Docker Environment). -
Cắt tỉa dữ liệu (Prompt Pruning): Lọc bỏ dữ liệu thừa, stop words hoặc định dạng lại JSON gọn gàng trước khi nạp vào ngữ cảnh để giảm bớt token đầu vào.
-
Cài đặt giới hạn Output: Thiết lập tham số
max_output_tokenstrong cấu hình gọi để kiểm soát độ dài câu trả lời, tránh trường hợp mô hình sinh phản hồi lan man làm cạn kiệt hạn mức.