A tiktoken-compatible byte-pair encoding.
Summary
Types
@type t() :: %Obscura.Tiktoken.Encoding{ decoder: %{required(non_neg_integer()) => binary()}, eot_token: non_neg_integer() | nil, explicit_n_vocab: non_neg_integer() | nil, max_token_value: non_neg_integer(), mergeable_ranks: %{required(binary()) => non_neg_integer()}, name: String.t(), pat_str: String.t(), pattern: Regex.t(), sorted_token_bytes: [binary()], special_token_values: MapSet.t(non_neg_integer()), special_tokens: %{required(String.t()) => non_neg_integer()}, special_tokens_decoder: %{required(non_neg_integer()) => binary()} }
Functions
@spec decode(t(), [non_neg_integer()], keyword()) :: {:ok, String.t()} | {:error, term()}
@spec decode!(t(), [non_neg_integer()], keyword()) :: String.t()
@spec decode_bytes(t(), [non_neg_integer()]) :: {:ok, binary()} | {:error, term()}
@spec decode_bytes!(t(), [non_neg_integer()]) :: binary()
@spec decode_single_token_bytes(t(), non_neg_integer()) :: {:ok, binary()} | {:error, term()}
@spec decode_tokens_bytes(t(), [non_neg_integer()]) :: {:ok, [binary()]} | {:error, term()}
@spec decode_with_offsets(t(), [non_neg_integer()]) :: {:ok, {String.t(), [non_neg_integer()]}} | {:error, term()}
@spec encode(t(), String.t(), keyword()) :: {:ok, [non_neg_integer()]} | {:error, term()}
@spec encode!(t(), String.t(), keyword()) :: [non_neg_integer()]
@spec encode_ordinary(t(), String.t()) :: {:ok, [non_neg_integer()]} | {:error, term()}
@spec encode_ordinary!(t(), String.t()) :: [non_neg_integer()]
@spec encode_single_piece(t(), String.t() | binary()) :: {:ok, [non_neg_integer()]} | {:error, term()}
@spec encode_single_token(t(), String.t() | binary()) :: {:ok, non_neg_integer()} | {:error, term()}
@spec n_vocab(t()) :: non_neg_integer()
@spec special_token?(t(), non_neg_integer()) :: boolean()