tiktoken-rsBiblioteca Rust for Tokenizing Text com modelos OpenAI usando Tiktoken.
Esta biblioteca fornece um conjunto de bibliotecas de tokenizer prontas para trabalhar com modelos GPT, Tiktoken e OpenAI relacionados. Os casos de uso cobrem tokens tokenizadores e contando em entradas de texto.
Esta biblioteca é construída sobre a biblioteca tiktoken e inclui alguns recursos e aprimoramentos adicionais para facilitar o uso com o código de ferrugem.
Para exemplos de trabalho completos para todos os recursos suportados, consulte o diretório de exemplos no repositório.
cargo cargo add tiktoken-rsEntão, em seu código de ferrugem, ligue para a 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 ) ; Precisa ativar o recurso async-openai no seu arquivo 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 suporta essas codificações usadas pelos modelos Openai:
| Nome da codificação | 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 | Use para editar modelos como text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (ou gpt2 ) | Modelos GPT-3 como davinci |
Veja os exemplos no repositório para casos de uso. Para mais contexto nos tokenizadores diferentes, consulte o livro de receitas do Openai
Se você encontrar bugs ou tiver alguma sugestão de melhorias, abra um problema no repositório.
Obrigado @spolu pelo código original e arquivos .tiktoken .
Este projeto está licenciado sob a licença do MIT.