Packages

fnord

0.6.5

AI code archaeology

Current section

Files

Jump to
fnord lib ai tokenizer tokens_o200k_base.ex
Raw

lib/ai/tokenizer/tokens_o200k_base.ex

defmodule AI.Tokenizer.Tokens_o200k_base do
@moduledoc """
This module implements the o200k-base tokenizer model used by OpenAI's
`gpt-4o` models.
"""
@merges :erlang.binary_to_term(File.read!("data/tokens/o200k_base.merges"))
@vocab :erlang.binary_to_term(File.read!("data/tokens/o200k_base.vocab"))
@reverse_vocab :erlang.binary_to_term(File.read!("data/tokens/o200k_base.reverse_vocab"))
@special_tokens %{
"<|endoftext|>" => 199_999,
"<|endofprompt|>" => 200_018
}
# Source: https://github.com/openai/tiktoken/blob/main/tiktoken_ext/openai_public.py
@pattern ~r<
[^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]*[\p{Ll}\p{Lm}\p{Lo}\p{M}]+(?i:'s|'t|'re|'ve|'m|'ll|'d)?
| [^\r\n\p{L}\p{N}]?[\p{Lu}\p{Lt}\p{Lm}\p{Lo}\p{M}]+[\p{Ll}\p{Lm}\p{Lo}\p{M}]*(?i:'s|'t|'re|'ve|'m|'ll|'d)?
| \p{N}{1,3}
| \s?[^\s\p{L}\p{N}]+[\r\n/]*
| \s*[\r\n]+
| \s+(?!\S)
| \s+
>x
def get_merges(), do: @merges
def get_vocab(), do: @vocab
def get_reverse_vocab(), do: @reverse_vocab
def get_special_tokens(), do: @special_tokens
def get_pattern(), do: @pattern
end