tiktoken-rsBibliothèque de rouille pour le texte de tokenisage avec des modèles OpenAI à l'aide de tiktoken.
Cette bibliothèque fournit un ensemble de bibliothèques de jetons prêtes à l'emploi pour travailler avec des modèles GPT, TikToken et OpenAI connexes. Les cas d'utilisation couvrent les jetons et le comptage des jetons dans les entrées de texte.
Cette bibliothèque est construite au-dessus de la bibliothèque tiktoken et comprend quelques fonctionnalités et améliorations supplémentaires pour faciliter l'utilisation avec le code de rouille.
Pour des exemples de travail complets pour toutes les fonctionnalités prises en charge, consultez le répertoire des exemples dans le référentiel.
cargo cargo add tiktoken-rsEnsuite, dans votre code de rouille, appelez l'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 ) ; Besoin d'activer la fonction async-openai dans votre fichier 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 prend en charge ces encodages utilisés par les modèles OpenAI:
| Nom de codage | Modèles Openai |
|---|---|
o200k_base | Modèles GPT-4O, modèles O1 |
cl100k_base | Modèles de chatppt, text-embedding-ada-002 |
p50k_base | Modèles de code, text-davinci-002 , text-davinci-003 |
p50k_edit | Utiliser pour les modèles d'édition comme text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (ou gpt2 ) | Des modèles GPT-3 comme davinci |
Voir les exemples du dépôt pour les cas d'utilisation. Pour plus de contexte sur les différents tokenzers, consultez le livre de cuisine Openai
Si vous rencontrez des bogues ou avez des suggestions d'améliorations, veuillez ouvrir un problème sur le référentiel.
Merci @spolu pour le code d'origine et les fichiers .tiktoken .
Ce projet est autorisé sous la licence du MIT.