求cl100k_base分词器的JavaScript实现,解决令牌超限问题
解决OpenAI Embeddings API的令牌长度限制问题
首先安装OpenAI官方的
tiktoken库,它实现了cl100k_base分词器,能准确处理令牌编码和解码:npm install tiktoken编写代码实现令牌截断逻辑:
import { get_encoding } from 'tiktoken'; // 初始化cl100k_base分词器 const encoding = get_encoding('cl100k_base'); // 待处理的长文本 const rawText = "你的目标长文本内容"; // 将文本编码为令牌数组 const tokenArray = encoding.encode(rawText); // 截断令牌数组至8192的上限 const truncatedTokens = tokenArray.slice(0, 8192); // 将截断后的令牌解码回字符串 const processedText = encoding.decode(truncatedTokens); // 调用Embeddings API时传入processedText即可 // 示例: // const response = await openai.embeddings.create({ // model: "text-embedding-3-small", // input: processedText // }); // 释放编码资源,避免内存泄漏 encoding.free();关键说明:
- 令牌计数精准:
tiktoken和API使用的分词逻辑完全一致,不会出现本地计算令牌数和API端不符的情况。 - 避免字符串切片的问题:直接操作令牌数组截断,不会破坏字符完整性或语义单元,解码后文本正常可读。
- 轻量高效:整个过程仅涉及编码、切片、解码三个步骤,性能开销极低。
- 令牌计数精准:
内容的提问来源于stack exchange,提问作者Daniel Patrick
相关产品推荐
相关产品推荐

