Добро пожаловать в Jtokkit, библиотеку Java Tokenizer, предназначенную для использования с моделями OpenAI.
EncodingRegistry registry = Encodings . newDefaultEncodingRegistry ();
Encoding enc = registry . getEncoding ( EncodingType . CL100K_BASE );
assertEquals ( "hello world" , enc . decode ( enc . encode ( "hello world" )));
// Or get the tokenizer corresponding to a specific OpenAI model
enc = registry . getEncodingForModel ( ModelType . TEXT_EMBEDDING_ADA_002 );
Для быстрого начала работы см. В нашу документацию.
Jtokkit стремится стать быстрым и эффективным токенизатором, предназначенным для использования в задачах обработки естественного языка с использованием моделей OpenAI. Он предоставляет простой в использовании интерфейс для токенизации входного текста, например, для подсчета требуемых токенов при подготовке запросов к модели GPT-3.5. Эта библиотека выросла из -за необходимости иметь аналогичные возможности в экосистеме JVM, поскольку библиотека Tiktoken предоставляет для Python.
✅ Обнаружение кодировки и декодирования через r50k_base
, p50k_base
, p50k_edit
, cl100k_base
и o200k_base
✅ Простой в использовании API
✅ Легкая расширяемость для пользовательских алгоритмов кодирования
✅ нулевые зависимости
✅ поддерживает Java 8 и выше
✅ Быстрая и эффективная производительность
Jtokkit в 2-3 раза быстрее, чем сопоставимый токенизатор.
Для получения подробной информации о эталоне см. В справочнике.
Вы можете установить jtokkit, добавив следующую зависимость в свой проект Maven:
< dependency >
< groupId >com.knuddels</ groupId >
< artifactId >jtokkit</ artifactId >
< version >1.1.0</ version >
</ dependency >
Или альтернативно используя Gradle:
dependencies {
implementation ' com.knuddels:jtokkit:1.1.0 '
}
Чтобы использовать jtokkit, просто создайте новую EncodingRegistry
и используйте getEncoding
, чтобы получить кодирование, которое вы хотите использовать. Затем вы можете использовать методы encode
и decode
для кодирования и декодирования текста.
EncodingRegistry registry = Encodings . newDefaultEncodingRegistry ();
Encoding enc = registry . getEncoding ( EncodingType . CL100K_BASE );
IntArrayList encoded = enc . encode ( "This is a sample sentence." );
// encoded = [2028, 374, 264, 6205, 11914, 13]
String decoded = enc . decode ( encoded );
// decoded = "This is a sample sentence."
// Or get the tokenizer based on the model type
Encoding secondEnc = registry . getEncodingForModel ( ModelType . TEXT_EMBEDDING_ADA_002 );
// enc == secondEnc
Классы EncodingRegistry
и Encoding
являются потоковыми и могут быть свободно делиться между компонентами.
Вы можете продлить Jtokkit для поддержки пользовательских кодировки. Для этого у вас есть два варианта:
Encoding
и зарегистрируйте его с помощью EncodingRegistry
EncodingRegistry registry = Encodings . newDefaultEncodingRegistry ();
Encoding customEncoding = new CustomEncoding ();
registry . registerEncoding ( customEncoding );
EncodingRegistry registry = Encodings . newDefaultEncodingRegistry ();
GptBytePairEncodingParams params = new GptBytePairEncodingParams (
"custom-name" ,
Pattern . compile ( "some custom pattern" ),
encodingMap ,
specialTokenEncodingMap
);
registry . registerGptBytePairEncoding ( params );
После этого вы можете использовать пользовательские кодировки вместе с по умолчанию и получить доступ к ним с помощью registry.getEncoding("custom-name")
. Смотрите Javadoc для получения более подробной информации.
Jtokkit лицензирован по лицензии MIT. См. Файл лицензии для получения дополнительной информации.