gpt-tokenizer API详解:encode、decode、isWithinTokenLimit等核心函数

gpt-tokenizer API详解:encode、decode、isWithinTokenLimit等核心函数

【免费下载链接】gpt-tokenizerThe fastest JavaScript BPE Tokenizer Encoder Decoder for OpenAI's GPT models (gpt-5, gpt-o*, gpt-4o, etc.). Port of OpenAI's tiktoken with additional features.项目地址: https://gitcode.com/gh_mirrors/gp/gpt-tokenizer

gpt-tokenizer是目前最快的JavaScript BPE Tokenizer编码器/解码器,专为OpenAI的GPT模型(如gpt-5、gpt-o*、gpt-4o等)设计。作为OpenAI tiktoken的移植版本,它不仅提供了完整的功能实现,还增加了许多实用特性,帮助开发者高效处理文本与token之间的转换。

为什么选择gpt-tokenizer?🚀

在深入了解API之前,让我们先看看gpt-tokenizer的核心优势。通过与其他主流tokenizer的性能对比,我们可以清晰地看到它在速度和资源占用方面的突出表现。

gpt-tokenizer与其他tokenizer的编码/解码速度对比,单位为微秒(μs)

从图表中可以看到,gpt-tokenizer v2.4.0在编码速度上以6.89μs领先于其他所有tokenizer,比第二名快约11%,比最慢的tiktoken v1.0.16快近9倍。在解码速度方面同样表现出色,仅需0.55μs就能完成解码操作。

除了速度优势,gpt-tokenizer在资源占用方面也有显著优势:

gpt-tokenizer与其他tokenizer的初始化时间和内存占用对比

gpt-tokenizer的初始化时间仅为43.74ms,内存占用为35.98MB,在所有对比的tokenizer中保持了较低的资源消耗,特别适合对性能要求较高的生产环境。

快速开始:安装与初始化

要开始使用gpt-tokenizer,首先需要安装该库。你可以通过以下命令克隆仓库并安装依赖:

git clone https://gitcode.com/gh_mirrors/gp/gpt-tokenizer cd gpt-tokenizer npm install

初始化一个tokenizer实例非常简单,你可以直接指定模型名称或编码类型:

import { getEncodingForModel } from 'gpt-tokenizer'; // 为特定模型创建tokenizer const tokenizer = getEncodingForModel('gpt-4o'); // 或者直接指定编码类型 import { getEncoding } from 'gpt-tokenizer'; const tokenizer = getEncoding('cl100k_base');

核心API详解

1. encode:文本转Token

encode方法是gpt-tokenizer的核心功能之一,它将输入文本转换为对应的token ID数组。

函数定义

encode(lineToEncode: string, encodeOptions?: EncodeOptions): number[]

参数说明

  • lineToEncode: 需要编码的文本字符串
  • encodeOptions: 编码选项,包含:
    • allowedSpecial: 允许的特殊token集合
    • disallowedSpecial: 禁止的特殊token集合

使用示例

const text = "Hello, world! This is gpt-tokenizer."; const tokens = tokenizer.encode(text); console.log(tokens); // 输出: [9906, 11, 1917, 0, 428, 374, 11094, 264, 19041, 13]

encode方法内部使用了高效的字节对编码(BPE)算法,通过src/BytePairEncodingCore.ts实现核心逻辑,确保了编码过程的快速和准确。

2. decode:Token转文本

encode相对应,decode方法将token ID数组转换回原始文本。

函数定义

decode(inputTokensToDecode: Iterable<number>): string

参数说明

  • inputTokensToDecode: 需要解码的token ID数组或可迭代对象

使用示例

const tokens = [9906, 11, 1917, 0, 428, 374, 11094, 264, 19041, 13]; const text = tokenizer.decode(tokens); console.log(text); // 输出: "Hello, world! This is gpt-tokenizer."

gpt-tokenizer还提供了流式解码的方法,包括decodeGeneratordecodeAsyncGenerator,适用于处理大型文本或实时数据流。

3. isWithinTokenLimit:检查Token数量是否超限

在使用GPT模型时,输入通常有token数量限制。isWithinTokenLimit方法可以快速检查输入文本是否在指定的token限制范围内。

函数定义

isWithinTokenLimit( input: string | Iterable<ChatMessage>, tokenLimit: number, encodeOptions?: EncodeOptions ): false | number

参数说明

  • input: 要检查的文本或聊天消息
  • tokenLimit: 最大允许的token数量
  • encodeOptions: 编码选项

返回值

  • 如果未超过限制,返回实际token数量
  • 如果超过限制,返回false

使用示例

const text = "这是一段需要检查长度的文本..."; const tokenLimit = 1000; const result = tokenizer.isWithinTokenLimit(text, tokenLimit); if (result === false) { console.log("文本超过token限制"); } else { console.log(`文本长度为${result}个token,在限制范围内`); }

这个方法特别适合在发送API请求前验证输入长度,避免因超限导致的请求失败。

4. 聊天消息处理:encodeChat

对于聊天应用,gpt-tokenizer提供了专门的encodeChat方法,用于编码聊天消息数组。

函数定义

encodeChat( chat: readonly ChatMessage[], model?: ModelName, encodeOptions?: EncodeOptions & EncodeChatOptions ): number[]

使用示例

const chatMessages = [ { role: "system", content: "你是一个 helpful 的助手。" }, { role: "user", content: "介绍一下gpt-tokenizer的主要功能。" } ]; const tokens = tokenizer.encodeChat(chatMessages); console.log(`聊天消息共${tokens.length}个token`);

gpt-tokenizer聊天界面展示,显示token数量和成本估算

高级功能

计数功能:countTokens

如果你只需要知道文本的token数量而不需要实际的token数组,可以使用countTokens方法,它比完整编码更高效:

const text = "计算这段文本的token数量"; const count = tokenizer.countTokens(text); console.log(`文本包含${count}个token`);

成本估算:estimateCost

对于需要预算管理的应用,estimateCost方法可以根据token数量估算API调用成本:

const tokens = tokenizer.encode("需要估算成本的文本"); const cost = tokenizer.estimateCost(tokens.length); console.log(`估算成本: $${cost.main.input.toFixed(6)}`);

总结

gpt-tokenizer提供了一套完整而高效的API,包括核心的encodedecodeisWithinTokenLimit等函数,满足了从文本到token的转换、长度检查等基本需求,同时还提供了聊天消息处理、成本估算等高级功能。

无论是构建聊天机器人、文本分析工具还是任何需要与GPT模型交互的应用,gpt-tokenizer都能提供快速、可靠的token处理能力。其优秀的性能表现和丰富的功能集,使其成为JavaScript生态中处理GPT模型token的首选库。

要了解更多详细信息,可以查阅项目的源代码和文档:

  • 核心实现:src/GptEncoding.ts
  • 模型定义:src/model/
  • 编码参数:src/encodingParams/

【免费下载链接】gpt-tokenizerThe fastest JavaScript BPE Tokenizer Encoder Decoder for OpenAI's GPT models (gpt-5, gpt-o*, gpt-4o, etc.). Port of OpenAI's tiktoken with additional features.项目地址: https://gitcode.com/gh_mirrors/gp/gpt-tokenizer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考