knuddelsgmbh/jtokkit
JTokkit is a Java tokenizer library designed for use with OpenAI models.
JTokkit – Java Tokenizer Kit
何であるか – OpenAIのモデルが使用する同じトークン化スキーム(例:cl100k_base、p50k_baseなど)を実装した純粋なJavaライブラリです。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(許容性が高く、商用利用に適しています)。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト