Token là gì?
Token là các khối cấu thành văn bản mà các mô hình OpenAI xử lý. Chúng có thể ngắn như một ký tự đơn lẻ hoặc dài như cả một từ, tùy vào ngôn ngữ và ngữ cảnh. Dấu cách, dấu câu và các phần của từ đều góp phần vào số lượng token. Đây là cách API phân đoạn văn bản của bạn trong nội bộ trước khi tạo phản hồi.
Một số quy tắc ước lượng 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
Việc phân tách token có thể khác nhau tùy ngôn ngữ. Ví dụ, “Cómo estás” (tiếng Tây Ban Nha nghĩa là “Bạn khỏe không”) gồm 5 token cho 10 ký tự. Văn bản không phải tiếng Anh thường tạo ra tỷ lệ token trên ký tự cao hơn, điều này có thể ảnh hưởng đến chi phí và giới hạn.
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ủa chúng:
Câu nói của Wayne Gretzky “Bạn bỏ lỡ 100% những cú sút mà bạn 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 ra dưới dạng một chuỗi token, rồi được chuyển đổi lại thành văn bản.
Việc sử dụng token được theo dõi trong một số danh mục:
Token đầu vào – token trong yêu cầu của bạn.
Token đầu ra – token được tạo ra trong phản hồi.
Token được lưu đệm – token được tái sử dụng trong lịch sử hội thoại (thường được tính phí với mức thấp hơn).
Token suy luận – trong một số mô hình nâng cao, các “bước suy nghĩ” bổ sung được bao gồm trong nội bộ trước khi tạo ra đầu ra 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 của bạn và được dùng để lập hóa đơn cũng như theo dõi mức sử dụng.
Để tìm hiểu sâu hơn về 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, cho phép bạn tính số lượng token và xem văn bản được tách thành token như thế nào.
Ngoài ra, nếu bạn muốn tách token văn bản theo cách lập trình, hãy dùng Tiktoken như một trình phân tách BPE nhanh được dùng riê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 token kết hợp tối đa (đầu vào + đầu ra). Các mô hình dung lượng cao hiện tại hỗ trợ tới hàng trăm nghìn token trong ngữ cảnh, 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 bạn 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 lớn thành các phần nhỏ hơn.
Tóm tắt hoặc tiền xử lý đầu vào trước khi gửi.
Giá token
Mức sử dụng API được tính giá theo token, thay đổi tùy mô hình và tùy token là đầu vào, đầu ra hay được lưu đệm. Xem trang giá của OpenAI để biết mức giá hiện tại. Một số mô hình suy luận có thể dùng nhiều token hơn trong nội bộ nhưng hướng đến việc cải thiện hiệu quả bằng cách giảm số token cần cho mỗi tác vụ hoàn thành.
Khám phá token
API xử lý các từ theo ngữ cảnh của chúng trong dữ liệu ngữ liệu. Các mô hình nhận câu lệnh, chuyển đầu vào thành danh sách token, xử lý câu lệnh và chuyển các token được dự đoán trở lại thành những từ mà ta thấy trong phản hồi.
Điều có thể trông như hai từ giống hệt nhau với chúng ta có thể được tạo thành các token khác nhau tùy vào cách chúng được cấu trúc trong văn bản. Hãy xem cách API tạo ra các giá trị token cho từ ‘red’ dựa trên ngữ cảnh của nó trong văn bản:
Trong ví dụ đầu tiên ở trên, token “2266” cho ‘ red’ bao gồm một dấu cách ở cuối (Lưu ý, đây là các ID token ví dụ chỉ nhằm mục đích minh họa).
Token “2296” cho ‘ Red’ (có một dấu cách ở đầu và bắt đầu bằng chữ in hoa) khác với token “2266” cho ‘ red’ với chữ thường.
Khi ‘Red’ được dùng ở đầu câu, token được tạo ra không bao gồm dấu cách ở đầu. Token “7738” khác với hai ví dụ trước của từ này.
Nhận xét:
Token càng có xác suất/tần suất xuất hiện cao thì số token được gán cho nó càng thấp:
Token được tạo cho dấu chấm là giống nhau (“13”) trong cả 3 câu. Điều này là vì, theo ngữ cảnh, dấu chấm được 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 nó trong câu:
Chữ thường ở giữa câu: ‘ red’ - (token: “2266”)
Chữ hoa ở giữa câu: ‘ Red’ - (token: “2297”)
Chữ hoa ở đầu câu: ‘Red’ - (token: “7738”)
