You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:25:14