knuddelsgmbh/jtokkit

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

JTokkit – Java 토크나이저 키트

무엇인가요 – 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 (허용성 높고 상용 사용에 적합).

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트