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