~/tools / File model dan templat obrolan / Hugging Face Chat Template Tester
Hugging Face Chat Template Tester — Render chat template Hugging Face dan lihat prompt persisnya
Tempel chat template Hugging Face (Jinja) atau seluruh tokenizer_config.json sebuah model, tambahkan messages dan tools, lalu lihat teks prompt persis yang dihasilkan apply_chat_template(..., tokenize=False) dari transformers. Alat ini menjalankan Jinja2 dengan pengaturan sandbox yang sama seperti transformers, sehingga teks, error, dan nomor barisnya sama seperti di Python. Tidak ada yang keluar dari browser Anda.
Tempel template Jinja (chat_template.jinja), atau seluruh tokenizer_config.json atau chat_template.json dari file model di Hugging Face.
Daftar JSON berisi pesan, sama dengan daftar yang Anda berikan ke apply_chat_template.
Daftar JSON berisi definisi tool (JSON Schema). Kosongkan jika tidak memakai tool.
Menambahkan awal giliran asisten di akhir, agar model menulis balasan (jika template mendukungnya).
Membiarkan pesan terakhir tetap terbuka agar model melanjutkannya (prefill). Tidak dapat dipakai bersama add_generation_prompt.
Nilai lain yang diberikan ke apply_chat_template sebagai argumen kata kunci, berupa objek JSON, seperti {"enable_thinking": false}. Variabel yang dibaca template tercantum di bawah keluaran.
Opsi lainnya
transformers memberikan token khusus milik tokenizer ke template. Kolom ini terisi otomatis saat Anda menempelkan tokenizer_config.json.
Untuk template yang mendukung documents (RAG): daftar JSON berisi objek seperti {"title": "…", "text": "…"}.
Waktu yang dikembalikan strftime_now(). Kosongkan untuk memakai waktu saat ini.
Teks prompt
<|im_start|>system
You are a helpful assistant.
# Tools
You can call these functions:
<tools>
{"type": "function", "function": {"name": "get_weather", "description": "Get the current weather in a city.", "parameters": {"type": "object", "properties": {"city": {"type": "string", "description": "City name"}}, "required": ["city"]}}}
</tools>
To call one, reply with JSON inside <tool_call></tool_call>.<|im_end|>
<|im_start|>user
What's the weather in Paris?<|im_end|>
<|im_start|>assistant
<tool_call>
{"name": "get_weather", "arguments": {"city": "Paris"}}
</tool_call><|im_end|>
<|im_start|>user
<tool_response>
{"temperature": 22}
</tool_response><|im_end|>
<|im_start|>assistant
Tentang template ini
- Variabel yang dibacanya
- Diatur oleh apply_chat_template: add_generation_prompt, messages, toolsToken khusus: tidak adaLainnya: tidak ada
- Memakai {% generation %}
- Tidak
Periksa di Python
Jalankan ini untuk membandingkan dengan transformers. Ganti MODEL_ID dengan model Anda, atau berikan template Anda dengan chat_template=.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("MODEL_ID")
messages = [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': "What's the weather in Paris?"},
{'role': 'assistant', 'content': '', 'tool_calls': [{'type': 'function', 'function': {'name': 'get_weather', 'arguments': {'city': 'Paris'}}}]},
{'role': 'tool', 'name': 'get_weather', 'content': '{"temperature": 22}'},
]
tools = [
{'type': 'function', 'function': {'name': 'get_weather', 'description': 'Get the current weather in a city.', 'parameters': {'type': 'object', 'properties': {'city': {'type': 'string', 'description': 'City name'}}, 'required': ['city']}}},
]
text = tokenizer.apply_chat_template(
messages,
tools=tools,
add_generation_prompt=True,
tokenize=False,
)
print(text)Keluarannya adalah teks sebelum tokenisasi. transformers kemudian melakukan tokenisasi dengan add_special_tokens=False, sehingga token khusus hanya muncul di tempat template menuliskannya.
Saat tools diberikan dan model punya template bernama tool_use, transformers memakai template itu. Anda juga dapat memilih template berdasarkan nama.
messages, tools, dan documents dibaca seperti modul json Python: bilangan bulat menjadi int dan angka dengan titik desimal menjadi float, yang dapat mengubah cara template mencetaknya.
Diperiksa pada 2026-11-09 terhadap transformers 5.22.2 dengan Jinja2 3.1.6 (Python 3.14). transformers: chat template · Kode sumber transformers
Semuanya berjalan di browser Anda. Apa pun yang Anda tempel tidak dikirim atau disimpan.
Sebagian besar model terbuka di Hugging Face menyertakan chat template: program Jinja kecil yang mengubah daftar pesan menjadi teks yang benar-benar dibaca model. Spasi yang hilang, token BOS yang ganda, atau generation prompt yang salah mengubah apa yang dilihat model, dan template sulit dibaca tanpa menjalankannya. Alat ini menjalankannya seperti transformers. Kami memindahkan Jinja2 3.1.6 ke JavaScript: lexer, parser, aturan tentang variabel mana yang terlihat di mana, constant folding, sandbox yang dipakai transformers, serta semua filter dan test bawaan, bersama perilaku Python sendiri untuk string, angka, pengurutan, dan pesan error. Di atasnya, alat ini mengikuti apply_chat_template di transformers 5.22.2: token khusus seperti bos_token, template tool_use saat tools diberikan, add_generation_prompt, continue_final_message, documents, reasoning_content, dan rentang {% generation %}. Kami merender chat template dari 39 model terbuka (Qwen, Llama, Mistral, Gemma, Phi, DeepSeek, gpt-oss, dan lainnya) dengan 15 jenis percakapan, dan seluruh 585 hasilnya cocok dengan transformers. Lebih dari 20,000 template uji lain juga cocok, termasuk error dan nomor baris, kecuali beberapa yang memakai filter random, yang hasilnya acak juga di Python.
Kapan dipakai
- Melihat prompt persis yang diterima model sebelum Anda melakukan fine-tuning atau menjalankannya: token BOS dan EOS, spasi, baris baru, dan generation prompt
- Menemukan saklar yang dibaca sebuah template, seperti enable_thinking, dan melihat apa yang diubahnya
- Men-debug chat template yang sedang Anda tulis, lengkap dengan error dan nomor baris, tools, documents, dan continue_final_message
Cara pakai
- Tempel sebuah chat template, atau seluruh tokenizer_config.json atau chat_template.json sebuah model, atau pilih salah satu contoh.
- Edit messages dan tools (daftar JSON yang sama dengan yang Anda berikan di Python), lalu atur add_generation_prompt dan opsi lainnya.
- Baca teks prompt dan variabel yang dipakai template, lalu salin kode Python untuk memeriksa input yang sama di transformers.
Tanya jawab
Apakah hasilnya sama dengan apply_chat_template?
Hasilnya sama dengan apply_chat_template(..., tokenize=False), yaitu teks sebelum tokenisasi. Token khusus, add_generation_prompt, continue_final_message, tools, dan documents ditangani seperti di transformers 5.22.2. Alat ini tidak mengubah teks menjadi token IDs.
Dari mana bos_token dan eos_token berasal?
Di Python, keduanya berasal dari tokenizer. Saat Anda menempelkan tokenizer_config.json, alat ini membacanya dari sana. Jika tidak, isi di bawah "Opsi lainnya".
Apa fungsi {% generation %}?
Beberapa template membungkus balasan asisten dalam {% generation %} … {% endgeneration %}. transformers memakai rentang ini untuk return_assistant_tokens_mask, misalnya untuk melatih hanya pada token asisten. Alat ini menyorotnya di keluaran.
Apakah vLLM, llama.cpp, atau server lain menghasilkan teks yang sama?
Perangkat lunak lain dapat merender template yang sama dengan mesin atau pengaturan yang berbeda, sehingga keluarannya bisa berbeda. Alat ini mengikuti transformers.
Mengapa variabel seperti enable_thinking dicantumkan di bawah Lainnya?
Template membacanya, tetapi apply_chat_template tidak mengaturnya. Berikan sebagai variabel tambahan (misalnya {"enable_thinking": false}) untuk mengubah keluaran, seperti Anda memberikan enable_thinking=False di Python.
Apakah template saya dikirim ke suatu tempat?
Tidak. Semuanya berjalan di browser Anda.