Felipe97/llama-cpp-compiled
01.1k
1#pragma once2 3#include "llama.h"4 5#include <string>6#include <vector>7#include <memory>8 9// pre-tokenization types10enum llama_vocab_pre_type {11 LLAMA_VOCAB_PRE_TYPE_DEFAULT = 0,12 LLAMA_VOCAB_PRE_TYPE_LLAMA3 = 1,13 LLAMA_VOCAB_PRE_TYPE_DEEPSEEK_LLM = 2,14 LLAMA_VOCAB_PRE_TYPE_DEEPSEEK_CODER = 3,15 LLAMA_VOCAB_PRE_TYPE_FALCON = 4,16 LLAMA_VOCAB_PRE_TYPE_MPT = 5,17 LLAMA_VOCAB_PRE_TYPE_STARCODER = 6,18 LLAMA_VOCAB_PRE_TYPE_GPT2 = 7,19 LLAMA_VOCAB_PRE_TYPE_REFACT = 8,20 LLAMA_VOCAB_PRE_TYPE_COMMAND_R = 9,21 LLAMA_VOCAB_PRE_TYPE_STABLELM2 = 10,22 LLAMA_VOCAB_PRE_TYPE_QWEN2 = 11,23 LLAMA_VOCAB_PRE_TYPE_OLMO = 12,24 LLAMA_VOCAB_PRE_TYPE_DBRX = 13,25 LLAMA_VOCAB_PRE_TYPE_SMAUG = 14,26 LLAMA_VOCAB_PRE_TYPE_PORO = 15,27 LLAMA_VOCAB_PRE_TYPE_CHATGLM3 = 16,28 LLAMA_VOCAB_PRE_TYPE_CHATGLM4 = 17,29 LLAMA_VOCAB_PRE_TYPE_VIKING = 18,30 LLAMA_VOCAB_PRE_TYPE_JAIS = 19,31 LLAMA_VOCAB_PRE_TYPE_TEKKEN = 20,32 LLAMA_VOCAB_PRE_TYPE_SMOLLM = 21,33 LLAMA_VOCAB_PRE_TYPE_CODESHELL = 22,34 LLAMA_VOCAB_PRE_TYPE_BLOOM = 23,35 LLAMA_VOCAB_PRE_TYPE_GPT3_FINNISH = 24,36 LLAMA_VOCAB_PRE_TYPE_EXAONE = 25,37 LLAMA_VOCAB_PRE_TYPE_CHAMELEON = 26,38 LLAMA_VOCAB_PRE_TYPE_MINERVA = 27,39 LLAMA_VOCAB_PRE_TYPE_DEEPSEEK3_LLM = 28,40 LLAMA_VOCAB_PRE_TYPE_GPT4O = 29,41 LLAMA_VOCAB_PRE_TYPE_SUPERBPE = 30,42 LLAMA_VOCAB_PRE_TYPE_TRILLION = 31,43 LLAMA_VOCAB_PRE_TYPE_BAILINGMOE = 32,44 LLAMA_VOCAB_PRE_TYPE_LLAMA4 = 33,45 LLAMA_VOCAB_PRE_TYPE_PIXTRAL = 34,46 LLAMA_VOCAB_PRE_TYPE_SEED_CODER = 35,47 LLAMA_VOCAB_PRE_TYPE_HUNYUAN = 36,48 LLAMA_VOCAB_PRE_TYPE_KIMI_K2 = 37,49 LLAMA_VOCAB_PRE_TYPE_HUNYUAN_DENSE = 38,50 LLAMA_VOCAB_PRE_TYPE_GROK_2 = 39,51 LLAMA_VOCAB_PRE_TYPE_GRANITE_DOCLING = 40,52 LLAMA_VOCAB_PRE_TYPE_MINIMAX_M2 = 41,53 LLAMA_VOCAB_PRE_TYPE_AFMOE = 42,54 LLAMA_VOCAB_PRE_TYPE_SOLAR_OPEN = 43,55 LLAMA_VOCAB_PRE_TYPE_YOUTU = 44,56 LLAMA_VOCAB_PRE_TYPE_EXAONE_MOE = 45,57 LLAMA_VOCAB_PRE_TYPE_QWEN35 = 46,58 LLAMA_VOCAB_PRE_TYPE_TINY_AYA = 47,59 LLAMA_VOCAB_PRE_TYPE_JOYAI_LLM = 48,60 LLAMA_VOCAB_PRE_TYPE_JAIS2 = 49,61 LLAMA_VOCAB_PRE_TYPE_GEMMA4 = 50,62 LLAMA_VOCAB_PRE_TYPE_SARVAM_MOE = 51,63 LLAMA_VOCAB_PRE_TYPE_MINICPM5 = 52,64 LLAMA_VOCAB_PRE_TYPE_WHITESPACE = 53,65 LLAMA_VOCAB_PRE_TYPE_GRANITE_EMB_MULTI = 54,66 LLAMA_VOCAB_PRE_TYPE_MELLUM2 = 55,67 LLAMA_VOCAB_PRE_TYPE_LAGUNA = 56,68 LLAMA_VOCAB_PRE_TYPE_HY_V4 = 57,69 LLAMA_VOCAB_PRE_TYPE_SPARK2_5 = 58,70 LLAMA_VOCAB_PRE_TYPE_UFAKZEKA = 59,71};72 73struct LLM_KV;74struct llama_model_loader;75 76struct llama_vocab {77 struct token_data {78 std::string text;79 float score;80 llama_token_attr attr;81 };82 83 struct normalizer_options {84 bool lowercase = true;85 bool strip_accents = true;86 // TODO: clean_text, handle_chinese_chars87 };88 89 llama_vocab();90 ~llama_vocab();91 92 void load(llama_model_loader & ml, const LLM_KV & kv);93 94 std::string get_tokenizer_model() const;95 std::string get_tokenizer_pre() const;96 97 enum llama_vocab_type get_type() const;98 enum llama_vocab_pre_type get_pre_type() const;99 100 uint32_t n_tokens() const;101 uint32_t n_token_types() const;102 103 std::string type_name() const;104 105 bool is_normal (llama_token id) const;106 bool is_unknown (llama_token id) const;107 bool is_control (llama_token id) const;108 bool is_byte (llama_token id) const;109 bool is_user_defined(llama_token id) const;110 bool is_unused (llama_token id) const;111 bool is_eog (llama_token id) const;112 113 uint8_t token_to_byte(llama_token id) const;114 llama_token byte_to_token(uint8_t ch) const;115 116 llama_token text_to_token(const std::string & text) const;117 118 const token_data & get_token_data(llama_token id) const;119 120 const char * token_get_text (llama_token id) const;121 float token_get_score(llama_token id) const;122 llama_token_attr token_get_attr (llama_token id) const;123 124 llama_token token_bos() const;125 llama_token token_eos() const;126 llama_token token_eot() const;127 llama_token token_eom() const;128 llama_token token_unk() const;129 llama_token token_sep() const;130 llama_token token_nl () const;131 llama_token token_pad() const;132 llama_token token_mask() const;133 134 llama_token token_prefix() const;135 llama_token token_middle() const;136 llama_token token_suffix() const;137 138 llama_token token_fim_pre() const;139 llama_token token_fim_suf() const;140 llama_token token_fim_mid() const;141 llama_token token_fim_pad() const;142 llama_token token_fim_rep() const;143 llama_token token_fim_sep() const;144 145 bool get_add_space_prefix () const;146 bool get_add_bos () const;147 bool get_add_eos () const;148 bool get_add_sep () const;149 bool get_ignore_merges () const;150 bool get_clean_spaces () const;151 bool get_remove_extra_whitespaces () const;152 bool get_escape_whitespaces () const;153 bool get_treat_whitespace_as_suffix() const;154 const normalizer_options & get_normalizer_opts() const;155 156 const std::vector<llama_token> & get_suppress_tokens() const;157 158 int max_token_len() const;159 160 int find_bpe_rank(const std::string & token_left, const std::string & token_right) const;161 std::vector<std::string> get_bpe_merges() const;162 163 std::vector<char> get_precompiled_charsmap() const;164 165 int32_t tokenize(166 const char * text,167 int32_t text_len,168 llama_token * tokens,169 int32_t n_tokens_max,170 bool add_special,171 bool parse_special) const;172 173 std::vector<llama_token> tokenize(174 const std::string & raw_text,175 bool add_special,176 bool parse_special = false) const;177 178 // does not write null-terminator to buf179 int32_t token_to_piece(180 llama_token token,181 char * buf,182 int32_t length,183 int32_t lstrip,184 bool special) const;185 186 // use cached data187 const std::string & token_to_piece(llama_token token) const;188 189 int32_t detokenize(190 const llama_token * tokens,191 int32_t n_tokens,192 char * text,193 int32_t text_len_max,194 bool remove_special,195 bool unparse_special) const;196 197 std::string detokenize(198 const std::vector<llama_token> & tokens,199 bool special) const;200 201 void print_info() const;202 203private:204 struct impl;205 std::unique_ptr<impl> pimpl;206};207 