значения ранее просмотренных токенов. Разные модели требуют разного форматирования входного текста (chat template): один и тот же диалог в JSON превращается в промпт с уникальными спецтокенами (например, ChatML для Qwen или формат Llama 3). Особый случай — reasoning-модели, у которых в промпт вшивается блок <think> для внутренних рассуждений, что может расходовать лимит генерации на «мысли», а не на финальный ответ. Chat template на Jinja связывает универсальный JSON диалога с конкретным форматированием модели; он же может отбрасывать часть истории, например, блоки reasoning из предыдущих ходов, что иногда приводит к неожиданному уменьшению числа входных токенов. После генерации ответ снова собирается в JSON с полем сообщения ассистента и статистикой. Все эти слои — от весов модели (SafeTensors) до шаблонов и конфигов — обычно инкапсулированы библиотеками и runtime, но понимание их необходимо для отладки проблем в агентных системах.