from tokenizer import ( build_xonelm_tokenizer, MultiTurnConversationFormatter, SpecialTokenConfig, ) def run_tokenizer_demo(): sample_corpus = [ "Once upon a time, Lily found a golden key in the garden.", "Timmy and his dog Max played with a red ball.", "def solve_quadratic(a, b, c): return (-b + (b**2 - 4*a*c)**0.5) / (2*a)", "\\int_{0}^{\\infty} e^{-x^2} dx = \\frac{\\sqrt{\\pi}}{2}", "The system latency is <= 10ms with async/await workers.", ] tokenizer = build_xonelm_tokenizer(corpus=sample_corpus, vocab_size=1000) print("Tokenizer Vocab Size:", len(tokenizer)) text_to_encode = "Lily solved \\alpha + \\beta == 42 async await." encoded = tokenizer.encode(text_to_encode) token_ids = encoded.ids if hasattr(encoded, "ids") else encoded["input_ids"] decoded = tokenizer.decode(token_ids) print("Single Text Tokenization") print("Input Text :", text_to_encode) print("Token IDs :", token_ids) print("Decoded :", decoded) conversation = [ {"role": "system", "content": "You are a helpful and wise AI assistant."}, {"role": "user", "content": "Can you explain how it's work?"}, {"role": "assistant", "content": "No! I can't. hehe"}, ] cfg = SpecialTokenConfig( pad_token_id=0, bos_token_id=1, eos_token_id=2, unk_token_id=3, eod_token_id=4, ) formatter = MultiTurnConversationFormatter(tokenizer, cfg) formatted = formatter.format_conversation(conversation) print("Multi-Turn ChatML Formatting") print("Input IDs Length :", len(formatted["input_ids"])) print("Labels Length :", len(formatted["labels"])) print("Formatted Text :\n" + tokenizer.decode(formatted["input_ids"])) if __name__ == "__main__": run_tokenizer_demo()