knuddelsgmbh/jtokkit

JTokkit is a Java tokenizer library designed for use with OpenAI models.

JTokkit – Java 詞元化工具包

是什麼 – 一個純 Java 庫,實作了 OpenAI 模型所使用的相同詞元化方案(例如 cl100k_basep50k_base 等)。它讓 Java 應用程式能對文字進行精確的詞元計數或分割,產生 OpenAI API 所期望的完全一致的詞元,與 OpenAI 的 Python tiktoken 套件行為完全一致。

為何重要 – 在呼叫 GPT‑3.5、GPT‑4 或嵌入模型時,必須保持在詞元限制內。JTokkit 為基於 JVM 的服務提供了一種快速、零依賴的方式,無需呼叫 API 即可計算這些限制。

主要特性

  • 支援所有主要 OpenAI 編碼(r50k_basep50k_basep50k_editcl100k_baseo200k_base)。
  • 簡單的 API:建立一個 EncodingRegistry,透過名稱或模型取得 Encoding,然後呼叫 encode/decode
  • 線程安全的物件,可在整個應用中共享。
  • 無外部依賴;支援 Java 8+。
  • 經過基準測試,比類似 Java 詞元化工具快 2–3 倍。

取得方式

<!-- Maven -->
<dependency>
  <groupId>com.knuddels</groupId>
  <artifactId>jtokkit</artifactId>
  <version>1.1.0</version>
</dependency>
// Gradle
implementation 'com.knuddels:jtokkit:1.1.0'

快速使用範例

EncodingRegistry registry = Encodings.newDefaultEncodingRegistry();
Encoding enc = registry.getEncoding(EncodingType.CL100K_BASE);
IntArrayList tokens = enc.encode("Hello world!");   // → [15496, 995]
String back = enc.decode(tokens);                    // → "Hello world!"

// 取得與特定模型匹配的編碼器
Encoding modelEnc = registry.getEncodingForModel(ModelType.TEXT_EMBEDDING_ADA_002);

擴展方式 – 如果需要自訂 BPE 詞彙表,可以自行實作 Encoding 介面並註冊,或提供包含自訂正規表示式、詞元映射和特殊詞元映射的 GptBytePairEncodingParams,然後註冊到 EncodingRegistry 中。

文件與原始碼 – 完整的 Javadoc 掛載於 https://javadoc.io/doc/com.knuddels/jtokkit,簡明指南位於 https://jtokkit.knuddels.de/。

授權 – MIT(寬鬆,適合商業用途)。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案