Bắt đầuHướng dẫn
Yêu cầu đầu tiên từ Google Colab: giữ khóa API trong Secrets
Gửi chat completion đầu tiên từ notebook Colab với khóa được lưu trong Colab Secrets, sau đó đọc câu trả lời và mức sử dụng token.

Trên trang này
Bạn có thể chạy yêu cầu đầu tiên trong một notebook Colab mà không cần cài đặt gì trên máy tính. Lưu khóa trong Colab Secrets, đọc nó bằng userdata., trỏ gói openai vào https:/, và in choices[0]. và usage. Khóa không bao giờ nằm trong một cell, nên chia sẻ notebook không chia sẻ khóa của bạn.
Phần cuối đó chính là lý do để bận tâm. Giả sử bạn hoàn thành notebook và gửi liên kết cho một bạn học. Nếu khóa được dán vào một cell, giờ họ đã có nó. Nếu nó nằm trong Secrets, họ nhận được mã và không gì khác.
Hướng dẫn này dựa trên yêu cầu đầu tiên với requests thuần. Ở đây điều mới duy nhất là nơi khóa nằm và cách notebook đọc nó. Với cùng ý tưởng trên laptop, xem lưu khóa trong biến môi trường.
Những gì bạn cần#
- Một tài khoản Google và một notebook mới tại colab.research.google.com.
- Một khóa API CheapTokens và số dư đã nạp. Khóa và số dư nằm trong tài khoản của bạn; tài liệu chỉ ra các bước chính xác.
- Năm phút.
API tương thích với OpenAI Chat Completions, nên gói Python openai tiêu chuẩn hoạt động với một base_url khác. README của openai-python (kiểm tra ngày 5 tháng 11 năm 2026) liệt kê Python 3.10 trở lên và pip install openai.
Đặt khóa vào Colab Secrets#
Trong thanh bên trái của notebook có một biểu tượng chìa khóa, mở bảng Secrets. Thêm một secret mới, đặt tên là CHEAPTOKENS_KEY, dán khóa của bạn làm giá trị, và bật quyền truy cập notebook cho notebook bạn đang làm việc. Cách diễn đạt của các nút có thể thay đổi, nên hãy tìm biểu tượng chìa khóa thay vì đường dẫn menu.
Chọn tên bạn muốn ngay bây giờ: đó là chuỗi bạn sẽ truyền cho mã. Sai tên là một lỗi dễ mắc, và phần lỗi cho thấy nó trông như thế nào.

