knuddelsgmbh/jtokkit
JTokkit is a Java tokenizer library designed for use with OpenAI models.
JTokkit – Java 詞元化工具包
是什麼 – 一個純 Java 庫,實作了 OpenAI 模型所使用的相同詞元化方案(例如 cl100k_base、p50k_base 等)。它讓 Java 應用程式能對文字進行精確的詞元計數或分割,產生 OpenAI API 所期望的完全一致的詞元,與 OpenAI 的 Python tiktoken 套件行為完全一致。
為何重要 – 在呼叫 GPT‑3.5、GPT‑4 或嵌入模型時,必須保持在詞元限制內。JTokkit 為基於 JVM 的服務提供了一種快速、零依賴的方式,無需呼叫 API 即可計算這些限制。
主要特性
- 支援所有主要 OpenAI 編碼(
r50k_base、p50k_base、p50k_edit、cl100k_base、o200k_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(寬鬆,適合商業用途)。
相關
- 專案
- 專案
- 專案
- 專案
- 專案