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 (허용성 높고 상용 사용에 적합).
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트