0
0
Lập trình
Admin Team
Admin Teamtechmely

tokencount: Công cụ CLI Đếm Token GPT Nhanh Chóng

Đăng vào 7 tháng trước

• 3 phút đọc

Giới thiệu

tokencount là một công cụ CLI viết bằng Rust giúp bạn trả lời một câu hỏi đơn giản nhưng đầy thách thức: Có bao nhiêu token GPT đang ẩn giấu trong dự án này? Nếu bạn phát triển các tính năng AI, viết tài liệu có nhiều prompt, hoặc chỉ cần theo dõi các cửa sổ ngữ cảnh, công cụ này sẽ giúp bạn kiểm tra một cách dễ dàng và nhanh chóng.

Tại sao tôi xây dựng nó

Nhiều công cụ đếm token hiện tại chỉ có thể xử lý một tệp tại một thời điểm hoặc không tôn trọng thực tế của hệ thống tệp trong các dự án lớn. Tôi muốn có một công cụ có thể:

  • Quét nhanh chóng một cơ sở mã (sử dụng các worker song song với Rayon và các quy tắc bỏ qua của hệ điều hành)
  • Tôn trọng .gitignore theo mặc định và cho phép thêm các glob tùy chỉnh --exclude
  • Sử dụng cùng một ngôn ngữ như các mô hình OpenAI (cl100k_base, o200k_base, v.v.)
  • Cung cấp một tóm tắt hữu ích ngay lập tức: số lượng mỗi tệp, tổng số, phần trăm và các tệp lớn nhất
  • Hoạt động tốt với tự động hóa (chế độ xuất JSON và NDJSON)

Tính năng nổi bật

  • Quét siêu nhanh – Sử dụng ignore::WalkBuilder và Rayon cho I/O/token hóa đồng thời
  • Mặc định thông minh – chỉ quét *.elm trừ khi bạn thêm cờ --include-ext (tốt cho các kho có nhiều Elm)
  • Lọc linh hoạt – kết hợp --include-ext, --exclude, --max-bytes, và --follow-symlinks
  • Nhiều định dạng đầu ra – bảng, mảng JSON với tóm tắt, hoặc luồng NDJSON cho các pipeline
  • Thống kê phong phú – tổng số, trung bình mỗi tệp, và các phần trăm P50/P90/P99 để phát hiện nhanh các ngoại lệ
  • Chế độ yên tĩnh/chi tiết – giữ cho nhật ký CI sạch sẽ hoặc bật cảnh báo chi tiết tại địa phương

Cài đặt

Để cài đặt tokencount, bạn chỉ cần sử dụng lệnh sau:

Copy
cargo install tokencount

Hướng dẫn nhanh

Dưới đây là một số lệnh cơ bản để bạn bắt đầu với tokencount:

Copy
# Mặc định: quét thư mục hiện tại, chỉ tệp *.elm, đầu ra bảng
tokencount

# Bao gồm Elm và TypeScript
tokencount ./frontend --include-ext elm --include-ext ts

# Hiển thị 10 tệp lớn nhất theo số lượng token
tokencount --top 10

# Tóm tắt có thể đọc cho CI
tokencount --format json > tokens.json

# Xuất các số liệu để xử lý thêm
tokencount --format ndjson

# Sắp xếp giảm dần theo số lượng token
tokencount --sort tokens

Mỗi lần chạy sẽ kết thúc với một phần chân như sau:

Copy
---
total files: 42
total tokens: 128730
average/file: 3065.00
p50: 812
p90: 7194
p99: 24403

Chỉ cần cần các tệp lớn nhất? Kết hợp --top N với --sort tokens hoặc sắp xếp theo đường dẫn mặc định.

Cách thức hoạt động

  • Xử lý bỏ qua sử dụng thư viện ignore với .gitignore, .git/info/exclude, và các bỏ qua git toàn cầu tự động. Tôi thêm các thư mục rác phổ biến (node_modules, target, .git) để bạn không phải làm điều đó.
  • Token hóa dựa trên tiktoken-rs, vì vậy bạn sẽ có cùng một số lượng như các mô hình cl100k_base/o200k_base của OpenAI.
  • Xử lý lỗi thân thiện theo mặc định—các tệp không phải UTF-8 hoặc các blob quá lớn sẽ bị bỏ qua kèm theo cảnh báo (hoặc im lặng với --quiet).
  • Phần trăm sử dụng phương pháp xếp hạng gần nhất và giảm dần một cách tự nhiên khi có không tệp nào.

Lộ trình & phản hồi

Tôi đang khám phá:

  • Nhiều định dạng mã hóa hơn (nếu bạn cần một token hóa khác, hãy mở một vấn đề)
  • Đầu ra báo cáo HTML/Markdown tùy chọn
  • Biểu đồ kích thước tệp tích hợp để bổ sung cho thống kê token

Bạn có thể tìm thấy repo và các vấn đề tại đây: github.com/CharlonTank/tokencount

Nếu bạn thử nghiệm với tokencount, tôi rất mong nhận được phản hồi về cách nó phù hợp với quy trình kỹ thuật prompt của bạn hoặc trong các pipeline CI—hãy liên hệ với tôi trên repo hoặc để lại một bình luận bên dưới.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào