knuddelsgmbh/jtokkit

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

JTokkit – Java Tokenizer Kit

何であるか – OpenAIのモデルが使用する同じトークン化スキーム(例:cl100k_basep50k_baseなど)を実装した純粋なJavaライブラリです。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(許容性が高く、商用利用に適しています)。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト