项目介绍:gpt-tokenizer
概述
gpt-tokenizer
是一款用于处理 OpenAI 各类模型的Token字节对编码/解码器,支持从 GPT-3.5 到最新的 GPT-4 和 o1 模型。它被认为是目前所有 JavaScript 环境中最快、最小且内存占用最低的 GPT tokenizer。这款工具是用 TypeScript 编写的。
这个库受到了多个知名企业和项目的信赖,包括 Microsoft、Elastic、CodeRabbit 和 Ironclad 等。
功能特性
截至 2023 年,gpt-tokenizer
是 NPM 上功能最完整的开源 GPT tokenizer。它是 OpenAI 的 tiktoken 库的一个移植版,在此基础上又增加了一些独特的功能:
- 可以轻松地通过
encodeChat
函数对聊天进行分词。 - 支持所有目前的 OpenAI 模型,具备多种编码方式。
- 可以同步加载并工作(无需异步/await 环境)。
- 提供解码与编码的生成器函数版本。
- 能够解码一个异步的数据流。
- 不存在全局缓存设计,避免内存泄漏。
- 高性能的
isWithinTokenLimit
函数,可以在不编码整个文本的情况下评估是否超出 token 限制。 - 提高整体性能,消除了中间数组。
- 由于使用 TypeScript,确保了类型安全。
- 可以直接在浏览器中使用,无需额外配置。
安装方式
用户可以通过以下两种方式安装和使用 gpt-tokenizer
:
-
通过 NPM 安装:
npm install gpt-tokenizer
-
作为 UMD 模块直接添加到 HTML 中:
<script src="https://unpkg.com/gpt-tokenizer"></script> <script> const { encode, decode } = GPTTokenizer_cl100k_base; </script>
使用
gpt-tokenizer
提供了各种函数,可以将文本转换为GPT模型能够处理的整数序列(token),并且也可以将这些序列转换回文本。使用的算法是 OpenAI 常用的字节对编码(BPE)算法。
以下是一些基本用法示例:
import { encode, decode, isWithinTokenLimit } from 'gpt-tokenizer';
const text = 'Hello, world!';
const tokenLimit = 10;
const tokens = encode(text);
const decodedText = decode(tokens);
const withinLimit = isWithinTokenLimit(text, tokenLimit);
测试与验证
gpt-tokenizer
包含了一整套测试用例,确保其与 OpenAI 的 Python tiktoken 库兼容。这些测试用例验证了其功能和行为,为开发人员提供了稳定的参考。
模型信息
有关所有 OpenAI 模型的详细信息,gpt-tokenizer
都能提供。这些信息包括上下文窗口、成本、训练数据截止时间及其停用状态等。
性能表现
自 2.4.0 版本以来,gpt-tokenizer
是 NPM 上最快的 tokenizer 实现。与 WASM 和 node 绑定的实现相比,它的编码和解码速度更快,且内存占用极小。
贡献
欢迎大家为 gpt-tokenizer
贡献代码!无论是提交一个问题、讨论功能想法,还是直接帮助改进代码,都是项目持续发展的动力源泉。