Chuyển đến nội dung chính

Hướng dẫn Tiktoken: Thư viện Python của OpenAI để mã hoá văn bản thành token

Tiktoken là bộ mã hoá BPE nhanh do OpenAI phát triển, chủ yếu dùng để đếm token cho các mô hình ngôn ngữ lớn của họ và bảo đảm xử lý văn bản hiệu quả trong các giới hạn được chỉ định.
· 5 phút đọc

Khám phá cùng AI

Tokenization là một tác vụ nền tảng khi làm việc với NLP. Nó liên quan đến việc chia nhỏ văn bản thành các đơn vị nhỏ hơn, gọi là token, có thể là từ, bán từ hoặc ký tự.

Mã hoá token hiệu quả rất quan trọng đối với hiệu năng của các mô hình ngôn ngữ, khiến đây trở thành bước thiết yếu trong nhiều tác vụ NLP như sinh văn bản, dịch và tóm tắt.

Tiktoken là một thư viện mã hoá token nhanh và hiệu quả do OpenAI phát triển. Nó cung cấp giải pháp vững chắc để chuyển đổi văn bản thành token và ngược lại. Tốc độ và hiệu quả của nó khiến Tiktoken trở thành lựa chọn tuyệt vời cho nhà phát triển và nhà khoa học dữ liệu làm việc với bộ dữ liệu lớn và mô hình phức tạp.

Hướng dẫn này dành cho nhà phát triển, nhà khoa học dữ liệu và bất kỳ ai có kế hoạch sử dụng Tiktoken và cần tài liệu thực hành kèm ví dụ.

Bắt đầu với Tiktoken

Để bắt đầu dùng Tiktoken, chúng ta cần cài đặt nó trong môi trường Python (Tiktoken cũng có sẵn cho các ngôn ngữ lập trình khác). Có thể thực hiện bằng lệnh sau:

pip install tiktoken

Bạn có thể xem mã nguồn phiên bản Python mã nguồn mở của Tiktoken trong repo GitHub sau.

Để nhập thư viện, chúng ta chạy:

import tiktoken

Các mô hình mã hoá

Các mô hình mã hoá trong Tiktoken quyết định quy tắc chia văn bản thành token. Chúng rất quan trọng vì định nghĩa cách văn bản được tách và mã hoá, ảnh hưởng đến hiệu quả và độ chính xác của các tác vụ xử lý ngôn ngữ. Những mô hình OpenAI khác nhau sử dụng các mã hoá khác nhau.

Tiktoken cung cấp ba mô hình mã hoá tối ưu cho các tình huống sử dụng khác nhau:

  • o200k_base: Mã hoá cho mô hình GPT-4o-Mini mới nhất.
  • cl100k_base: Mô hình mã hoá cho các mô hình OpenAI mới hơn như GPT-4 và GPT-3.5-Turbo.
  • p50k_base: Mã hoá cho các mô hình Codex, những mô hình này dùng cho ứng dụng mã nguồn.
  • r50k_base: Mã hoá cũ cho các phiên bản khác nhau của GPT-3.

Tất cả các mô hình này đều có sẵn qua API của OpenAI. Lưu ý rằng API cung cấp quyền truy cập vào nhiều mô hình hơn danh sách ở đây. May mắn là thư viện Tiktoken cung cấp cách dễ dàng để kiểm tra nên dùng mã hoá nào với mô hình nào.

Ví dụ, nếu tôi cần biết mô hình mã hoá mà mô hình text-embedding-3-small sử dụng, tôi có thể chạy lệnh sau và nhận câu trả lời ở đầu ra:

print(tiktoken.encoding_for_model('text-embedding-3-small'))

Chúng ta nhận được đầu ra <Encoding 'cl100k_base'>. Trước khi làm việc trực tiếp với Tiktoken, tôi muốn nhắc rằng OpenAI có ứng dụng web cho việc mã hoá token, nơi bạn có thể xem các chuỗi khác nhau được mã hoá như thế nào — bạn có thể truy cập tại đây. Cũng có một bộ mã hoá trực tuyến của bên thứ ba, Tiktokenizer, hỗ trợ các mô hình không thuộc OpenAI.