Chạy yêu cầu đầu tiên#
Colab đọc secret bằng google., một hàm trong module colabtools của Google (docstring kiểm tra ngày 5 tháng 11 năm 2026). Cài SDK, đọc secret, gửi một yêu cầu.
Từng bước một
Yêu cầu đầu tiên của bạn trong ba cell
Cài gói
Chạy lệnh này trong cell đầu tiên. Cờ -q giữ đầu ra ngắn gọn, và nó hoạt động dù gói đã có trong runtime hay chưa.
!pip install -q openaiĐọc khóa và tạo client
Khóa đến từ Secrets. Không có gì được dán ở đây.
from google.colab import userdata
from openai import OpenAI
client = OpenAI(
api_key=userdata.get('CHEAPTOKENS_KEY'),
base_url='https://api.cheaptokens.dev/v1',
)Gửi một yêu cầu và in kết quả
Dùng id model đầy đủ với tiền tố developer. Id ngắn không được chấp nhận.
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Explain a token in one sentence.'}],
max_tokens=200,
)
print(resp.choices[0].message.content)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)Lần print đầu tiên hiển thị câu trả lời của model. Lần thứ hai in hai con số: token bạn đã gửi và token model đã viết. Đó là toàn bộ hóa đơn cho yêu cầu, đó là lý do chúng ta in nó mỗi lần.
Yêu cầu tốn bao nhiêu#
Token là thứ bạn trả tiền, nên hãy xem dòng thứ hai của đầu ra. Giả sử một câu hỏi ngắn như trên dùng khoảng 40 token vào và câu trả lời là 150 token ra. Yêu cầu đó tốn $0.000016 theo giá hiện tại, và một nghìn yêu cầu như vậy tốn $0.0156. Thay 40 và 150 bằng hai con số mà notebook của bạn đã in.
DeepSeek-V4-Flash là mặc định ở đây vì một lý do: ngữ cảnh 380K, tối đa 32.768 token đầu ra mỗi câu trả lời, và một mức giá vào bất kỳ thời điểm nào trong ngày, không có giờ cao điểm. Một số dư bao trùm mọi model, nên bạn có thể đổi model trong cell này mà không thay đổi gì khác. Thử zai- (ngữ cảnh 390K, tối đa 8.192 token đầu ra) và chạy lại cell. Xem tất cả model và giá để có danh sách đầy đủ.
Tự mình thử xemThử xem: resp.choices[0].finish_reason là gì?Hiện đáp án
Thêm print(resp. dưới các lệnh in khác. Nếu câu trả lời kết thúc tự nhiên bạn thấy stop. Đặt max_tokens=5 và chạy lại: câu trả lời bị cắt ngắn và bạn thấy length, nghĩa là giới hạn đã dừng nó, không phải model.
Khi một cell thất bại#
Lỗi từ phía secrets đến trước, trước khi bất kỳ yêu cầu nào rời khỏi Colab. Mã nguồn colabtools (kiểm tra ngày 5 tháng 11 năm 2026) nói rằng userdata.get có thể ném ba lỗi.

SecretNotFoundError: không có secret nào với tên đó. So sánh chuỗi tronguserdata.với tên trong bảng Secrets, từng chữ cái. Phân biệt chữ hoa chữ thường.get('. . . ') NotebookAccessError: secret tồn tại, nhưng notebook này không có quyền truy cập nó. Bật công tắc truy cập trong bảng Secrets và chạy lại cell.TimeoutException: Colab không trả lời yêu cầu lấy secret. Thông báo lỗi nói rằng secret chỉ có thể được lấy khi mã chạy từ giao diện Colab, nên hãy chạy cell trong chính notebook Colab, không phải trong một script đã xuất.
Nếu secret tải được và yêu cầu vẫn thất bại, vấn đề nằm ở phía API. Một 401 nghĩa là khóa sai hoặc thiếu; một 404 thường chỉ ra base URL hoặc id model sai. API 401 hoặc 404: khóa, base URL, id model đi qua cả hai, và liệt kê model với GET /v1/models cho thấy cách sao chép id chính xác.
Chia sẻ và xoay khóa#
Chia sẻ notebook và mã gọi userdata.get đi theo nó; khóa không nằm trong bất kỳ cell hay đầu ra nào, nên không có gì để rò rỉ. Ai mở notebook cần secret riêng của họ với cùng tên, nếu không họ nhận được SecretNotFoundError (xem ở trên).
Nếu bạn tạo khóa mới, cập nhật giá trị trong bảng Secrets; mã vẫn giữ nguyên vì nó chỉ nêu tên secret.
Một thói quen vẫn quan trọng: không bao giờ in khóa. Một cell như print(userdata. đưa nó vào đầu ra, và đầu ra được lưu cùng notebook.
Kiểm tra nhanh
Khóa API nên nằm ở đâu trong một notebook Colab được chia sẻ?
Hiện đáp án
Trả lời: Trong Colab Secrets, đọc bằng userdata.get
Một cell và đầu ra của nó được lưu cùng notebook và chia sẻ với nó; mã chỉ nêu tên secret.
Bước tiếp theo: đưa câu trả lời vào một vòng lặp, một cuộc trò chuyện hoặc một công cụ nhỏ. Tài liệu bao quát phần còn lại của API.



