tiktoken-rsBiblioteca de óxido para texto de tokenización con modelos OpenAI utilizando Tiktoken.
Esta biblioteca proporciona un conjunto de bibliotecas de tokenizador preparadas para trabajar con GPT, Tiktoken y Operai relacionados. Los casos de uso cubren tokenizing y contando tokens en las entradas de texto.
Esta biblioteca está construida en la parte superior de la biblioteca tiktoken e incluye algunas características y mejoras adicionales para facilitar el uso con el código de óxido.
Para ver ejemplos de trabajo completos para todas las características compatibles, consulte el directorio de ejemplos en el repositorio.
cargo cargo add tiktoken-rsLuego, en su código de óxido, llame a la 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 ) ; Necesita habilitar la función async-openai en su archivo 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 admite estas codificaciones utilizadas por los modelos Operai:
| Nombre de codificación | Modelos OpenAI |
|---|---|
o200k_base | Modelos GPT-4O, modelos O1 |
cl100k_base | Modelos ChatGPT, text-embedding-ada-002 |
p50k_base | Modelos de código, text-davinci-002 , text-davinci-003 |
p50k_edit | Usar para editar modelos como text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (o gpt2 ) | Modelos GPT-3 como davinci |
Vea los ejemplos en el repositorio para los casos de uso. Para obtener más contexto sobre los diferentes tokenizers, consulte el libro de cocina de Operai
Si encuentra algún error o tiene alguna sugerencia de mejoras, abra un problema en el repositorio.
Gracias @spolu por el código original y los archivos .tiktoken .
Este proyecto tiene licencia bajo la licencia MIT.