| 1 | #pragma once |
| 2 | |
| 3 | #include <string> |
| 4 | #include <vector> |
| 5 | #include <cstdint> |
| 6 | |
| 7 | enum llm_chat_template { |
| 8 | LLM_CHAT_TEMPLATE_CHATML, |
| 9 | LLM_CHAT_TEMPLATE_LLAMA_2, |
| 10 | LLM_CHAT_TEMPLATE_LLAMA_2_SYS, |
| 11 | LLM_CHAT_TEMPLATE_LLAMA_2_SYS_BOS, |
| 12 | LLM_CHAT_TEMPLATE_LLAMA_2_SYS_STRIP, |
| 13 | LLM_CHAT_TEMPLATE_MISTRAL_V1, |
| 14 | LLM_CHAT_TEMPLATE_MISTRAL_V3, |
| 15 | LLM_CHAT_TEMPLATE_MISTRAL_V3_TEKKEN, |
| 16 | LLM_CHAT_TEMPLATE_MISTRAL_V7, |
| 17 | LLM_CHAT_TEMPLATE_MISTRAL_V7_TEKKEN, |
| 18 | LLM_CHAT_TEMPLATE_PHI_3, |
| 19 | LLM_CHAT_TEMPLATE_PHI_4, |
| 20 | LLM_CHAT_TEMPLATE_FALCON_3, |
| 21 | LLM_CHAT_TEMPLATE_ZEPHYR, |
| 22 | LLM_CHAT_TEMPLATE_MONARCH, |
| 23 | LLM_CHAT_TEMPLATE_GEMMA, |
| 24 | LLM_CHAT_TEMPLATE_ORION, |
| 25 | LLM_CHAT_TEMPLATE_OPENCHAT, |
| 26 | LLM_CHAT_TEMPLATE_VICUNA, |
| 27 | LLM_CHAT_TEMPLATE_VICUNA_ORCA, |
| 28 | LLM_CHAT_TEMPLATE_DEEPSEEK, |
| 29 | LLM_CHAT_TEMPLATE_DEEPSEEK_2, |
| 30 | LLM_CHAT_TEMPLATE_DEEPSEEK_3, |
| 31 | LLM_CHAT_TEMPLATE_COMMAND_R, |
| 32 | LLM_CHAT_TEMPLATE_LLAMA_3, |
| 33 | LLM_CHAT_TEMPLATE_CHATGLM_3, |
| 34 | LLM_CHAT_TEMPLATE_CHATGLM_4, |
| 35 | LLM_CHAT_TEMPLATE_GLMEDGE, |
| 36 | LLM_CHAT_TEMPLATE_MINICPM, |
| 37 | LLM_CHAT_TEMPLATE_EXAONE_3, |
| 38 | LLM_CHAT_TEMPLATE_EXAONE_4, |
| 39 | LLM_CHAT_TEMPLATE_RWKV_WORLD, |
| 40 | LLM_CHAT_TEMPLATE_GRANITE, |
| 41 | LLM_CHAT_TEMPLATE_GIGACHAT, |
| 42 | LLM_CHAT_TEMPLATE_MEGREZ, |
| 43 | LLM_CHAT_TEMPLATE_YANDEX, |
| 44 | LLM_CHAT_TEMPLATE_BAILING, |
| 45 | LLM_CHAT_TEMPLATE_BAILING_THINK, |
| 46 | LLM_CHAT_TEMPLATE_BAILING2, |
| 47 | LLM_CHAT_TEMPLATE_LLAMA4, |
| 48 | LLM_CHAT_TEMPLATE_SMOLVLM, |
| 49 | LLM_CHAT_TEMPLATE_DOTS1, |
| 50 | LLM_CHAT_TEMPLATE_HUNYUAN_MOE, |
| 51 | LLM_CHAT_TEMPLATE_OPENAI_MOE, |
| 52 | LLM_CHAT_TEMPLATE_HUNYUAN_DENSE, |
| 53 | LLM_CHAT_TEMPLATE_KIMI_K2, |
| 54 | LLM_CHAT_TEMPLATE_SEED_OSS, |
| 55 | LLM_CHAT_TEMPLATE_GROK_2, |
| 56 | LLM_CHAT_TEMPLATE_PANGU_EMBED, |
| 57 | LLM_CHAT_TEMPLATE_UNKNOWN, |
| 58 | }; |
| 59 | |
| 60 | struct llama_chat_message; |
| 61 | |
| 62 | llm_chat_template llm_chat_template_from_str(const std::string & name); |
| 63 | |
| 64 | llm_chat_template llm_chat_detect_template(const std::string & tmpl); |
| 65 | |
| 66 | int32_t llm_chat_apply_template( |
| 67 | llm_chat_template tmpl, |
| 68 | const std::vector<const llama_chat_message *> & chat, |
| 69 | std::string & dest, bool add_ass); |
| 70 | |