tiktoken-rsБиблиотека ржавчины для ориентирования текста с моделями OpenAI с использованием Tiktoken.
Эта библиотека предоставляет набор готовых библиотек токенизаторов для работы с GPT, Tiktoken и связанными с ней моделями Openai. Варианты использования охватывают токены токенов с токенами и подсчета в текстовых входах.
Эта библиотека построена на вершине библиотеки tiktoken и включает в себя некоторые дополнительные функции и улучшения для простоты использования с кодом Rust.
Для полных рабочих примеров для всех поддерживаемых функций см. Справочник примеров в репозитории.
cargo cargo add tiktoken-rsЗатем в коде ржавчины позвоните в API
use tiktoken_rs :: o200k_base ;
let bpe = o200k_base ( ) . unwrap ( ) ;
let tokens = bpe . encode_with_special_tokens (
"This is a sentence with spaces"
) ;
println ! ( "Token count: {}" , tokens.len ( ) ) ; use tiktoken_rs :: { get_chat_completion_max_tokens , ChatCompletionRequestMessage } ;
let messages = vec ! [
ChatCompletionRequestMessage {
content: Some ( "You are a helpful assistant that only speaks French." .to_string ( ) ) ,
role: "system" .to_string ( ) ,
name: None ,
function_call: None ,
} ,
ChatCompletionRequestMessage {
content: Some ( "Hello, how are you?" .to_string ( ) ) ,
role: "user" .to_string ( ) ,
name: None ,
function_call: None ,
} ,
ChatCompletionRequestMessage {
content: Some ( "Parlez-vous francais?" .to_string ( ) ) ,
role: "system" .to_string ( ) ,
name: None ,
function_call: None ,
} ,
] ;
let max_tokens = get_chat_completion_max_tokens ( "o1-mini" , & messages ) . unwrap ( ) ;
println ! ( "max_tokens: {}" , max_tokens ) ; Необходимо включить функцию async-openai в вашем файле Cargo.toml .
use tiktoken_rs :: async_openai :: get_chat_completion_max_tokens ;
use async_openai :: types :: { ChatCompletionRequestMessage , Role } ;
let messages = vec ! [
ChatCompletionRequestMessage {
content: Some ( "You are a helpful assistant that only speaks French." .to_string ( ) ) ,
role: Role :: System ,
name: None ,
function_call: None ,
} ,
ChatCompletionRequestMessage {
content: Some ( "Hello, how are you?" .to_string ( ) ) ,
role: Role :: User ,
name: None ,
function_call: None ,
} ,
ChatCompletionRequestMessage {
content: Some ( "Parlez-vous francais?" .to_string ( ) ) ,
role: Role :: System ,
name: None ,
function_call: None ,
} ,
] ;
let max_tokens = get_chat_completion_max_tokens ( "o1-mini" , & messages ) . unwrap ( ) ;
println ! ( "max_tokens: {}" , max_tokens ) ; tiktoken поддерживает эти кодирования, используемые моделями Openai:
| Кодирование имени | Openai модели |
|---|---|
o200k_base | Модели GPT-4O, модели O1 |
cl100k_base | Модели CHATGPT, text-embedding-ada-002 |
p50k_base | Кодовые модели, text-davinci-002 , text-davinci-003 |
p50k_edit | Использовать для редактирования моделей, таких как text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (или gpt2 ) | Модели GPT-3, такие как davinci |
См. Примеры в репо для вариантов использования. Для получения дополнительного контекста на разных токенизаторах см. Поваренная книга Openai
Если вы сталкиваетесь с какими -либо ошибками или у вас есть какие -либо предложения для улучшений, откройте проблему в репозитории.
Спасибо @spolu за исходный код и .tiktoken файлы.
Этот проект лицензирован по лицензии MIT.