OpenAI
Trang này được dịch bằng máy học. Xem bài viết gốc bằng tiếng Anh.

Token là gì và cách đếm token?

Đã cập nhật: 5 hours ago

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ự hoặc dài bằng cả một từ, tùy theo ngôn ngữ và ngữ cảnh. Khoảng trắng, dấu câu và các phần của từ đều góp vào số lượng token. Đây là cách API phân đoạn văn bản của bạn ở bên trong trước khi tạo phản hồi.

Các 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 thay đổi theo mô hình và cách mã hóa. Dùng công cụ Tokenizer hoặc tiktoken.encoding_for_model(model) để nhận số lượng chính xác cho mô hình mục tiêu của bạ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 xấp xỉ:

  • Câu trích dẫn 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:

  1. Văn bản được tách thành các token.

  2. Mô hình xử lý các token này.

  3. Phản hồi được tạo dưới dạng một chuỗi token, rồi đượ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ố danh mục:

  • Token đầu vào – token trong yêu cầu của bạn.

  • Token đầu ra – token được tạo trong phản hồi.

  • Token được lưu vào bộ nhớ đệm – token được tái sử dụng trong lịch sử hội thoại (thường được tính phí ở 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 đưa vào nội bộ trước khi tạo đầu ra cuối cùng.

Các số lượng 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 để tính phí cũng như theo dõi mức sử dụng.

Để tìm hiểu thêm 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 bằng lập trình, hãy dùng Tiktoken như một bộ tách token 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 nay hỗ trợ đến 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 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 lớn thành các phần nhỏ hơn.

  • Tóm tắt hoặc tiền xử lý dữ liệu đầu vào trước khi gửi.

Định giá token

Mức sử dụng API được tính giá theo token, thay đổi theo mô hình và theo việc token là đầu vào, đầu ra hay được lưu vào bộ nhớ đệm. Xem trang định 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 ở bên trong, nhưng hướng đến cải thiện hiệu quả bằng cách giảm số token cần thiết cho mỗi tác vụ hoàn tất.

Khám phá token

API xử lý các từ theo ngữ cảnh của chúng trong dữ liệu kho ngữ liệu. Các 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 và chuyển các token dự đoán trở lại thành những từ mà chúng ta thấy trong phản hồi.

Những gì với chúng ta có vẻ là hai từ giống hệt nhau có thể được tạo thành các token khác nhau tùy theo cách chúng được cấu trúc trong văn bản. Hãy xem cách API tạo giá trị token cho từ ‘red’ dựa trên ngữ cảnh của từ đó trong văn bản:

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

Trong ví dụ đầu tiên ở trên, token “2266” cho ‘ red’ bao gồm một khoảng trắng đi kèm (Lưu ý, đây là các ID token ví dụ chỉ nhằm mục đích minh họa).

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

Token “2296” cho ‘ Red’ (có khoảng trắng ở đầu và bắt đầu bằng chữ cái viết hoa) khác với token “2266” cho ‘ red’ bằng chữ thường.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

Khi ‘Red’ được dùng ở đầu câu, token được tạo không bao gồm khoảng trắng ở đầu. Token “7738” khác với hai ví dụ trước đó của từ này.

Quan sát:

Một token càng có khả năng xuất hiện/càng thường gặp 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à do, xét theo ngữ cảnh, dấu chấm được dùng khá tương tự trong toàn bộ dữ liệu kho ngữ liệu.

  • Token được tạo cho ‘red’ thay đổi tùy theo vị trí của từ đó 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”)

Bài viết này có hữu ích không?