Token là gì?
Token là các đơn vị cơ bản của văn bản mà các mô hình OpenAI xử lý. Tùy vào ngôn ngữ và ngữ cảnh, mỗi token có thể chỉ gồm một ký tự hoặc dài bằng cả một từ. Khoảng trắng, dấu câu và các phần của từ đều được tính vào số lượng token. Đây là cách API phân đoạn văn bản ở cấp độ nội bộ trước khi tạo phản hồi.
Một số quy tắc ước tính hữu ích cho tiếng Anh:
1 token ≈ 4 ký tự
1 token ≈ ¾ từ
100 token ≈ 75 từ
1–2 câu ≈ 30 token
1 đoạn văn ≈ 100 token
~1.500 từ ≈ 2.048 token
Cách phân tách token thay đổi tùy theo mô hình và phương thức mã hóa. Hãy dùng công cụ Tokenizer hoặc tiktoken.encoding_for_model(model) để biết số lượng chính xác cho mô hình mục tiêu.
Ví dụ
Dưới đây là một số mẫu văn bản thực tế cùng số lượng token ước tính:
Câu nói của Wayne Gretzky: “Bạn bỏ lỡ 100% những cú sút mà mình không thực hiện” = 11 token
Hiến chương OpenAI = 476 token
Tuyên ngôn Độc lập Hoa Kỳ = 1.695 token
Cách tính số lượng token
Khi bạn gửi văn bản đến API:
Văn bản được chia thành các token.
Mô hình xử lý các token này.
Phản hồi được tạo dưới dạng một chuỗi token, sau đó được chuyển đổi trở lại thành văn bản.
Mức sử dụng token được theo dõi theo một số loại:
Token đầu vào – các token trong yêu cầu của bạn.
Token đầu ra – các token được tạo trong phản hồi.
Token được lưu vào bộ nhớ đệm – các token được tái sử dụng trong lịch sử trò chuyện (thường được tính phí ở mức thấp hơn).
Token suy luận – ở một số mô hình tiên tiến, hệ thống thực hiện thêm các “bước suy nghĩ” nội bộ trước khi tạo ra kết quả cuối cùng.
Các số liệu này xuất hiện trong siêu dữ liệu phản hồi API và được dùng để tính phí cũng như theo dõi mức sử dụng.
Để tìm hiểu sâu hơn về cách phân tách token, bạn có thể dùng công cụ Tokenizer tương tác của chúng tôi để tính số lượng token và xem văn bản được chia thành các token như thế nào.
Ngoài ra, nếu muốn tách token trong văn bản bằng mã lập trình, hãy dùng Tiktoken—một trình tách token BPE nhanh, chuyên dùng cho các mô hình OpenAI.
Giới hạn token
Mỗi mô hình có một giới hạn tối đa cho tổng số token (đầu vào + đầu ra). Các mô hình dung lượng lớn hiện nay hỗ trợ ngữ cảnh lên đến hàng trăm nghìn token, dù giới hạn thực tế có thể thay đổi tùy theo phiên bản mô hình và cấp sử dụng của bạn.
Nếu vượt quá giới hạn, bạn có thể:
Rút ngắn hoặc diễn đạt lại câu lệnh.
Chia văn bản dài thành các phần nhỏ hơn.
Tóm tắt hoặc xử lý trước dữ liệu đầu vào rồi mới gửi.
Chi phí token
Mức sử dụng API được tính phí theo token, tùy vào mô hình và loại token là đầu vào, đầu ra hay được lưu vào bộ nhớ đệm. Xem trang giá của OpenAI để biết mức phí hiện tại. Một số mô hình suy luận có thể dùng nhiều token hơn ở cấp độ nội bộ, nhưng hướng đến việc tăng hiệu quả bằng cách giảm số token cần thiết để hoàn thành mỗi tác vụ.
Token không được chuẩn hóa giữa các mô hình hoặc nhà cung cấp AI. Các mô hình khác nhau có thể xử lý hoặc tạo cùng một văn bản bằng số lượng token khác nhau. Vì vậy, mức giá quảng cáo thấp hơn cho mỗi triệu token không nhất thiết đồng nghĩa với tổng chi phí thấp hơn.
Độ dài hiển thị của phản hồi cũng không phản ánh toàn bộ vấn đề. Một số mô hình sử dụng token suy luận ở cấp độ nội bộ trước khi đưa ra câu trả lời, nên phản hồi hiển thị dài hơn không nhất thiết có nghĩa là mô hình đã dùng nhiều token hơn về tổng thể.
Khi so sánh các mô hình, hãy xem xét tổng số token cần dùng và chi phí cho mỗi kết quả thành công. Các bài đánh giá chuẩn có thể là điểm khởi đầu hữu ích, nhưng thử nghiệm mô hình với chính trường hợp sử dụng của bạn là cách tốt nhất để hiểu chi phí và hiệu suất thực tế.
Khám phá token
API xử lý các từ dựa trên ngữ cảnh của chúng trong dữ liệu ngữ liệu. Mô hình nhận câu lệnh, chuyển đổi dữ liệu đầu vào thành danh sách token, xử lý câu lệnh rồi chuyển các token được dự đoán trở lại thành những từ mà chúng ta thấy trong phản hồi.
Hai từ trông có vẻ giống hệt nhau đối với chúng ta vẫn có thể được biểu diễn bằng các token khác nhau, tùy vào cách chúng được sắp xếp trong văn bản. Hãy xem API tạo các giá trị token cho từ “red” dựa trên ngữ cảnh của từ này trong văn bản như thế nào:
Trong ví dụ đầu tiên ở trên, token “2266” của “ red” bao gồm một khoảng trắng ở cuối (lưu ý: đây là các ID token mẫu dùng cho mục đích minh họa).
Token “2296” của “ Red” (có khoảng trắng ở đầu và bắt đầu bằng chữ hoa) khác với token “2266” của “ red” viết thường.
Khi “Red” được dùng ở đầu câu, token được tạo ra không bao gồm khoảng trắng ở đầu. Token “7738” khác với token trong hai ví dụ trước của từ này.
Nhận xét:
Token càng phổ biến hoặc có xác suất xuất hiện càng cao thì số được gán cho token đó càng nhỏ:
Token được tạo cho dấu chấm giống nhau (“13”) trong cả 3 câu. Đó là vì xét theo ngữ cảnh, dấu chấm được sử dụng khá giống nhau trong toàn bộ dữ liệu ngữ liệu.
Token được tạo cho “red” thay đổi tùy theo vị trí của từ này trong câu:
Viết thường ở giữa câu: “ red” - (token: “2266”)
Viết hoa ở giữa câu: “ Red” - (token: “2297”)
Viết hoa ở đầu câu: “Red” - (token: “7738”)