Mã hoá văn bản thành token

Để mã hoá văn bản thành token bằng Tiktoken, trước tiên bạn cần lấy một đối tượng mã hoá. Có hai cách khởi tạo. Cách thứ nhất, bạn có thể dùng tên của bộ mã hoá:

encoding = tiktoken.get_encoding("[name of the tokenizer]")

Hoặc, bạn có thể chạy hàm encoding_for_model đã đề cập để lấy bộ mã hoá cho một mô hình cụ thể:

encoding = tiktoken.encoding_for_model("[name of the model]")

Giờ đây, chúng ta có thể chạy phương thức encode của đối tượng encoding để mã hoá một chuỗi. Ví dụ, chúng ta có thể mã hoá chuỗi “I love DataCamp” theo cách sau — ở đây tôi dùng bộ mã hoá cl100k_base:

print(encoding.encode("I love DataCamp"))

Chúng ta nhận được đầu ra [40, 3021, 2956, 34955].

Giải mã token thành văn bản

Để giải mã token trở lại thành văn bản, chúng ta có thể dùng phương thức .decode() trên đối tượng encoding.

Hãy giải mã các token sau [40, 4048, 264, 2763, 505, 2956, 34955]:

print(encoding.decode([40, 4048, 264, 2763, 505, 2956, 34955]))

Các token được giải mã thành “I learn a lot from DataCamp.”

Tình huống sử dụng thực tiễn và mẹo

Ngoài mã hoá và giải mã, còn hai tình huống sử dụng khác mà tôi có thể nghĩ đến.

Ước tính và quản lý chi phí

Biết số lượng token trước khi gửi yêu cầu tới OpenAI API có thể giúp bạn quản lý chi phí hiệu quả. Vì việc tính phí của OpenAI dựa trên số lượng token được xử lý, việc mã hoá trước văn bản cho phép bạn ước tính chi phí sử dụng API. Dưới đây là cách bạn có thể đếm số token trong văn bản bằng Tiktoken:

tokens = encoding.encode(text)
print(len(tokens))

Chúng ta chỉ cần xem có bao nhiêu token bằng cách kiểm tra độ dài của mảng. Biết trước số lượng token, bạn có thể quyết định rút ngắn văn bản hoặc điều chỉnh mức sử dụng để phù hợp với ngân sách.

Bạn có thể đọc thêm về cách tiếp cận này trong hướng dẫn Ước tính chi phí GPT bằng thư viện tiktoken trong Python.

Xác thực độ dài đầu vào

Khi sử dụng các mô hình OpenAI từ API, bạn bị ràng buộc bởi số lượng token tối đa cho đầu vào và đầu ra. Vượt quá các giới hạn này có thể gây lỗi hoặc cắt ngắn kết quả. Dùng Tiktoken, bạn có thể xác thực độ dài đầu vào và đảm bảo tuân thủ giới hạn token.

Kết luận

Tiktoken là thư viện mã hoá token mã nguồn mở mang lại tốc độ và hiệu quả, được điều chỉnh cho các mô hình ngôn ngữ của OpenAI.

Hiểu cách mã hoá và giải mã văn bản bằng Tiktoken, cùng với các mô hình mã hoá khác nhau của nó, có thể nâng cao đáng kể công việc của bạn với các mô hình ngôn ngữ lớn.

Dimitri Didmanidze

Tác giả

Dimitri Didmanidze

Tôi là Dimitri Didmanidze, một nhà khoa học dữ liệu hiện đang theo học Thạc sĩ Toán học với trọng tâm là Học máy. Hành trình học thuật của tôi còn bao gồm nghiên cứu về khả năng của các mô hình dựa trên transformer và giảng dạy ở bậc đại học, giúp tôi hiểu sâu hơn các khái niệm lý thuyết phức tạp. Tôi cũng từng làm việc trong ngành ngân hàng, nơi tôi áp dụng những nguyên lý này để giải quyết các thách thức dữ liệu trong thực tế.

Chủ đề

Liên quan